21.一个学习小组有6个人,每个人有3门课(数学、语文和英语)的考试成绩,如表所示。求每门课的平均分和每个人的平均分。
#include<stdio.h>
int main()
{
int i,j,s=0,v[3],w[6];
int a[3][6]={{85,93,84,85,95,86},{79,95,95,80,100,98},{88,91,93,75,97,90}};
for(i=0;i<3;i++)
{
for(j=0;j<6;j++)
s=s+a[i][j];
v[i]=s/6;
s=0;
}
for(j=0;j<6;j++)
{
for(i=0;i<3;i++)
s=s+a[i][j];
w[j]=s/3;
s=0;
}
printf("数学%d,语文%d,英语%d\n",v[0],v[1],v[2]);
printf("王笑%d,李鹏%d,吴欣%d,张平%d,赵明%d,张晓娜%d\n",w[0],w[1],w[2],w[3],w[4],w[5]);
return 0; }
22.求二维数组(5行5列的两位数矩阵)中最大元素值及其行列号。
#include<stdio.h>
int main()
{
int a[5][5],max,i,j,x,y;
printf("请输入一个5行5列的两位数的矩阵:\n");
for(i=0;i<5;i++)
for(j=0;j<5;j++)
scanf("%d",&a[i][j]);
max=a[0][0];
for(i=0;i<5;i++)
for(j=0;j<5;j++)
{
if(max<a[i][j])
max=a[i][j];
x=i;
y=j;
}
printf("最大的元素是a[%d][%d]=%d\n",x,y,max);
return 0;
}
23.完成一个矩阵的转置,即行、列元素转换。
#include<stdio.h>
int main()
{
int i,j,b[4][3];
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
printf("请输出数组a中的元素值:\n");
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
printf("%5d",a[i][j]);
b[j][i]=a[i][j];
}
printf("\n");
}
printf("请输入数组b中的元素值:\n");
for(i=0;i<4;i++)
{
for(j=0;j<3;j++)
printf("%5d",b[i][j]);
printf("\n");
}
return 0;
}
24.将数组中的n个整数逆序输出。
#include<stdio.h>
#define N 50
int main()
{
int i,n,ch[N],t;
printf("请输入元素的个数:\n");
scanf("%d",&n);
printf("请输入这组元素:\n");
for(i=0;i<n;i++)
scanf("%d",&ch[i]);
for(i=0;i<n/2;i++)
{
t=ch[i];
ch[i]=ch[n-i-1];
ch[n-i-1]=t;
}
printf("逆序之后的输出:\n");
for(i=0;i<n;i++)
printf("%4d",ch[i]);
printf("\n");
return 0;
}
25.从键盘输入一组正整数,求它们的和。
#include<stdio.h>
#define N 100
int main()
{
int i,f[N],n,sum=0;
for(i=0;;i++)
{
scanf("%d",&f[i]);
if(f[i]<=0)
break;
}
n=i;
for(i=0;i<n;i++)
sum=sum+f[i];
printf("这些数字的和是:%d",sum);
printf("\n");
return 0;
}
26.已知有序的整型数组a[10]={1,30,50,200,900},试编写一程序,输入一个整数并将其插入到数组的合适位置,确保插入后数组的元素仍然有序。
#include<stdio.h>
int main()
{
int a[10]={1,30,50,200,900};
int i,data,n=5;
printf("请输入要插入的整数:\n");
scanf("%d",&data);
for(i=n-1;i>=0;i--)
{
if(a[i]>data)
a[i+1]=a[i];
else
break;
}
a[i+1]=data;
n=n+1;
printf("输出插入数值之后的所有元素:\n");
for(i=0;i<n;i++)
printf("%10d",a[i]);
printf("\n");
return 0;
}
27.设有一个有序数据序列,任意输入一个数,如在数据系列中则将其删除。
#include<stdio.h>
int main()
{
int i,j,k,m=5,n[5]={12,17,25,34,56};
printf("请输入原始数据:\n");
for(i=0;i<m;i++)
printf("%4d",n[i]);
printf("\n");
printf("请输入要删除的数据:\n");
scanf("%d",&k);
for(i=0;i<m;i++)
if(k==n[i])
{
for(j=i;j<m-1;j++)
n[j]=n[j+1];
break;
}
if(i>=m)
printf("没有相应的数据:\n");
else
{
printf("输出删除后的结果:\n");
for(i=0;i<m-1;i++)
printf("%4d",n[i]);
printf("\n");
}
return 0;
}
28.实现从键盘中输入10个互不相同的整数,输出这10个数并求其中的最小数。
#include<stdio.h>
int main()
{
int a[10];
int b,min;
printf("请输入10个整数:\n");
for(b=0;b<=9;b++)
scanf("%d",&a[b]);
for(b=0;b<=9;b++)
printf("%4d",a[b]);
min=a[0];
for(b=0;b<=9;b++)
if(min>a[b])
min=a[b];
printf("最小值是%d\n",min);
return 0;
}
29.利用数组,输出Fibonacci数列的前20个数,该数列具有两个特点:第一个特点是前两个数都是1;第二个特点是从第三个数开始,每个数都是其前两个数的和。
#include<stdio.h>
int main()
{
int n,f[20];
f[0]=f[1]=1;
for(n=2;n<20;n++)
f[n]=f[n-1]+f[n-2];
for(n=0;n<20;n++)
{
if(n%4==0)
printf("\n");
printf("%10d",f[n]);
}
printf("\n");
return 0;
}
30.给定任意n个整数,按由小到大次序对其进行排序,并输出结果。
#include<stdio.h>
#define N 10
int main()
{
int a[N];
int i,j,t;
printf("请输入10个数:\n");
for(i=0;i<N;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
for(i=0;i<N;i++)
for(j=i+1;j<N;j++)
if(a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
printf("由小到大输出:\n");
for(i=0;i<N;i++)
printf("%d\n",a[i]);
printf("\n");
return 0;
}