四.程序填空题
1.下面程序可求出矩阵a的主对角线上的元素之和,请填(2)空使程序完整。 main ( )
{ int a[3][3]={1,3,5,7,9,11,13,15,17} , sum=0, i, j ; for (i=0 ; i<3 ; i++) for (j=0 ; j<3 ; j++) if (【i==j】)
sum=sum+【a[i][j]】; printf(“sum=%d”,sum); }
2.下面程序将十进制整数n转换成base进制,请填(3)空使程序完整。 main ( )
{ int i,base,n,j,num[20] ; scanf(“%d”,&n); scanf(“%d”,&base) ; do { i++;
num[i]=【nose 】; n=【n/base】; } while (n!=0);
for (【j=i;j>0;j--】) printf(“%d ”,num[j]) ; }
3.下面程序的功能是输入10个数,找出最大值和最小值所在的位置,并把两者对调,然后输出调整后的10个数,请填(3)空使程序完整。 main ( )
{ int a[10],max,min,i,j,k ; for (i=0; i<10; i++) scanf(“%d”,&a[i]); max=min=a[0];
for (i=0; i<10; i++) {
11
if (a[i]
【max=a[j];a[j]=a[k];a[k]=max;】 for (i=0; i<10; i++) printf(“%d ”,a[i]); }
4.下面程序的功能是在一个字符串中查找一个指定的字符,若字符串中包含该字符则输出该字符在字符串中第一次出现的位置(下标值),否则输出-1,请填(2)空使程序完整。 # include
{ char c=?a? ; /* 需要查找的字符*/ char t[50] ; int i,j,k; gets(t) ;
i = 【strlen(t) 】; for (k=0; k
5.下面程序用“顺序查找法”查找数组a中是否存在某一关键字,请填(2)空使程序完整。 main ( )
{ int a[10]={25,57,48,371,123,291,18,22,44}; int i=0,x ;
scanf(“%d”,&x); 【a[10]=x】;
while (a[i]!=x) i++ ;
if (【i<10 】) printf(“found=%d\\n”,i); else printf(“can\\?t found!\\n”); }
6. 以下程序是将字符串b的内容连接字符数组a的内容后面,形成新字符串a,请填(2)空使程序完整。 main ( )
{ char a[40]=”Great ”, b[ ]=”Wall”; int i=0,j=0 ;
while (a[i]!=?\\0?) i++ ; while (【b[j]!='\\0' 】) { a[i]=b[j] ; i++ ; j++ ; }
【a[i]='\\0'】; printf(“%s\\n”,a); }
12
五、编程题
[1] 输入一行数字字符,请用数组元素作为计数器来统计每个数字字符的个数。用下标为0元素统计字符“0”的个数,下标为1的元素统计字符“1”的个数,...。 #include
char chs[N]; int i,count[10];
printf(\ scanf(\
for(i=0;i<10;i++) count[i]=0; for(i=0;i count[chs[i]-'0']++; } for(i=0;i<10;i++) if(count[i]) printf(\} [2] 编写程序求任意方阵每行、每列、两对角线元素之和。 #include int a[N][M]={ {3,4,7,8,9}, {6,8,2,1,3}, {8,5,4,3,2}, {7,6,9,1,5}, {5,6,4,1,7}}; int s1[N];//存放每行的和 int s2[M];//存放每列的和 int sum1=0,sum2=0;//存放两对角线的和 int i=0,j=0; for(i=0;i for(i=0;i s1[i]+=a[i][j]; } 13 for(j=0;j s2[j]+=a[i][j]; } for(i=0;i sum1+=a[i][i]; } for(i=0;i sum2+=a[i][M-1-i]; } printf(\每行和:\ for(i=0;i for(i=0;i [3] 编写程序求两个矩阵的和。 #include int a[N][M]={ {3,4,7,8,9}, {6,8,2,1,3}, {8,5,4,3,2}, {7,6,9,1,5} }; int b[N][M]={ {2,4,7,5,9}, {7,8,2,5,3}, {9,5,4,3,2}, {8,6,9,1,5} }; int c[N][M],i,j; for(i=0;i c[i][j]=a[i][j]+b[i][j]; } for(i=0;i for(j=0;j 14 { printf(\ } printf(\ } } [4] 编写程序打印出以下形式的乘法九九表。 ** A MULTIPCATION TABLE ** (1) (2) (3) (4) (5) (6) (7) (8) (9) (1) 1 2 3 4 5 6 7 8 9 (2) 2 4 6 8 10 12 14 16 18 (3) 3 6 9 12 15 18 21 24 27 (4) 4 8 12 16 20 24 28 32 36 (5) 5 10 15 20 25 30 35 40 45 (6) 6 12 18 24 30 36 42 48 54 (7) 7 14 21 28 35 42 49 56 64 (8) 8 16 24 32 40 48 56 64 72 (9) 9 18 27 36 45 54 63 72 81 #include void main() { int i=0,j=0; printf(\ printf(\ printf(\ for(i=1;i<10;i++) { printf(\ for(j=1;j<10;j++) { printf(\ } printf(\ } } [5] 调用随机函数为5*4的矩阵置100以内的整数,输出该矩阵,求出每行元素之和,并把和值最大的那一行与第一行上的元素对调。若已定义x为int类型,调用随机函数步骤如下: #include \ . . x=rand()0 /*产生0到100的随机数*/ 15