int a[12] = {1,2,3,4,5,6,7,8,9,10,11,12}; char c=’a’,d,g;
则数值为4的数组元素是
A) a[g-c] B) a[4] C) a[‘d’-‘c’] D) a[‘d’-c] B5. 若有定义语句:char c[5]={‘a’,’b’,’\\0’,’c’,’\\0’};, 则执行语句printf(“%s”, c);的结果是
A) ‘a’’b’ B) ab C)ab c D) ab\\0c D6. 对两个数组a和b进行如下初始化:
char a[] = “ABCDEF”;
char b[] = {‘A’,‘B’,‘C’,‘D’,‘E’,‘F’}; 则以下叙述正确的是
A) a与b完全相同 B) a与b长度相同
C) a与b中都存放字符串 D) a数组比b数组长度长 A7. 以下程序段给数组所有元素输入数据,应在下划线处填入的是
int main()
{ int a[10], i = 0; while(i < 10)
scanf(“%d”, ); …
return 0; }
A)a+(i++) B)&a[i+1] C)a+i D)&a[++i] C8.以下程序的输出结果是 int main()
{ int i, x[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
for(i = 0; i < 3; i++)
printf(“%d,”, x[i][2-i]);
return 0; }
A)1,5,9, B)1,4,7, C)3,5,7, D)3,6,9,
C9. 当运行以下程序时输入三行,每行都是在第一列上开始,
a
则程序的输出结果是 #include
{ char c[N]; int i = 0; for(i = 0; i < N; i++)
c[i] = getchar();
for(i = 0; i < N; i++)
putchar(c[i]); return 0;
21
}
A)abcdef B)a C)a D)a
b b b c cd cdef d e f
C10. 以下程序段的输出结果是
pritnf(“%d\\n”, strlen(“ATS\\n012\\1\\\\”));
A) 11 B) 10 C) 9 D)8 C11. 下面程序的运行结果是
A) 12ba56 B) 6521 C) 6 D) 62
int main()
{ char ch[7] = “65ab21”; int i, s = 0;
for(i=0;ch[i]>=’0’&&ch[i]<=’9’; i += 2) s = s*10+ch[i]-‘0’; printf(“%d\\n”, s); return 0; }
A12. 以下程序的输出结果是
A)不确定的值 B)3 C)2 D)1 min()
{ int n[2] ={0}, i, j, k = 2; for(i = 0; i < k; i++) for(j = 0; j < k; j++)
n[j] = n[i] +1;
pritnf(“%d\\n”, n[k]); }
D13.以下程序中,若第一个printf语句输出的是194,则第二个printf语句的输出结果是
int main()
{ int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}; printf(“%x\\n”, a); printf(“%x\\n”, a + 9); return 0; }
A)212 B)204 C)19d D)1a6 A14. 执行下面的程序段后,变量k中的值为
int k=3, s[2];
s[0]=k; k=s[1]*10;
A) 不定值 B) 33 C) 30 D) 10
二、填空题
22
1.若有以下定义: double w[10];
则w数组元素下标的上限是 9 , 下限是 0 。
2. 若有定义int a[3][4]={1,2,3,4,5,6,7,8,9};,则a[1][3] = 8 ,a[2][3]= 0 。
3.若有以下定义:
char a[]=”ABCD”, b[]=”abcd”; if(strcmp(a,b)=0) printf(“YES\\n”); else
printf(“NO\\n”);
执行结果是 语法错误(strcmp(a,b)==0) 。
4.以下程序的输出结果是 12 。 int main()
{ int arr[10], i, k = 0; for(i = 0; i < 10; i++)
arr[i] = i;
for(i = 0; i < 4; i++)
k += arr[i] + i; printf(“%d\\n”, k); return 0;
}
5. 以下程序的输出结果是 -850,2,0 。
main()
{ int i, j, row, col, m;
int arr[3][3] = {{100, 200, 300}, {28, 72, -30}, {-850, 2, 6}}; m = arr[0][0]; for( i = 0; i < 3; i++) for( j = 0; j < 3; j++) if(arr[i][j] < m) { m = arr[i][j];
row = i; col = j; }
printf(“%d,%d,%d\\n”, m, row, col); }
6. 以下程序统计从终端输入的字母中每个大写字母的个数,num[0]中统计字母A的个数,
其它依次类推。用#号结束输入,请填空。
#include “stdio.h” #include “ctype.h” int main()
{ int num[26] = {0}; i; char c;
23
while( != ‘#’) (c=geetchar()) if( isupper(c) )
num[ ] += 1; c-‘A’
for(i = 0; i < 26; i++) if(num[i])
printf(“%c : %d\\n”, i + ‘A’, num[i]);
return 0;
}
7. 以下程序段的输出结果是 3 。
printf(“%d\\n”, strlen(“s\\n\\016\\0end”));
8.一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6的因子为1、2、3,而6=1+2+3,因此6是“完数”。以下程序是求1~1000之间的所有完数,请填空,以完善程序功能。
#define M 100
int main()
{ int a, b, x[M], sum, cnt = 0; for(a = 1; a <= 1000; a++) {
sum=0 b = 1;
while(b
if(a % b == 0) /* b是a的一个因子 */ sum += b; b++; }
if( sum==a ) /* a是完数 */
x[cnt++] = a; }
for(b = 0; b < cnt ; b++) /* 输出所有完数 */ printf(“?”, x[b]); printf(“\\n”); return 0;
}
9. 给出以下程序,其功能是将a矩阵和b矩阵合并成c矩阵,最后将c矩阵按格式输出。请填空。 3 1 7 5 2 3 1 4 5 4 8 9 a = b= c = 1 2 4 3 5 1 3 6 6 3 7 9 6 3 0 2 1 5 2 3 7 8 2 5
#include
int main()
{ int a[3][4] = {{3, 1, 7, 5},{1, 2, 4, 3},{6, 3, 0, 2}};
24
int b[3][4] = {{2, 3, 1, 4},{5, 1, 3, 6},{1, 5, 2, 3}}; int i, j, c[3][4];
for(i = 0; i < 3; i++) for(j = 0; j < 4; j++)
c[i][j] = a[i][j]+b[i][j] ; for(i = 0; i < 3; i++) { for(j = 0; j < 4; j++) pritnf(“]”, c[i][j]);
printf(“\\n”) ; }
return 0;
}
10.以下程序的功能是从a数组中删除其值为x的数据,请填空。
int main() {
int a[10]={2,4,7,3,1,7,6,8,7,9}, i, j, x = 7; for( i=j=0 ; i<10; i++) if(a[i] != x) a[ j++ ] = a[i]; for(i = 0; i 11.以下程序的功能是将x字符串与y字符串连接并输出,请填空。注:程序中不能使用字符串连接函数。 #include { char x[80], y[40]; int a, h = 0; printf(“Please input x string: “); gets(x); printf(“Please input y string: “); gets(y); while(x[h]!=’\\0’) h++ ; a=0 ; while(y[a]!=’\\0’) x[h++] = y[a++]; x[h]=’\\0’ ; printf(“Output x string: “); puts(x); return 0; } 25