文档库 最新最全的文档下载
当前位置:文档库 › [8] 第五次上机作业

[8] 第五次上机作业

第五次上机作业 数组
5.1 求平均值
程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0<repeat<10),做repeat 次下列运算:
输入一个正整数n (1<n<=10),再输入n 个整数,输出平均值(保留2 位小数)。
例:括号内是说明
输入
2 (repeat=2)
3 1 2 -6
5 12 2 5 4 0
输出
aver=-1.00
aver=4.60
【5.1】#include <stdio.h>
void main()
{
int ri,repeat;
int i,n,sum;
float aver;
int a[10];
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++)
{
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
sum=0;
for(i=0;i<n;i++)
sum+=a[i];
aver=sum*1.0/n;
printf("aver=%.2f\n",aver);
}
}
5.2 求最大值及其下标
程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0<repeat<10),做repeat 次下列运算:
输入一个正整数n (1<n<=10),再输入n 个整数,输出最大值极其下标(设最大值惟一,下
标从0 开始)。
例:括号内是说明
输入
3 (repeat=3)
3 1 6 4
3 10 8 1
5 1 2 5 4 0
输出
max=6,index=1 (最大值6 的下标是1)
max=10,index=0 (最大值10 的下标是0)
max=5,index=2 (最大值5 的下标是2)
【5.2】#include <stdio.h>
void main()
{
int ri,repeat;
int i,index,n;
int a[10];
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++)
{
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
index=0;
for(i=1;i<n;i++)
if(a[index]<a[i]) index=i;
printf("max=%d,index=%d\n",a[index],index);
}
}
5.3 逆序输出
程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0<repeat<10),做repeat 次下列运算:
输入一个正整数n (1<n<=10),再输入n 个整数,按逆序输出这些数。
例:括号内是说明
输入
2 (repeat=2)
4 10 8 1 2
5 1 2 5 4 0
输出
2 1 8 10
0 4 5 2 1
【5.3】#include <stdio.h>
void main()
{
int ri,repeat;
int i,n,temp;
int a[10];
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++)
{
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n/2;i++)
{
temp=a[i];
a[i]=a[n-1-i];
a[n-1-i]=temp;
}
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n");
}
}
5.4 交换最小值和最大值
程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0<repeat<10),做repeat 次下列运算:
输入一个正整数n (1<n<=10),再输入n 个整数,将最小值与第一个数交换,最大值与最后
一个数交换,然后输出交换后的n 个数。
例:括号内是说明
输入
3 (repeat=3)
5 4 3 5 1 2
4 1 5 6 7
5 5 4 3 2 1
输出
1 3 2 4 5
1 5 6 7
1 4 3 2 5
【5.4】#include <

stdio.h>
int main()
{
int ri,repeat;
int i,index,n,t;
int a[10];
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++)
{
scanf("%d",&n);

for(i=0;i<n;i++)
scanf("%d",&a[i]);
index=0;

for(i=1;i<n;i++)
if(a[i]<a[index]) index=i;
t=a[0];
a[0]=a[index];
a[index]=t;
index=n-1;
for(i=0;i<n-1;i++)
if(a[i]>a[index]) index=i;
t=a[n-1];
a[n-1]=a[index];
a[index]=t;
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n");
}
}
5.5 排序
程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0<repeat<10),做repeat 次下列运算:
输入一个正整数n (1<n<=10),再输入n 个整数,将它们从大到小排序后输出。。
例:括号内是说明
输入
3 (repeat=3)
4 5 1 7 6
3 1 2 3
5 5 4 3 2 1
输出
7 6 5 1
3 2 1
5 4 3 2 1
【5.5】#include <stdio.h>
void main()
{
int ri,repeat;
int i,index,k,n,temp;
int a[10];
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++)
{
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<9;i++)
for(k=0;k<9-i;k++)
if(a[k]<a[k+1])
{
temp=a[k];
a[k]=a[k+1];
a[k+1]=temp;
}
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n");
}
}
5.6 矩阵运算
程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0<repeat<10),做repeat 次下列运算:
读入 1 个正整数 n(1≤n≤6), 再读入 n 阶方阵 a , 计算该矩阵除副对角线、最后一列和
最后一行以外的所有元素之和.(副对角线为从矩阵的右上角至左下角的连线)
例:括号内是说明
输入:
1 (repeat=1)
4 (n=4)
2 3 4 1
5 6 1 1
7 1 8 1
1 1 1 1
sum=35 (2+3+4+5+6+7+8=35)
【5.6】#include <stdio.h>
void main()
{
int ri,repeat;
int a[6][6],i,j,n,sum;
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++)
{
scanf("%d",&n);
for (i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
sum=0;
for (i=0;i<n;i++)
for(j=0;j<n;j++)
sum+=a[i][j];
for(i=1;i<n;i++)
sum-=a[i][n-1];
for(j=1;j<n;j++)
sum-=a[n-1][j];
for(i=0;i<n;i++)
sum-=a[i][n-i-1];
sum+=a[n-1][n-1];
printf("sum=%d\n",sum);
}
}
【5.6】#include <stdio.h>
void main()
{
int ri,repeat;
int a[6][6],i,j,n,sum;
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++)
{
scanf("%d",&n);
for (i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
sum=0;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
if(i+j!=n-1&&j!=n-1&&i!=n-1)
sum+=a[i][j];
}
printf("sum=%d\n",sum);
}
}
5.7 加法口诀表
程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0<repeat<10),做rep

eat 次下列运算:
输入 1 个正整数 n(1≤n≤10), 输出一张 20 以内的加法口诀表. 加数与被加数都不大于
n, 分列第一行和第一列.(将加数、被加数、和放入一个二维数组中, 再输出该数组)
例:括号内是说明
输入:
1 (repeat=1)
3 (n=3)
输出:
+ 1 2 3
1 2
2 3 4
3 4 5 6
【5.7】#include <stdio.h>
void main()
{
int ri,repeat;
int i,j,n
,a[10][10];
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++)
{
scanf("%d",&n);

for(i=1;i<n+1;i++)
a[0][i]=i;
for(j=1;j<n+1;j++)
a[j][0]=j;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
a[i][j]=a[0][i]+a[j][0];
for(i=0;i<=n;i++)
{
for(j=0;j<=n;j++)
if(i==0&&j==0) printf("%-4c",'+');
else if(i==0||j<=i) printf("%-4d",a[i][j]);
printf("\n");
}
}
}
5.8 判断上三角矩阵
程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0<repeat<10),做repeat 次下列运算:
输入1 个正整数 n (1≤n≤6)和n 阶方阵a 中的元素,如果a 是上三角矩阵, 输出"YES", 否
则, 输出"NO"。(上三角矩阵,即主对角线以下的元素都为0, 主对角线为从矩阵的左上角至右下角的连线)
例:括号内是说明
输入:
2 (repeat=2)
3 1 2 3 0 4 5 0 0 6 (n=3)
2 1 0 -8 2 (n=2)
输出:
YES
NO
【5.8】#include <stdio.h>
#include <math.h>
int main()
{
int ri,repeat;
int a[6][6],flag,i,j,n;
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++)
{
scanf("%d",&n);
for (i=0;i<n;i++)
for (j=0;j<n;j++)
scanf("%d",&a[i][j]);
flag=1;

for (i=0;i<n;i++)
for (j=0;j<i;j++)
if(a[i][j]!=0) flag=0;
if(flag) printf("YES\n");
else printf("NO\n");
}
}
5.9 求矩阵每行元素之和
程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0<repeat<10),做repeat 次下列运算:
输入2 个正整数 m 和 n (1≤m, n≤6),然后输入该m 行 n 列矩阵a 中的元素,分别求
出各行元素之和, 并存入一维数组row 中, 再输出row.
例:括号内是说明
输入:
1 (repeat=1)
3 2 (m=3, n=2)
6 3
1 -8
3 12
输出:
sum of row 0 is 9
sum of row 1 is -7
sum of row 2 is 15
【5.9】#include <stdio.h>
#include <math.h>
void main()
{
int ri,repeat;
int flag,i,j,m,n,sum;
int a[6][6], row[6];
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++)
{
scanf("%d%d",&m,&n);
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
for(i=0;i<m;i++)
{
row[i]=0;
for(j=0;j<n;j++)
row[i]+=a[i][j];
}
for(i=0;i<m;i++)
printf("sum of row %d is %d\n",i,row[i]);
}
}
5.10 找鞍点
程序填空,不要改变与输入输出有关的语

句。
输入一个正整数repeat (0<repeat<10),做repeat 次下列运算:
输入 1 个正整数 n(1≤n≤6)和n 阶方阵a 中的元素,如果找到a 的鞍点(鞍点的元素值
在该行上最大, 在该列上最小), 就输出它的下标, 否则,输出"NO"(设a 最多有1 个鞍点)。
例:括号内是说明
输入:
2 (repeat=2)
4 1 7 4 1 4 8 3 6 1 6 1 2 0 7 8 9 (n=4)
2 1 7 4 1 (n=2)
输出:
a[2][1]=6
NO
【5.10】#include <stdio.h>
void main()
{
int ri,repeat;
int flag,i,j,k,row,col,n,a[6][6];
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++)
{
scanf("%d",&n);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&
a[i][j]);
for(i=0;i<n;i++)
{
flag=1;
col=0;
for(j=0;j<n;j++)
if(a[i][col]<a[i][j]) col=j;
for(k=0;k<n;k++)
if(a[i][col]>a[k][col])
{
flag=0;
break;
}
if(flag)
{
row=i;
break;
}
}
if(flag)
printf("a[%d][%d]=%d\n",row,col,a[row][col]);
else
printf("NO\n");
}
}


相关文档
相关文档 最新文档