A.8 B.10 C.15 D.5
6.2.7 若有说明:int a[3][4]; 则对a数组元素的非法引用是(D)。
A.a['B'-'A'][2*1] B.a[1][3] C.a[4-2][0] D.a[0][4] 6.2.8 设有语句static char str[10
={“china”};printf(“%d”,strlen(str)); 则输出结果是 A.10 B.5 C.china D.6
6.2.9 表达式strlen(“string”)+strlen(“C”)的运算结果为(C)。
A.9 B.10 C.7 D.8 6.2.10 执行以下程序段后,s的值为(B)。
static char ch[ ]=“623”
int a,s=0;for(a=0;ch[a]>=?0?&&ch[a]<=?9?;a++) s=10*s+ch[a]-?0?;
]
A.-4705 B.623 C.600 D.326
6.3 编程题
6.3.1 从键盘输入若干个整数(数据个数应少于50),其值在0至4的范围内,用-1作为输入结束标志.统计每个整数的个数。试编程。
参考答案
#include
{ int a[M],c[5],i,n=0,x;
printf(\ scanf(\ while(x!=-1)
{if(x>=0 && x<=4) {a[n]=x;n++;} scanf(\ }
for(i=0;i<5;i++) c[i]=0; for(i=0;i for(i=0;i<=4;i++) printf(\ printf(\} 6.3.2 定义一个含有30个整型元素的数组,按顺序分别赋予从2开始的偶数;然后按顺序每五个数求出一个平均值,放在另一个数组中并输出。请编程。 参考答案 #include { float b[SIZE/5],sum; int a[SIZE],i,k; for( k=2,i=0;i { } } sum=0.0; for( k=0,i=0;i { } sum+=a[i]; if((i+1)%5==0) { } b[k]=sum/5; sum=0; k++; a[i]=k; k+=2; printf(\for(i=0;i 6.3.3 通过赋初值按行顺序给2*3的二维数组赋予2、4、6....等偶数,然后按列的顺序输出该数组。试编程。 参考答案 #include int i,j,a[2][3]={{2,4,6},{8,10,12}}; printf(\ for(i=0;i<2;i++) { for(j=0;j<3;j++) printf(\ printf(\ } printf(\ for(i=0;i<3;i++) { for(j=0;j<2;j++) printf(\ printf(\ } } 6.3.4 通过循环按行顺序为一个5*5的二维数组a赋1到25的自然数,然后输出该数组的左下半三角。试编程。 参考答案 #include int a[5][5],i,j,n=1; for(i=0;i<5;i++) for(j=0;j<5;j++) a[i][j]=n++; printf(\ for(i=0;i<5;i++) { for(j=0;j<=i;j++) printf(\ printf(\ } } 6.3.5 下面是一个5*5阶的螺旋方阵。试编程打印出此形式的n*n(n<10)阶的方阵(顺时针方向旋进) 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 #include { int a[10][10],i,j,k=0,m,n; printf(\ scanf(\ if(n%2==0) m=n/2; else m=n/2+1; for(i=0;i k++;a[i][j]=k; } for(j=+1;j k++;a[j][n-i-1]=k; } for(j=n-i-2;j>=i;j--) {k++;a[n-i-1][j]=k;} for(j=n-i-2;j>=i+1;j--) {k++;a[j][i]=k;} } for(i=0;i {for(j=0;j printf(\ printf(\ } } 6.3.6 从键盘输入一个字符,用折半查找法找出该字符在已排序的字符串a中的位置。若该字符不在a中,则打印出提示信息:The char is not in the string.试编程。 注:折半查找的算法思想是将数列按有序化(递增或递减)排列,查找过程中采用跳跃式方式查找,即先以有序数列的中点位置为比较对象,如果要找的元素值小于该中点元素,则将待查序列缩小为左半部分,否则为右半部分。通过一次比较,将查找区间缩小一半。 折半查找是一种高效的查找方法。它可以明显减少比较次数,提高查找效率。但是,折半查找的先决条件是查找表中的数据元素必须有序。 参考答案 #include { char a[12]=\ int i,top,bot,mid; printf(\ scanf(\ printf(\ for(top=0,bot=10;top<=bot;) { mid=(top+bot)/2; if(c==a[mid]) { printf(\ break; } else if(c>a[mid]) top=mid+1; else bot=mid-1; } if(top>bot) printf(\} 6.3.7 从键盘输入两个字符串a和b,要求不用库函数strcat把串b的前五个字符连接到串a中;如果b的长度小于5,则把b的所有元素都连接到a中。试编程。 参考答案 #include { char a[80],b[80]; int i=0,j; printf(\ gets(a);gets(b); while(a[i++]!='\\0'); for(j=0,i--;j<5&&b[j]!='\\0';j++)