C语言第十章复习题不含答案.docx
《C语言第十章复习题不含答案.docx》由会员分享,可在线阅读,更多相关《C语言第十章复习题不含答案.docx(18页珍藏版)》请在冰豆网上搜索。
C语言第十章复习题不含答案
1.若有说明:
inti,j=7,*p=&i;,则与i=j;等价的语句是()。
(A)i=*p;(B)*p=*&j;(C)i=&j;(D)i=**p;
2.若有以下说明:
inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
则数值为6的表达式是()。
(A)*p+6(B)*(p+6)(C)*p+=5(D)p+5
3.若有以下定义和语句:
char*s1="12345",*s2="1234";
printf("%d\n",strlen(strcpy(s1,s2)));
则输出结果是()。
(A)4(B)5(C)9(D)10
4.以下不能正确进行字符串赋初值的语句是()。
(A)charstr[5]="good!
";(B)charstr[]="good!
";
(C)char*str="good!
";(D)charstr[5]={‘g',‘o',‘o',‘d'};
5.若定义:
inta=511,*b=&a;,则printf("%d\n",*b);的输出结果为()。
(A)无确定值(B)a的地址(C)512(D)511
6.下面程序的输出是()。
(A)3(B)4(C)1(D)2
main()
{inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
printf("%d\n",*(p+2));}
7.若有说明:
intn=2,*p=&n,*q=p;,则以下非法的赋值语句是()。
(A)p=q;(B)*p=*q;(C)n=*q;(D)p=n;
8.有如下说明
inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
则数值为9的表达式是()。
(A)*p+9(B)*(p+8)(C)*p+=9(D)p+8
9.若有以下定义:
chars[20]="programming",*ps=s;
则不能代表字符o的表达式是()。
(A)ps+2(B)s[2](C)ps[2](D)*(ps+2)
10.若有以下定义和语句:
char*s1="12345",*s2="1234";
printf("%d\n",strlen(strcpy(s1,s2)));
则输出结果是()。
(A)4(B)5(C)9(D)10
11.若有以下定义和语句:
inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
则不能表示a数组元素的表达式是()。
(A)*p(B)a[10](C)*a(D)a[p-a]
12.下面程序的输出是()。
main()
{char*s="121";
intk=0,a=0,b=0;
do
{k++;
if(k%2==0){a=a+s[k]-'0';continue;}
b=b+s[k]-'0';a=a+s[k]-'0';
}while(s[k+1]);
printf("k=%da=%db=%d\n",k,a,b);
(A)k=3a=2b=3(B)k=3a=3b=2
(C)k=2a=3b=2(D)k=2a=2b=3
13.若有以下的定义:
inta[]={1,2,3,4,5,6,7,8,9,10},*p=a;
则值为3的表达式是()。
(A)p+=2,*(p++)(B)p+=2,*++p(C)p+=3,*p++(D)p+=2,++*p
14.设有如下定义:
intarr[]={6,7,8,9,10};
int*ptr;
则下列程序段的输出结果为()。
ptr=arr;
*(ptr+2)+=2;
printf("%d,%d\n",*ptr,*(ptr+2));
(A)8,10(B)6,8(C)7,9(D)6,10
15.执行以下程序段后,m的值为()。
inta[2][3]={{1,2,3},{4,5,6}};
intm,*p;
p=&a[0][0];
m=(*p)*(*(p+2))*(*(p+4));
(A)15(B)14(C)13(D)12
16.有以下程序段
chararr[]="ABCDE";
char*ptr;
for(ptr=arr;ptrprintf("%s\n",ptr);
输出结果是()。
(A)ABCD(B)A(C)E(D)ABCDE
BDBCDE
CCCDE
DBDE
EAE
17.有以下程序
main()
{inta[]={1,2,3,4,5,6,7,8,9,10,11,12,},*p=a+5,*q=NULL;
*q=*(p+5);
printf("%d%d\n",*p,*q);
}
程序运行后的输出结果是()。
(A)运行后报错(B)66C)611(D)510
18.以下程序运行后,输出结果是()。
main()
{char*s="abcde";
s+=2;
printf("%ld\n",s);
}
(A)cde(B)字符c的ASCII码值(C)字符c的地址(D)出错
19.以下程序运行后,输出结果是()。
#include
ss(char*s)
{char*p=s;
while(*p)p++;
return(p-s);
}
main()
{char*a="abded";
inti;
i=ss(a);
printf("%d\n",i);
}
(A)8(B)7(C)6(D)5
20.有以下程序
main()
{inta=7,b=8,*p,*q,*r;
p=&a;q=&b;
r=p;p=q;q=r;
printf("%d,%d,%d,%d\n",*p,*q,a,b);
}
程序运行后的输出结果是()。
(A)8,7,8,7(B)7,8,7,8(C)8,7,7,8(D)7,8,8,7
21.以下程序运行后,如果从键盘上输入:
book<回车>
book<空格><回车>
则输出的结果是(B)。
#include
main()
{chara1[80],a2[80],*s1=a1,*s2=a2;
gets(s1);gets(s2);
if(!
strcmp(s1,s2))printf("*");
elseprintf("#");
printf("%d/n",strlen(strcat(s1,s2)));
}
(A)*8(B)#9(C)#6(D)*9
22.若已定义:
inta[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是()。
(A)p+1(B)a+1(C)a++(D)++p
23.下面程序把数组元素中的最大值放入a[0]中,则在if语句中的条件表达式应该是()。
(A)p>a(B)*p>a[0](C)*p>*a[0](D)*p[0]>*a[0]
main()
{inta[10]={6,7,2,9,1,10,5,8,4,3},*p=a,i;
for(i=0;i<10;i++,p++)
if(________)*a=*p;
printf("%d",*a);
}
24.以下程序的输出结果是()。
(A)123456780(B)123456780(C)12345678(D)147
main()
{charch[3][4]={"123","456","78"},*p[3];inti;
for(i=0;i<3;i++)p[i]=ch[i];
for(i=0;i<3;i++)printf("%s",p[i]);
}
25.以下程序的输出结果是()。
(A)AfghdEFG(B)Abfhd(C)Afghd(D)Afgd
#include
main()
{char*p1,*p2,str[50]="ABCDEFG";
p1="abcd";p2="efgh";
strcpy(str+1,p2+1);strcpy(str+3,p1+3);
printf("%s",str);
}
26.若有以下定义和语句:
doubler=99,*p=&r;
*p=r;
则以下正确的叙述是()。
(A)以下两处的*p含义相同,都说明给指针变量p赋值
(B)在"doubler=99,*p=&r;"中,把r的地址赋值给了p所指的存储单元
(C)语句"*p=r;"把变量r的值赋给指针变量p
(D)语句"*p=r;"取变量r的值放回p中
27.下列程序执行后的输出结果是(小数点后只写一位)()。
(A)666.06.0(B)666.76.7
(C)666.06.7(D)666.76.0
main()
{doubled;floatf;longl;inti;
i=f=l=d=20/3;
printf("%d%ld%f%f\n",i,l,f,d);
}
28.若已定义:
inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;
其中0≤i≤9,则对a数组元素不正确的引用是()。
(A)a[p-a](B)*(&a[i])(C)p[i](D)a[10]
29.下列程序执行后的输出结果是()。
(A)3(B)6(C)9(D)随机数
main()
{
inta[3][3],*p,i;
p=&a[0][0];
for(i=0;i<9;i++)p[i]=i+1;
printf("%d\n",a[1][2]);
}
30.下列程序的输出结果是()。
(A)4(B)6(C)8(D)10
intb=2;
intfunc(int*a)
{b+=*a;
return(b);}
main()
{
inta=2,res=2;
res+=func(&a);
printf("%d\n",res);
}
31.有如下程序段
int*p,a=10,b=1;
p=&a;a=*p+b;
执行该程序段后,a的值为()。
(A)12(B)11(C)10(D)编译出错
32.对于基类型相同的两个指针变量之间,不能进行的运算是()。
(A)<(B)=(C)+(D)-
33.有如下说明
inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
则数值为9的表达式是()。
(A)*p+9(B)*(p+8)(C)*p+=9(D)p+8
34.有如下程序
main()
{intn[5]={0,0,0},i,k=2;
for(i=0;i;printf(“%d\n”,n[k]);
)
该程序的输出结果是()。
(A)不确定的值(B)2(C)1(D)0
35.有以下程序
point(char*p)
{p+=3;}
main()
{charb[4]={'a','b','c','d'},*p=b;
point(p);printf("%c\n",*p);
}
程序运行后的输出结果是()。
(A)a(B)b(C)c(D)d
36.若有说明:
inti,j=2,*p=&i;,则能完成i=j;赋值功能的语句是()。
(A)i=*p;(B)p*=*&j;(C)i=&j;(D)i=**p;
37.以下定义语句中,错误的是()。
(A)inta[]={1,2};(B)char*a[3];
(C)chars[10]="test";(D)intn=5,a[n];
38.以下选项中,不能正确赋值的是()。
(A)chars1[10];s1="Ctest";
(B)chars2[]={'C','t','e','s','t'};
(C)chars3[20]="Ctest";
(D)char*s4="Ctest\n";
39.以下程序调用findmax函数返回数组中的最大值
findmax(int*a,intn)
{int*p,*s;
for(p=a,s=a;p-aif()s=p;
return(*s);
}
main()
{intx[5]={12,21,13,6,18};
printf("%d\n",findmax(x,5));
}
在下划线处应填入的是()。
(A)p>s(B)*p>*s(C)a[p]>a[s](D)p-a>p-s
40.若有说明语句:
inta,b,c,*d=&c;,则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是()。
(A)scanf("%d%d%d",&a,&b,d);(B)scanf("%d%d%d",&a,&b,&d);
(C)scanf("%d%d%d",a,b,d);(D)scanf("%d%d%d",a,b,*d);
41.有以下程序
main()
{chars[]="159",*p;
p=s;
printf("%c",*p++);printf("%c",*p++);
}
程序运行后的输出结果是()。
(A)15(B)16(C)12(D)59
42.若定义:
inta=511,*b=&a;,则printf("%d\n",*b);的输出结果为()。
(A)无确定值(B)a的地址(C)512(D)511
43.以下不能正确进行字符串赋初值的语句是()。
(A)charstr[5]="good!
";(B)charstr[]="good!
";
(C)char*str="good!
";(D)charstr[5]={‘g',‘o',‘o',‘d'};
44.若有说明:
intn=2,*p=&n,*q=p;,则以下非法的赋值语句是()。
(A)p=q;(B)*p=*q;(C)n=*q;(D)p=n;
45.有以下程序
#include
main()
{char*p=“abcde\Ofghjik\0”;
printf(“%d\n”,strlen(p));
}
程序运行后的输出结果是()。
(A)12(B)15(C)6(D)5
46.若有以下定义和语句
#include
inta=4,b=3,*p,*q,*w;
p=&a;q=&b;w=q;q=NULL;
则以下选项中错误的语句是()。
(A)*q=0;(B)w=p;(C)*p=a;(D)*p=*w;
47.有以下程序
main()
{char*s[]={"one","two","three"},*p;
p=s[1];
printf("%c,%s\n",*(p+1),s[0]);
}
执行后输出结果是()。
(A)n,two(B)t,one(C)w,one(D)o,two
48.有以下程序
main()
{intx[8]={8,7,6,5,0,0},*s;
s=x+3;
printf("%d\n",s[2]);
}
执行后输出结果是()。
(A)随机值(B)0(C)5(D)6
49.有以下程序
voidfun(int*a,inti,intj)
{intt;
if(i{t=a;a=a[j];a[j]=t;
fun(a,++i,--j);
}
}
main()
{inta[]={1,2,3,4,5,6},i;
fun(a,0,5);
for(i=0;i<6;i++)
printf("%d",a);
}
执行后的输出结果是()。
(A)654321(B)432156(C)456123(D)123456
50.下列选项中正确的语句组是()。
(A)chars[8];s={"Beijing"};(B)char*s;s={"Beijing"};
(C)chars[8];s="Beijing";(D)char*s;s="Beijing";
51.已定义以下函数
fun(int*p)
{return*p;}
该函数的返回值是()。
(A)不确定的值(B)形参p中存放的值
(C)形参p所指存储单元中的值(D)形参p的地址值
52.有以下程序
#include
main()
{charstr[][20]={"Hello","Beijing"},*p=str;
printf("%d\n",strlen(p+20));
}
程序运行后的输出结果是()。
(A)0(B)5(C)7(D)20
53.已定义以下函数
fun(char*p2,char*p1)
{while((*p2=*p1)!
='\0'){p1++;p2++;}}
函数的功能是()。
(A)将p1所指字符串复制到p2所指内存空间
(B)将p1所指字符串的地址赋给指针p2
(C)对p1和p2两个指针所指字符串进行比较
(D)检查p1和p2两个指针所指字符串中是否有'\0'
54.设有定义:
inta,*pa=&a;以下scanf语句中能正确为变量a读入数据的是()。
(A)scanf(“%d”,pa)(B)scanf(“%d”,a)
(C)scanf(“%d”,&pa)(D)scanf(“%d”,*pa)
55.设有定义:
intn=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是()。
(A)p=1;(B)*q=2;(C)q=p;(D)*p=5;
56.有以下程序段
inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;
b=p[5];
b中的值是()。
(A)5(B)6(C)8(D)9
57.有以下程序
voidsum(int*a)
{a[0]=a[1];}
main()
{intaa[10]={1,2,3,4,5,6,7,8,9,10},i;
for(i=2;i>=0;i--)&nb
sp;sum(&aa);
printf(“%d\n”,aa[0]);
}
执行后的输出结果是()。
(A)4(B)3(C)2(D)1
58.有以下定义
#include
chara[10],*b=a;
不能给数组a输入字符串的语句是()。
(A)gets(a)(B)gets(a[0])(C)gets(&a[0]);(D)gets(b)
59.以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是()。
(A)chars[10]=”abcdefg”;(B)chart[]=”abcdefg”,*s=t;
(C)chars[10];s=”abcdefg”;(D)chars[10];strcpy(s,”abcdefg”);
60.有以下程序
inta=2;
intf(int*a)
{return(*a)++;}
main()
{ints=0;
{inta=5;
s+=f(&a)
}
s+=f(&a)
printf(“%d\n”,s);
}
执行后输出结果是()。
(A)10(B)9(C)7(D)8
61.若有以下说明和语句,intc[4][5],(*p)[5];p=c;能正确引用c数组元素的是()。
(A)p+1(B)*(p+3)(C)*(p+1)+3(D)*(p[0]+2])
62.有以下程序
main()
{inta=7,b=8,*p,*q,*r;
p=&a;q=&b;
r=p;p=q;q=r;
printf("%d,%d,%d,%d\n",*p,"q,a,b);
}
程序运行后的输出结果是()。
(A)8,7,8,7(B)7,8,7,8(C)8,7,7,8(D)7,8,8,7
63.有以下程序
#include
main()
{inta[]={1,2,3,4,5,6,7,8,9,10,11,12,},*p=a+5,*q=NULL;
*q=*(p+5);
printf("%d%d\n",*p,*1);
}
程序运行后的输出结果是()。
(A)运行后报错(B)66(C)611(D)510
64.有以下定义和语句
inta[3][2]={1,2,3,4,5,6,},*p[3];
p[0]=a[1];
则*p[0]+1)所代表的数组元素是()。
(A)a[0][1](B)a[1][0](C)a[1][1](D)a[1][2]
65.有以下程序
main()
{charstr[][10]={"China","Beijing"},*p=str;
printf("%s\n",p+10);
}
程序运行后的输出结果是()。
(A)China(B)Bejing(C)ng(D)ing
66.有以下程序
main()
{inta[3][3],*p,i;
p=&a[0][0];
for(i=0;i<9;i++)p=i;
for(i=0;i<3;i++)printf("%d",a[1]);
}
程序运行后的输出结果是()。
(A)012(B)123(C)234(D)345
67.以下语句或语句组中,能正确进行字符串赋值的是()。
(A)char*sp;*sp="right!
";(B)chars[10];s="right!
";
(C)chars[10];*s="right!
";(D)char*sp="right!
";
68.有以下程序
main()
{chars[]="159",*p;
p=s;
printf("%c",*p+