C语言课程的复习题2选择题Word文档下载推荐.docx
《C语言课程的复习题2选择题Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C语言课程的复习题2选择题Word文档下载推荐.docx(61页珍藏版)》请在冰点文库上搜索。
j=&
i;
k=&
j;
printf(“%d\n”,**k);
上述程序的输出结果是
A)运行错误
B)100
C)i的地址
D)j的地址
608.若有定义:
inta[10],*p=a;
则p+5表示
A)元素a[5]的地址
B)元素a[5]的值
C)元素a[6]的地址
D)元素a[6]的值
609.若已定义:
inta[9],*p=a;
并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是
A)p+1
B)a+1
C)&
a[1]
D)p
610.若有定义:
inta[10];
则数组a中首元素的地址可表示为
A)a
a
D)&
611.请阅读程序:
inta[]={2,4,6,8};
{inti;
int*p=a;
for(i=0;
i<
4;
i++)a[i]=*p++;
printf(“%d\n”,a[2]);
上面程序的输出结果是
A)6
B)8
C)4
D)2
612.下面程序段的运行结果是
char*p=”%d,a=%d,b=%d\n”;
inta=123,b=10,c;
c=a%b;
p+=3;
printf(p,c,a,b);
A)3,a=123,b=10
B)a=3,b=123
C)a=123,b=10
D)以上结果都不对
613.以下程序的运行结果是
#include“stdio.h”
{inta[]={1,2,3,4,5,6,7,8,9,10,11,12};
int*p=a+5,*q;
*q=*(p+5);
printf(“%d%d\n”,*p,*q);
A)运行后报错
B)611
C)610
D)55
614.阅读程序:
{inta[10]={1,2,3,4,5,6,7,8,9,0},*p;
p=a;
printf(“%x\n”,p);
printf(“%x\n”,p+9);
该程序有两个printf语句,如果第一个printf语句输出的是194,则第二个printf语句输出结果是
A)203
B)204
C)1a4
D)1a6
615.以下程序的输出结果是
{chara[10]={'
1'
'
2'
3'
4'
5'
6'
7'
8'
'
9'
0},*p;
/*0即'
\0'
*/
inti;
i=8;
p=a+i;
printf(“%s\n”,p-3);
B)6789
C)'
D)789
616.已知指针p的指向如下图所示,则执行语句*--p;
后*p的值是
a[0]a[1]pa[2]a[3]a[4]
┌──┬──┬──┬──┬──┐
│10│20│30│40│50│
└──┴──┴──┴──┴──┘
A)30
B)20
C)19
D)29
617.下列程序的输出结果是
{inta[5]={2,4,6,8,10},*p,**k;
p;
printf(“%d”,*(p++));
A)44
B)22
C)24
D)46
C
618.以下程序段给数组所有的元素输入数据,请选择正确答案填入。
{inta[10],i=0;
while(i<
10)scanf(“%d”,______);
……}
A)a+(i++)
B)&
a[i+1]
C)a+i
a[++i]
619.设有以下语句,则______不是对a数组元素的正确引用,其中0≤i<10。
inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;
A)a[p-a]
B)*(&
a[i])
C)p[i]
D)*(*(a+i))
620.执行以下程序后,y的值是
{inta[]={2,4,6,8,10};
inty=1,x,*p;
p=&
a[1];
for(x=0;
x<
3;
x++)
y+=*(p+x);
printf(“%d\n”,y);
A)17
B)18
D)20
621.若有以下的说明和语句,则在执行for语句后,*(pt[1])+2)表示的数组元素是
intt[3][3],*pt[3],k;
for(k=0;
k<
k)pt[k]=&
t[k][0];
A)t[2][0]
B)t[2][2]
C)t[l][2]
D)t[2][l]
622.以下程序的输出结果是
{inti,x[3][3]={9,8,7,6,5,4,3,2,
1},*p=&
x[1][1];
i+=2)printf(“%d”,p[i]);
A)52
B)51
C)53
D)97
623.若有下面的程序片段:
inta[12]={0};
*p[3],**pp,i;
i++)
p[i]=&
a[i*4];
pp=p;
则对数组元素的错误引用是
A)pp[0][1]
B)a[10]
C)p[3][1]
D)*(*(p+2)+2
624.下列程序执行后的输出结果是
{inta[3][3],*p,i;
a[0][0];
9;
i++)p[i]=i+1;
printf("
%d\n"
a[1][2]);
A)3
B)6
C)9
D)随机数
625.若已定义:
inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;
其中0≤i≤9,则对a数组元素不正确的引用为
D)a[10]
626.下面程序把数组元素中的最大值放入a[0]中。
则在if语句中的条件表达式应该是
{inta[10]={6,7,2,9,1,10,5,8,4,3},*p=a,i;
10;
i++,p++)
if(____)*a=*p;
printf(“%d”,*a);
A)p>
B)*p>
a[0]
C)*p>
*a[0]
D)*p[0]>
627.下面程序段中,for循环的执行次数是
char*s=”\ta\018b\bc”;
for(;
*s!
=’\0’;
s++)printf(“*“);
A)9
B)5
C)6
D)7
628.下面程序段的运行结果是
char*s=”12345”;
s+=2;
printf(“%d”,s);
A)345
B)字符’3’
C)字符’3’的地址
D)无确定的输出结果
629.指针s所指字符串的长度为
Char*s=“\r\”Name\\Address\n”;
A)19
B)15
C)18
D)说明不合法
630.阅读程序片段:
charstr[]=“ABCD”,*p=str;
printf(“%d\n”,*(p+4));
上面程序片段的输出结果是
A)68
B)0
C)字符‘D’的地址
D)不确定的值
631.请阅读程序:
string.h>
{char*s1=“AbCdEf”,*s2=“aB”;
s1++;
s2++;
printf(“%d\n”,strcmp(s1,s2));
A)正数
B)负数
C)零
632.以下程序的输出结果是
#include“string.h”
{char*p1,*p2,str[50]=“ABCDEFG”;
p1=“abcd”;
p2=“efgh”;
strcpy(str+1,p2+1);
strcpy(str+3,p1+3);
printf(“%s”,str);
A)AfghdEFG
B)Abfhd
C)Afghd
D)Afgd
633.以下程序运行后,输出结果是
{staticchara[]=”ABCDEFGH”,b[]=”abCDefGh”;
charp1,p2;
intk;
p1=a;
p2=b;
=7;
k++)
if(*(p1+k)==*(p2+k))
printf(“%c”,*(p1+k));
printf(“\n”);
A)ABCDEFG
B)CDG
C)abcdefgh
D)abCDefGh
634.设有如下程序段:
charstr[]=“Hello”;
char*ptr;
ptr=str;
执行完上面的程序段后,*(ptr+5)的值为
A)‘o’
B)‘\0’
C)不确定的值
D)‘o’的地址
635.设有以下语句:
charstrl[]=“string”,str2[8],*str3,*str4=“string”;
则______不是对库函数strcpy的正确调用,此库函数用来复制字符串。
A)strcpy(str1,“HELLO1”);
B)strcpy(str2,“HELLO2”);
C)strcpy(str3,“HELLO3”);
D)strcpy(str4,“HELLO4”);
636.以下程序运行后,输出结果是
{char*s=”abcde”;
printf(”%ld\n”,s);
A)cde
B)字符c的ASCII码值
C)字符c的地址
D)出错
答案:
637.以下程序段中,for循环的执行次数是
char*s=”\tab\101cd”;
s++)printf(“*”);
A)4次
B)5次
C)6次
D)7次
638.若有以下定义和语句:
char*s1=”12345”,*s2=”1234”;
printf(“%d\n”,strlen(strcpy(s1,s2)));
则输出结果是
D)10
639.设已有定义:
char*st="
howareyou"
;
下列程序段中正确的是
A)chara[11],*p;
strcpy(p=a+1,&
st[4]);
B)chara[11];
strcpy(++a,st);
C)chara[11];
strcpy(a,st);
D)chara[],*p;
strcpy(p=&
a[1],st+2);
640.下面程序段的运行结果是
char*p=“abcdefgh”;
printf(“%d\n”,strlen(strcpy(p,“ABCD”)));
A)8
B)12
641.下面各语句行中,能正确进行赋字符串操作的语句行是
A)charst[4][5]={“ABCDE”};
B)chars[5]={‘A’,‘B’,‘C’,‘D’,‘E’};
s=“ABCDE”;
scanf(“%s”,s);
642.下列程序的输出结果是
{char*p1,*p2,str[50]=“xyz”;
p2=“ABCD”;
strcpy(str+2,strcat(p1+2,p2+1));
A)xyabcAB
B)abcABz
C)ABabcz
D)xycdBCD
643.设有以下语句:
charstr[4][12]={“aaa”,“bbbb”,“ccccc”,“dddddd”},
*strp[4];
i++)strp[i]=str[i];
______不是对字符串的正确引用。
A)strp
B)str[k]
C)strp[k]
D)*strp
644.以下程序的输出结果是
{charch[3][4]={"
123"
"
456"
78"
},*p[3];
i++)p[i]=ch[i];
i++)printf("
%s"
p[i]);
A)123456780
B)123456780
C)12345678
D)147
645.若有如下定义:
inta[3][4],*p;
执行p=a[0];
之后,p+1表示
A)&
a[1][0]
a[0][1]
646.设有如下定义:
inta[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};
int(*prt)[3]=a,*p=a[0];
则下列能够正确表示数组元素[1][2]的表达式是
A)*((*prt+1)[2])
B)*(*(p+5))
C)(*prt+1)+2
D)*(*(a+1)+2)
647.若有以下说明和语句,请选出哪个是对C数组元素的正确引用
intc[4][5],(*cp)[5];
cp=c;
A)cp+1
B)*(cp+3)
C)*(cp+1)+3
D)*(*cp+2)
648.设有说明int(*ptr)[M];
其中的识符ptr是
A)M个指向整型变量的指针
B)指向M个整型变量的函数指针
C)一个指向具有M个整型元素的一维数组的指针
D)具有M个指针元素的一维指针数组,每个元素都只能指向整型量
649.下列程序的输出结果是
{charch[2][5]={“6934”,“8254”},*p[2];
inti,j,s=0;
2;
p[i]=ch[i];
for(j=0;
p[i][j]>
‘0’&
&
p[i][j]<
=‘9’;
j+=2)
s=10*s+p[i][j]-‘0’;
printf(“%d\n”,s);
A)6385
B)69825
C)63825
D)693825
650.以下程序运行后,输出结果是
{charch[2][5]={"
693"
,"
825"
},*p[2];
longinti,j,s=0;
for(j=0;
='
0'
s=10*s+p[i][j]-'
%ld\n"
s);
C)33
651.以下程序的输出结果为
{char*alpha[6]={“ABCD”,“EFGH”,“IJKL”,“MNOP”,“QRST”,
“UVWX”};
char**p;
p=alpha;
printf(“%s”,p[i]);
A)ABCDEFGHIJKL
B)ABCD
C)ABCDEFGHIJKLMNOP
D)AEIM
652.以下程序运行后输出结果是
ss(char*s)
{char*p=s;
while(*p)p++;
return(p-s);
{char*a=”abded”;
intI;
I=ss(a);
printf(“%d\n”,I);
B)7
D)5
653.以下程序运行后,输出结果是
#include<
fun(char*w,intn)
{chart,*s1,*s2;
s1=w;
s2=w+n-1;
while(s1<
s2)
{t=*s1++;
*s1=*s2--;
*s2=t;
}
main()
{char*p=”1234567”;
fun(p,strlen(p));
puts(p);
A)1234567
B)7654321
C)1711717
D)7177171
654.若有以下调用语句,则不正确的fun函数的首部是
{…
inta[50],n;
…
fun(n,&
a[9]);
…}
A)voidfun(intm,intx[])
B)voidfun(ints,inth[41])
C)voidfun(intp,int*s)
D)voidfun(intn,inta)
655.下列程序的输出结果是
intb=2;
intfunc(int*a)
{b+=*a;
return(b);
{inta=2,res=2;
res+=func(&
a);
res);
C)8
656.以下程序调用findmax函数求数组中值最大的元素在数组中的下标,请选择填空。
findmax(s,t,k)
int*s,t,*k;
{intp;
for(p=0,*k=p;
p<
t;
p++)
if(s[p]>
s[*k])______;
{inta[10],i,k;
i++)scanf(“%d”,&
a[i]);
findmax(a,10,&
k);
printf(“%d,%d\n”,k,a[k]);
A)k=p
B)*k=p-s
C)k=p-s
D)*k=p
657.下面函数的功能是
sss(s,t)
char*s,*t;
{while((*s)&
(*t)&
(*t++==*s++));
return(*s-*t);
A)求字符串长度
B)比较两个字符串的大小
C)将字符串s复制到字符串t中
D)将字符串s接续到字符串t中
658.请阅读程序:
charfun(char*c)
{if(*c<
=‘Z’&
*c>
=‘A’)*c-=‘A’-‘a’;
return*c;
{chars[81],*p=s;
gets(s);
while(*p)
{*p=fun(p);
putchar(*p);
p++;
putchar(‘\n’);
若运行时从键盘上输入OPENTHEDOOR<
CR>
(<
表示回车),则上面程序的输出结果是
A)oPENtHEdOOR
B)openthedoor
C)OPENTHEDOOR
D)OpenTheDoor
659.请阅读程序:
voidfun(int*s)
{staticintj=0;
do
s[j]+=s[j+1];
while(++j<
2);
{intk,a[10]={1,2,3,4,5};
for(k=1;
k++)fun(a);
5;
k++)printf(“%d”,a[k]);
A)34756
B)23445
C)35745
D)12345
660.设有如下定义:
char*aa[2]={“abcd”,“ABCD”};
则以下说法中正确的是
A)aa数组元素的值分别是“abcd”和“ABCD”
B)aa是指针变量,它指向含有两个数组元素的字符型一维数组
C)aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址
D)aa数组的两个元素中各自存放了字符‘a’和‘A’的地址
661.以下程序的输出结果是
#include“ctype.h”
space(char*str)
{inti,t;
charts[81];
for(i=0,t=0;
str[i]!
=‘0’;
i+=2)
if(!
isspace(*str+i)&
(*(str+i)!
=‘a’))
ts[t++]=toupper(str[i]);
ts[t]=‘\0’;
strcpy(str,ts);
{chars[81]={“abcdefg”};
space(s);
puts(s);
A)abcdeg
B)bcde
C)ABCDE
D)BCDE