C语言第七章复习题含答案.docx
《C语言第七章复习题含答案.docx》由会员分享,可在线阅读,更多相关《C语言第七章复习题含答案.docx(11页珍藏版)》请在冰豆网上搜索。
C语言第七章复习题含答案
1.下列对C语言字符数组的描述中错误的是(C)。
(A)字符数组可以存放字符串(B)字符数组中的字符串可以整体输入、输出
(C)可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值
(D)不可以用关系运算符对字符数组中的字符串进行比较
2.不能把字符串:
Hello!
赋给数组b的语句是(B)。
(A)charb[10]={'H','e','l','l','o','!
'};
(B)charb[10];b="Hello!
";
(C)charb[10];strcpy(b,"Hello!
");
(D)charb[10]="Hello!
";
3.若有以下说明:
inta[12]={1,2,3,4,5,6,7,8,9,10,11,12};
charc='a',d,g;
则数值为4的表达式是(D)。
(A)a[g-c](B)a[4](C)a['d'-'c'](D)a['d'-c]
4.以下程序的输出结果是(B)
(A)20(B)21(C)22(D)23
main()
{inti,k,a[10],p[3];
k=5;
for(i=0;i<10;i++)a[i]=i;
for(i=0;i<3;i++)p[i]=a[i*(i+1)];
for(i=0;i<3;i++)k+=p[i]*2;
printf("%d\n",k);
5.以下程序的输出结果是(C)。
(A)1,5,9(B)1,4,7(C)3,5,7(D)3,6,9
main()
{inti,x[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)printf("%d,",x[i][2-i]);
6.下面程序运行的结果是(C)。
(A)2ba56(B)6521(C)6(D)62
main()
{charch[7]={“65ab21“};
inti,s=0
for(i=0;ch[i]>='0'&&ch[i]<='9';i+=2)
s=10*s+ch[i]-'0';
printf("%d\n",s);
}
7.合法的数组定义是(D)。
(A)inta[]="string";(B)inta[5]={0,1,2,3,4,5};
(C)chars[6]="string";(D)chara[]={0,1,2,3,4,5};
8.函数调用:
strcat(strcpy(str1,str2),str3)的功能是(C)。
(A)将串str1复制到串str2中后再连接到串str3之后
(B)将串str1连接到串str2之后再复制到串str3之后
(C)将串str2复制到串str1中后再将串str3连接到串str1之后
(D)将串str2连接到串str1之后再将串str1复制到串str3中
9.以下程序输出的结果是(D)。
main()
{charw[][10]={"ABCD","EFGH","IJKL","MNOP"},k;
for(k=1;k<3;k++)
printf("%s\n",&w[k][k]);
}
(A)ABCD(B)ABCD
FGHEFG
KLIJ
M
(C)EFG(D)FGH
JKKL
O
10.有以下程序
main()
{int i,t[][3]={9,8,7,6,5,4,3,2,1};
for(i=0;i<3;i++) printf("%d",t[2-i][i]);
}
程序执行后的输出结果是(B)。
(A)7 5 3(B)3 5 7(C)3 6 9(D)7 5 1
11.给出以下定义:
charx[]="abcdefg";
chary[]={'a','b','c','d','e','f','g'};
则正确的叙述为(C)。
(A)数组x和数组y等价(B)数组x和数组y的长度相同
(C)数组x的长度大于数组y的长度(D)数组x的长度小于数组y的长度
12.以下程序的输出结果是(B)。
main()
{inti,k,a[10],p[3]:
k=5;
for(i=0;i<10;i++)a[i]=i;
for(i=0;i<3;i++)p[i]=a[i*(i+1)];
for(i=0;i<3;i++)k+=p[i]*2;
printf("%d\n",k);
}
(A)20(B)21(C)22(D)23
13.下面能正确进行字符串赋值操作的语句是(C)。
(A)chars[5]={"ABCDE"};(B)chars[5]={'A','B','C','D','E'};
(C)char*s;s="ABCDEF";(D)char*s;scanf("%s",s);
14.下列描述中不正确的是(C)。
(A)字符型数组中可以存放字符串
(B)可以对字符型数组进行整体输入、输出
(C)可以对整型数组进行整体输入、输出
(D)不能在赋值语句中通过赋值运算符"="对字符型数组进行整体赋值
15.有以下程序
main()
{charp[]={'a','b','c'},q[]="abc";
printf("%d%d\n",sizeof(p),sizeof(q));
};
程序运行后的输出结果是(C)。
(A)44(B)33(C)34(D)43
16.以下程序的输出结果是(B)。
(A)6(B)6789(C)'6'(D)789
main()
{chara[10]={'1','2','3','4','5','6','7','8','9'},*p;
inti;
i=8;
p=a+i;
printf("%s\n",p-3);
}
17.执行下面的程序段后,变量k中的值为(A)。
(A)不定值(B)33(C)30(D)10
intk=3,s[2];
s[0]=k;k=s[1]*10;
18.设有数组定义:
chararray[]="China";则数组array所占的空间为(C)。
(A)4个字节(B)5个字节(C)6个字节(D)7个字节
19.下列程序执行后的输出结果是(A)。
(A)you&me(B)you(C)me(D)err
main()
{chararr[2][4];
strcpy(arr,"you");strcpy(arr[1],"me");
arr[0][3]='&';
printf("%s\n",arr);
}
20.以下程序的输出结果是(B)
main()
{inti,k,a[10],p[3];
k=5;
for(i=0;i<10;i++)a[i]=i;
for(i=0;i<3;i++)p[i]=a[i*(i+1)];
for(i=0;i<3;i++)k+=p[i]*2;
printf("%d\n",k);}
(A)20(B)21(C)22(D)23
21.若有以下的定义:
intt[3][2];能正确表示t数组元素地址的表达式是(D)。
(A)&t[3][2](B)t[3](C)t[1][0](D)t[2]
22.以下程序的输出结果是(B)。
(A)20(B)21(C)22(D)23
main()
{inti,k,a[10],p[3];
k=5;
for(i=0;i<10;i++)a[i]=i;
for(i=0;i<3;i++)p[i]=a[i*(i+1)];
for(i=0;i<3;i++)k+=p[i]*2;
printf("%d\n",k);
}
23.以下程序的输出结果是(C)。
(A)1,5,9(B)1,4,7(C)3,5,7(D)3,6,9
main()
{inti,x[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)printf("%d,",x[i][2-i]);
}
24.以下程序的输出结果是(D)。
(A)ABCD(B)ABCD(C)EFG(D)EFGH
FGHEFGJKIJKL
KLIJO
M
main()
{charw[][10]={"ABCD","EFGH","IJKL","MNOP"},k;
for(k=1;k<3;k++)printf("%s\n",w[k]);
}
25.当执行下面的程序时,如果输入ABC,则输出结果是(A)。
(A)ABC6789(B)ABC67(C)12345ABC6(D)ABC456789
#include"stdio.h"
#include"string.h"
main()
{charss[10]="1,2,3,4,5";
gets(ss);strcat(ss,"6789");printf("%s\n",ss);
}
26.假定int类型变量占用两个字节,其有定义:
intx[10]={0,2,4};,则数组x在内存中所占字节数是(D)。
(A)3(B)6(C)10(D)20
27.以下程序的输出结果是(C)。
main()
{inti,a[10];
for(i=9;i>=0;i--)a[i]=10-i;
printf("%d%d%d",a[2],a[5],a[8]);
}
(A)258(B)741(C)852(D)369
28.以下数组定义中不正确的是(D)。
(A)inta[2][3];
(B)intb[][3]={0,1,2,3};
(C)intc[100][100]={0};
(D)intd[3][]={{1,2},{1,2,3},{1,2,3,4}};
29.以下程序的输出结果是(A)。
main()
{inta[4][4]={{1,3,5},{2,4,6},{3,5,7}};
printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1],a[3][0];
}
(A)0650(B)1470(C)5430(D)输出值不定
30.已有定义:
chara[]="xyz",b[]={'x','y','z'};,以下叙述中正确的是(C)。
(A)数组a和b的长度相同(B)a数组长度小于b数组长度
(C)a数组长度大于b数组长度(D)上述说法都不对
31. 以下程序段的输出结果是(A)。
char s[]="\\141\141abc\t";
printf ("%d\n",strlen(s));
(A) 9 (B) 12 (C) 13 (D) 14
32. 以下程序段的输出结果是(A)。
char s[]="\\141\141abc\t";
printf ("%d\n",strlen(s));
(A) 9 (B) 12 (C) 13 (D) 14
33. 以下程序的输出结果是(B)。
main()
{ char cf[3][5]={"AAAA","BBB","CC"};
printf("\"%s\"\n",ch[1]);
}
(A) "AAAA" (B) "BBB" (C) "BBBCC" (D) "CC"
34.若有定义:
int aa[ 8];,则以下表达式中不能代表数组元aa[1]的地址的是(C)。
(A) &aa[0]+1 (B) &aa[1] (C) &aa[0]++ (D) aa+1
35. 以下程序的输出结果是(B)。
main()
{ int b[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;
for(i=0;i<3;i++)
for(j=i;j<=i;j++) t=t+b[b[j][j]];
printf("%d\n",t);
}
(A) 3 (B) 4 (C) 1 (D) 9
36.有以下程序
main()
{ char a[ ]={‘a’,‘b’,‘c’,‘d’, ‘e’, ‘f’, ‘g’,‘h’,‘\0’};
int i,j;
i=sizeof(a); j=strlen(a);
printf(“%d,%d\b”,i,j);
}
程序运行后的输出结果是(D)。
(A) 9,9 (B) 8,9 (C) 1,8 (D) 9,8
37. 有以下程序
main()
{ int p[7]={11,13,14,15,16,17,18},i=0,k=0;
while(i<7&&p%2){k=k+p;i++;}
printf("%d\n",k);
}
执行后输出结果是(D)。
(A) 58 (B) 56 (C) 45 (D) 24
38. 以下能正确定义数组并正确赋初值的语句是(D)。
(A) int N=5,b[N][N]; (B) int a[1][2]={{1},{3}};
(C) int c[2][]={{1,2},{3,4}}; (D) int d[3][2]={{1,2},{3,4}};
39.有以下程序
main()
{ char s[]="\n123\\";
printf("%d,%d\n",strlen(s),sizeof(s));
}
执行后输出结果是(C)。
(A) 赋初值的字符串有错 (B) 6,7 (C) 5,6 (D) 6,6
40.以下不能正确定义二维数组的选项是(D)。
(A)int a[2][2]={{1},{2}}; (B)int a[][2]={1,2,3,4};
(C)int a[2][2]={{1},2,3}; (D)int a[2][]={{1,2},{3,4}};
41.有以下程序
main( )
{ char a[]=”abcdefg”,b[10]=”abcdefg”;
printf(“%d %d\n”,sizeof(a) ,sizeof(b) );
}
执行后输出结果是(C)。
(A) 7 7 (B) 8 8 (C) 8 10 (D) 10 10
42.以下能正确定义二维数组的是(A)。
(A)inta[][3];(B)inta[][3]=2{2*3};
(C)inta[][3]={};(D)inta[2][3]={{1},{2},{3,4}};
43.s1和s2已正确定义并分别指向两个字符串。
若要求:
当s1所指串大于s2所指串时,执行语句S;则以下选项中正确的是(C)。
(A)if(s1>s2)S;(B)if(strcmp(s1,s2))S;
(C)if(strcmp(s2,s1)>0)S;(D)if(strcmp(s1,s2)>0)S;
44.有以下程序
main()
{intp[8]={11,12,13,14,15,16,17,18},i=0,j=0;
while(i++<7)if(p%2)j+=p;
printf("%d\n",j);
}
程序运行后的输出结果是(B)。
(A)42(B)45(C)56(D)60
45.有以下程序
main()
{chara[7]="a0\0a0\0";inti,j;
i=sizeof(a);j=strlen(a);
printf("%d%d\n",i,j);
}
程序运行后的输出结果是(C)。
(A)22(B)76(C)72(D)62
46.以下能正确定义一维数组的选项是(B)。
(A)inta[5]={0,1,2,3,4,5};(B)chara[]={0,1,2,3,4,5};
(C)chara={'A','B','C'};(D)inta[5]="0123";
47.已有定义:
chara[]="xyz",b[]={'x','y','z'};,以下叙述中正确的是(C)。
(A)数组a和b的长度相同(B)a数组长度小于b数组长度
(C)a数组长度大于b数组长度(D)上述说法都不对
48.以下叙述中错误的是(C)。
(A)对于double类型数组,不可以直接用数组名对数组进行整体输入或输出
(B)数组名代表的是数组所占存储区的首地址,其值不可改变
(C)当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息
(D)可以通过赋初值的方式确定数组元素的个数
49.有以下程序
main()
{charp[]={'a','b','c'},q[]="abc";
printf("%d%d\n",sizeof(p),sizeof(q));
};
程序运行后的输出结果是(C)。
(A)44(B)33(C)34(D)43
50.#include
main()
{charp[]={'a','b','c'},q[10]={'a','b','c'};
printf("%d%d\n",strlen(p),strlen(q));
}
以下叙述中正确的是(B)。
(A)在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3
(B)由于p数组中没有字符串结束符,长度不能确定;但q数组中字符串长度为3
(C)由于q数组中没有字符串结束符,长度不能确定;但p数组中字符串长度为3
(D)由于p和q数组中都没有字符串结束符,故长度都不能确定
51.以下能正确定义字符串的语句是(D)。
(A)char str[]={′\064′};(B)char str="kx43";
(C)char str="; (D)char str[]="\0";
52.以下数组定义中错误的是(B)。
(A)int x[][3]={0};
(B)int x[2][3]={{l,2},{3,4},{5,6}};
(C)int x[][3]={{l,2,3},{4,5,6}};
(D)int x[2][3]={l,2,3,4,5,6};
53.若要求从键盘读入含有空格字符的字符串,应使用函数(B)。
(A)getc()(B)gets()(C)getchar()(D)scanf()
54.若有定义语句:
inta[3][6];,按在内存中的存放顺序,a数组的第10个元素是(B)。
(A)a[0][4](B)a[1][3](C)a[0][3](D)a[1][4]
55.有以下程序
main()
{int i,t[][3]={9,8,7,6,5,4,3,2,1};
for(i=0;i<3;i++) printf("%d",t[2-i][i]);
}
程序执行后的输出结果是3 5 7。
56.下列程序的输出结果是CDABC。
#include
main()
{charb[30],*chp;
strcpy(&b[0],"CH");
strcpy(&b[1],"DEF");
strcpy(&b[2],"ABC");
printf("%s\n",b);
}
57.下面程序的功能是:
将字符数组a中下标值为偶数的元素从小到大排列,其它元素不变。
请填空。
#include
#include
main()
{chara[]="clanguage",t;
inti,j,k;
k=strlen(a);
for(i=0;i<=k-2;i+=2)
for(j=i+2;j<=k;j+=2)
if(a[i]>a[j]或a[i]>=a[j]
{t=a[i];a[i]=a[j];a[j]=t;}
puts(a);
printf("\n");}
58.下列程序段的输出结果是Hello。
main()
{charb[]="Hello,you";
b[5]=0;
printf("%s\n",b);
}
59.以下程序的输出结果是abc 。
main()
{ char s[]="abcdef";
s[3]=‘\0';
printf("%s\n",s);}
60.有以下程序
main()
{ int m[][3]={1,4,7,2,5,8,3,6,9};
int i,j,k=2;
for(i=0;i<3;i++)
{ printf("%d",m[k]); }
}
执行后输出结果是 3 6 9。
61.以下程序运行后的输出结果是__24____。
main()
{intp[7]={11,13,14,15,16,17,18};
inti=0,j=0;
while(i<7&&p%2==1)j+=p[i++];
printf("%d\n",j);
}
62.以下程序运行后的输出结果是_92___。
main()
{inta[4][4]={{1,2,3,4},{5,6,7,8},{11,12,13,14},{15,16,17,18}};
inti=0,j=0,s=0;
while(i++<4)
{
if(i==2||i==4)continue;
j=0;
do{s+=a[j];j++;}while(j<4);
}
printf("%d\n",s);
}
63.以下程序的输出结果是30 。
main()
{int a[3][3]={{1,2,9},{3,4,8},{5,6,7}},i,s=0;
for(i=0;i<3;i++) s+=a[i][i]+a[i][3-i-1];
printf("%d\n",s);
}
64.一个3×20的整数数组,要求输出该数组中的最小值,并将其行号和列号输出。
(10分)
65.有一个3×4的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。
66.从字符串中删除指定的字符。
同一字母的大小写按不同字符处理。
例如:
若程序执行时,输入字符串为:
turbocandBorlandc++,从键盘上输入字符:
n,则输出后变为:
t