例题一:
一个学习小组有5个人,每个人有三门课的考试成绩。将各个数据保存到二维数组a[5][3]中,并求全组分科的平均成绩和总平均成绩。
张 | 王 | 李 | 赵 | 周 | |
Math | 80 | 61 | 59 | 85 | 76 |
C language | 75 | 65 | 63 | 87 | 77 |
Foxpro | 92 | 71 | 70 | 90 | 85 |
#include<stdio.h>
int main()
{
int a[5][3]={{80,75,92},{61,65,71},{59,63,70},{85,87,90},{76,77,85}};
int i,j,sum=0,average,v[3];
for(i=0;i<3;i++) //表示科目
{
for(j=0;j<5;j++) //表示学生
{
sum+=a[j][i];
}
v[i]=sum/5;
sum=0;
}
average=(v[0]+v[1]+v[2])/3;
printf("math:%d\nc language:%d\ndFoxpro:%d\n",v[0],v[1],v[2]);
printf("total:%d\n",average);
}
将二维数组a[2][3]={{1,2,3},{4,5,6}}转置为b[3][2]。
#include<stdio.h>
int main()
{
int a[2][3]={{1,2,3},{4,5,6}},b[3][2],i,j;
printf("array a:\n");
for(i=0;i<=1;i++)
{
for(j=0;j<=2;j++)
{
printf("%5d",a[i][j]);
b[j][i]=a[i][j];
}
printf("\n");
}
printf("array b:\n");
for(i=0;i<=2;i++)
{
for(j=0;j<=1;j++)
{
printf("%5d",b[i][j]);
}
printf("\n");
}
}
有一个3*4的矩阵,要求编程程序求出其中值最大的那个元素的值,以及其所在的行号和列号。
在这里的程序并不是动态输入,而是特定的。
#include<stdio.h>
int main()
{
int i,j,row=0,colum=0,max;
int a[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};
max=a[0][0];
for(i=0;i<=2;i++)
{
for(j=0;j<=3;j++)
{
if(a[i][j]>max)
{
max=a[i][j];
row=i;
colum=j;
}
}
}
printf("max=%d,row=%d,colum=%d\n",max,row,colum);
}
例题四:
输入九个整数,为3*3形式保存在二维数组中,按数组原来位置输出第一行和第一列的所有元素。
#include<stdio.h>
int main()
{
int i,j,a[3][3];
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("a[%d][%d]=",i,j);
scanf("%d",&a[i][j]);
}
}
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
if(i==1||j==1)
{
printf("%-6d",a[i][j]);
}
else
{
printf("%-6c",' ');
}
printf("\n");
}
}
例题五:
假设在数组a中的数据是按由小到大的顺序排列的:-12,0,6,16,23,56,80,100,110,115,从键盘上输入一个数,判定该数是否在数组中,若在,输出所在序号。
ps:可以利用二分法思想。
# include<stdio.h> #define M 10 int main() { int a[M]={-12,0,6,16,23,56,80,100,110,115}; int n,low=0,mid,high,found=0; high=M-1; printf("Input a number to be searcched:\n"); while(scanf("%d",&n)!=1) { printf("Illegal input!!\nPlease input again!!\n"); getchar();//由于scanf函数一直在读取输入流的数据,所以要将数据引出,凭空的读取,消耗输入流上的字符 } while(low<=high) { mid=(low+high)/2; if(n==a[mid]) { found = 1; break; } //找到,结束循环 else if(n>a[mid]) { low=mid+1; } else { high=mid-1; } } if(found==1) { printf("The index of %d is %d",n,mid); } else { printf("There is not %d",n); } }