11.若有说明:int a[][3]={1,2,3,4,5,6,7};则数组a第一维大小是 。 A)2 B)3 C)4 D)无确定值
12.以下不正确的定义语句是 。
A)double x[5]={2.0,4.0,6.0,8.0,10.0}; B)int y[5]={0,1,3,5,7,9} ;
C)char c1[ ]={?1?,?2?,?3?,?4?,?5?} ; D)char c2[ ]={?\\x10?,?\\xa?,?\\x8?} ;
13.下面程序段的输出结果是 。 int k,a[3][3]={1,2,3,4,5,6,7,8,9};
for (k=0;k<3;k++) printf(“%d”,a[k][2-k]);
A)3 5 7 B)3 6 9 C)1 5 9 D)1 4 7
14.下面是对s的初始化,其中不正确的是 。
A)char s[5]={“abc”}; B)char s[5]={?a?,?b?,?c?}; C)char s[5]=” ”; D)char s[5]=”abcdef”;
15.下面程序段的输出结果是 。 char c[5]={?a?,?b?,?\\0?,?c?,?\\0?} printf(“%s”,c);
A)?a??b? B)ab C)ab c D)abc
16.若有程序段:
int k,a[3][3]={1,2,3,4,5,6,7,8,9};
for (k=0;k<3;k++) printf(“%d”,a[k][2-k]); 则以下叙述正确的是 。
A)a与b数组完全相同 B)a与b长度相同
C)a和b中都存放字符串 D)a数组比b数组长度长
17.有两个字符数组a,b,则以下正确的输入语句是 。 A)gets(a,b); B)scanf(“%s%s”,a,b); C)scanf(“%s%s”,&a,&b); D)gets(“a”),gets(“b”);
18.下面程序段的输出结果是 。 char a[7]=”abcdef”; char b[4]=”ABC”; strcpy(a,b);
printf(“%c”,a[5]);
A) B)\\0 C)e D)f
19.下面程序段的输出结果是 。 char c[ ]=”\\t\\v\\\\\\0will\\n”; printf(“%d”,strlen(c));
A)14 B)3 C) 9 D)6
20.判断字符串a和b是否相等,应当使用 。 A)if (a==b) B)if (a=b)
C)if (strcpy(a,b)) D) if (strcmp(a,b))
21.判断字符串a是否大于b,应当使用 。 A)if (a>b) B)if (strcmp(a,b)) C)if (strcmp(b,a)>0) D)if (strcmp(a,b)>0)
22.下面叙述正确的是 。
A)两个字符串所包含的字符个数相同时,才能比较字符串 B)字符个数多的字符串比字符个数少的字符串大 C)字符串”STOP ”与”STOP”相等 D)字符串”That”小于字符串”The”
23.下面有关字符数组的描述中错误的是 。 A)字符数组可以存放字符串 B)字符串可以整体输入,输出
C)可以在赋值语句中通过赋值运算对字符数组整体赋值 D)不可以用关系运算符对字符数组中的字符串进行比较
24.下面程序的输出结果是 。 main ( )
{ char ch[7]=”12ab56”; int i,s=0;
for (i=0;ch[i]>?0?&&ch[i]<=?9?;i+=2) s=10*s+ch[i]-?0?; printf(“%d\\n”,s); }
A)1 B)1256 C)12ab56 D)ab
25.下面程序的输出结果是 。 main ( ) {
char str[ ]=”SSWLIA” , C; int k;
for (k=2;(c=str[k])!=?\\0?;k++) { switch (c) {
case ?I? : ++k; break ; case ?L?: continue;
default : putchar(c) ; continue ; }
putchar(?*?); } }
A)SSW B)SW* C)SW*A D)SW
二.填空题
1.在C语言中,二维数组的元素在内存中的存放顺序是 。
2.若有定义:double x[3][5],则x数组中行下标的下限为 ,列下标的下限为 。
3.若有定义:int a[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]的值为 ,a[2][1]得到的值为 。
4.字符串”ab\\n\\\\012\\\\”的长度是 。
5.下面程序段的运行结果是 。 char x[ ]=”the teacher”; int i=0;
while (x[++i]!=?\\0?)
if (x[i-1]==?t?) printf(“%c”,x[i]);
6.欲为字符串S1输入”Hello World!”,其语句是 。
7.欲将字符串S1复制到字符串S2中,其语句是 。
8.如果在程序中调用了strcat函数,则需要预处理命令 。如果调用了gets函数,则需要预处理命令 。
9.C语言数组的下标总是从 开始,不可以为负数;构成数组各个元素具有相同的 。
10.字符串是以 为结束标志的一维字符数组。有定义:char a[]=””;则a数组的长度是 。
三.程序阅读题
1.写出下面程序的运行结果。 main ( )
{ int a[6][6],i,j ; for (i=1; i<6 ; i++) for (j=1 ; j<6 ; j++) a[i][j]=(i/j)*(j/i) ; for (i=1;i<6 ; i++) { for (j=1 ; j<6 ; j++) printf(“-”,a[i][j]) ; printf(“\\n”); } }
2.写出下面程序的运行结果。 main ( ) { int i=0;
char a[ ]=”abm”, b[ ]=”aqid”, c[10]; while (a[i]!=?\\0? && b[i]!=?\\0?) { if (a[i]>=b[i]) c[i]=a[i]-32 ; else c[i]=b[i]-32 ; i++; }
c[i]=?\\0?; puts(c);
}
3.当运行下面程序时,从键盘上输入AabD↙,则写出下面程序的运行结果。 main ( ) { char s[80]; int i=0; gets(s);
while (s[i]!=?\\0?) {
if (s[i]<=?z? && s[i]>=?a?) s[i]=?z?+?a?-s[i] ; i++; }
puts(s);
}
4.写出下面程序的运行结果。 main ( ) { int i,c;
char s[2][5]={“8980”,”9198”}; for (i=3; i>=0 ; i--) {
c=s[0][i]+s[1][i]-2*?0?; s[0][j] = c % 10 + ?\\0? ; }
for (i=0; i<=1; i++) puts(s[i]);
}
5.当运行下面程序时,从键盘上输入7 4 8 9 1 5↙,则写出下面程序的运行结果。 main ( )
{ int a[6],i,j,k,m; for (i=0 ; i<6 ; i++) scanf (“%d”,&a[i]); for (i=5 ; i>=0; i--) { k=a[5];
for (j=4; j>=0; j--)