第九十章c语言复习试题.docx

上传人:b****8 文档编号:28635555 上传时间:2023-07-19 格式:DOCX 页数:116 大小:64.15KB
下载 相关 举报
第九十章c语言复习试题.docx_第1页
第1页 / 共116页
第九十章c语言复习试题.docx_第2页
第2页 / 共116页
第九十章c语言复习试题.docx_第3页
第3页 / 共116页
第九十章c语言复习试题.docx_第4页
第4页 / 共116页
第九十章c语言复习试题.docx_第5页
第5页 / 共116页
点击查看更多>>
下载资源
资源描述

第九十章c语言复习试题.docx

《第九十章c语言复习试题.docx》由会员分享,可在线阅读,更多相关《第九十章c语言复习试题.docx(116页珍藏版)》请在冰豆网上搜索。

第九十章c语言复习试题.docx

第九十章c语言复习试题

第九章指针

一、单项选择题

1.变量的指针,其含义是指该变量的

A)值B)名C)地址D)名和值

2.已知指针P的指向如图所示,则表达式*++p的值是

a[0]

a[1]

a[2]

a[3]

a[4]

10

20

30

40

50

P↑

A20B30C21D31

3.下面程序应能对两个整型变量的值进行交换。

以下正确的说法是

main()

{inta=10,b=20;

swap(a,b);

prinif("a=%d,b=%d\n",a,b);

}

swap(intp,intq)

{intt;

t=p;p=q;q=t;

}

A)该程序完全正确

B)该程序有错,只要将语句swap(a,b);中的参数改为&a,&b即可

C)该程序有错,只要将swap()函数中的形参p和q以及t均定义为指针即可

D)以上说法都不正确

4.以下对指针变量进行操作的语句,正确的选项是

A)int*p,*q;q=p;B)inta,*p,*q;q=&a;p=*q;

C)inta=b=0,*p;p=&a;b=*p;D)inta=20,*p,*q=&a;p=q;

5.已有定义intk=2,*ptr1,*ptr2;且ptrl和Ptr2均已指向变量k,下面能正确执行的赋值语句是

A)k=*ptrl+*ptr2;B)ptr2=k

C)*ptrl=ptr2;D)ptrl=*ptr2;

6.若已定义inta=5;下面对

(1)、

(2)两个语句的正确解释是

(1)int*p=&a;

(2)*p=a;

A)语句

(1)和

(2)中的*P含义相同,都表示给指针变量p赋值

B)语句

(1)和语句

(2)的执行结果,都是把变量a的地址值赋给指针变量p

C)语句

(1)在对p进行说明的同时进行初始化,使p指向a,语句

(2)将变量a的值赋给指针变量p

D)语句

(1)在对p进行说明的同时进行初始化,使p指向a,语句

(2)将变量a的值赋于*p

7.若有语句int*p,a=4;和p=&a;下面均代表变量值的一组选项是

A)a,p,*&aB)&*a,&a,*p

C)*&p,*p,&aD)*&a,*p,a

8.若有说明:

int*p1,*p2,m=5,n=9;以下均是正确赋值语句的选项是

A)p1=&m;p2=&p1;B)p1=&m;p2=&n;*p1=*p2;

C)p1=&m;p2=p1D)p1=&m;*p2=*p1;

9.下面判断正确的是

A)char*a="china";等价于char*a;*a="china"

B)charstr[10]={"china"};等价于charstr[10];str[]={"china"};

C)char*s="china";等价于char*s;s="china";

D)charc[4]="abc",d[4]="abc";等价于charc[4]=d[4]="abc"

10.设char*s="\tabc\017\’\n";则指针变量s指向的字符串所占的字节数是

A)9B)8C)6D7

11.下面能正确进行字符串赋值操作的是

A)chars[5]=("ABCDE");B)chars[5]={’A’,’B’,’C’,’D’,’E’};

C)char*s;s="ABCDE";D)char*s;scanf("%s",s);

12.下面程序段的运行结果是

char*s="abcde";

s+=2;printf("%c",*s);

A)cdeB)cC)字符c’的地址D)无确定的输出结果

13.下面程序段的运行结果是

char*format="%s,a=%d,b=%d\n";

inta=1,b=3;

a+=b;

printf(format,"a+=b",a,b);

A)"a+=b",4,3B)format,"a+=b",4,3

C)a+=b,a=4,b=3D)“a+=b”,a=4,b=3

14.以下不能正确进行字符串赋初值的语句是

A)charstr[5]="good!

";B)charstr[]="good!

";

C)char*str="good!

";D)charstr[5]={‘g',‘o',‘o',‘d'};

15.若有以下定义和语句:

ints[4][5],(*ps)[5];

ps=s;

则对s数组元素的正确引用形式是

A)ps+1B)*(ps+3)C)ps[0][2]D)*(ps+1)+3

16.在声明语句:

int*f();中,标识符f代表的是

A)一个用于指向整型数据的指针变量

B)一个用于指向一维数组的行指针

C)一个用于指向函数的指针变量

D)一个返回值为指针型的函数名

17.若有以下说明和定义

fun(int*c){}

main()

{int(*a)()=fun,*b(),w[10],c;

}

在必要的赋值之后,对fun函数的正确调用语句是

A)a=a(w);B)(*a)(&c);C)b=*b(w);D)fun(b);

18.有如下说明

inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;

则数值为9的表达式是

A)*p+9B)*(p+8)C)*p+=9D)p+8

19.若有以下调用语句,则不正确的fun函数的首部是

main()

{…

inta[50],n;

fun(n,&a[9]);

}

Avoidfun(intm,intx[])Bvoidfun(ints,inth[41])

Cvoidfun(intp,int*s)Dvoidfun(intn,inta)

20设已有定义:

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);

21.设有如下定义语句:

intx[6]={2,4,6,8,5,7},*p=x,i;

要求依次输出x数组6个元素中的值,不能完成此操作的语句是

A)for(i=0;i<6;i++)printf("%2d",*(p++));

B)for(i=0;i<6;i++)printf("%2d",*(p+i));

C)for(i=0;i<6;i++)printf("%2d",*p++);

D)for(i=0;i<6;i++)printf("%2d",(*p)++);

22.以下程序程序运行后的输出结果是

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)611D)510

23.有以下定义和语句:

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]

24.已有定义:

inti,a[10],*p;,则合法的赋值语句是

A)p=100;B)p=a[5];C)p=a[2]+2;D)p=a+2;

25.程序中对fun函数有如下说明

void*fun();

此说明的含义是:

A)fun函数无返回值

B)fun函数的返回值可以是任意的数据类型

C)fun函数的返回值是无值型的指针类型

D)指针fun指向一个函数,该函数无返回值

26.以下与库函数strcpy(char*p1,char*p2)功能不相等的程序段是

A)strcpyl(char*p1,char*p2){while((p1++=p2++)!

='\0');}

B)strcpy2(char*pl,char*p2){while((*p1=*p2)!

=’\0’)pl++,p2++;}

C)strcpy3(char*pl,char*p2){while((*p1++=*p2++);)

D)strcpy4(char*p1,char*p2){whi1e(*p2)*pl++=*p2++;}

27.下面程序段的运行结果是

chars[6];s="abcd";printf("%s\n",s);

A)abcdB)"abcd"C)abcD)编译出错

28.若有以下定义,则对c数组元素地址的正确引用是C

intc[5],*p=c;

A)p+5B)*c+1C)&c[0]D)&c+1

29.若有定义:

inta[3][4];则对a数组的第i行第j列(假设i,j已正确说明并赋值)元素值的不正确引用为

A)*(*(a+i)+j)B)*(a+i)[j]C)*(a+i+j)D)*(a[i]+j)

30.若有以下定义初语句,则对a数组元素地址的不正确引用为

inta[3][4],(*p)[3];

p=a;

A)*(p+2)B)p[2]C)p[1]+1D)(p+1)+2

31.若要对a进行++运算,则a应具有下面说明

A)inta[3][2];B)char*a[]={"12","ab"};

C)char(*a)[3];D)intb[10],*a=b;

32.设有以下程序段:

chars[4][10]={"first","second","third","fourth"},*sp[4];

inti;

for(i=0;i<4;i++)sp[i]=s[i];

若k为int型变量且0<=k<4,则对字符串的正确引用是

A)spB)s[k]C)sp+kD)s+k

33.若有以下定义,则*(p+5)表示

inta[10],*p=a;

A)元素a[5]的地址B)元素a[5]的值

C)元素a[6]的地址D)元素a[6]的值

34.若有定义:

inta[4][6];则能正确表示a数组中任一元素a[i][j](0<=i<4,0<=j<6)地址的表达式是:

A)a[0]+6*j+iB)a[0]+4*j+iC)a[0]+4*i+jD)a[0]+6*i+j

35.若有以下定义和语句,则能正确表示a数组元素的表达式是

inta[10],*p1;

p1=a;

A)aB)p1+5C)*p1D)&a[5]

36.设有一个名为file1源程序,且已知命令行为:

FILE1BEIJINGSHANGHAI,则可得到以下运行结果的程序为

BEIJING

SHANGHAI

A)main(intargc,char*argv[])

{while(--argc>1)printf("%s\n",*++argv);}

B)main(intargc,char*argv[])

{while(argc-->=1)printf("%s\n",*++argv);}

C)main(intargc,char*argv[])

{while(argc-->1)printf("%s\n",*++argv);}

D)main(intargc,char*argv[])

{while(argc>1)prinif("%s\n",*++argv);}

37.若有说明:

char*lang[]={"F0RTRAN","BASIC","PASCAL","JAVA","C"};则lang[3]的值是

A)一个地址B)一个字符C)一个字符串D)一个不定值

38.已有定义int(*f)();指针f可以

A)代表函数的返回值B)表示函数返回值的类型

C)表示函数的类型D)指向函数的入口地址

39.已知:

int**p;则变量p是

A)指向int型变量的指针B)指向指针的指针

C)int型变量D)以上三种说法均不正确

40.设有以下程序段,则在main函数中使用语句是无意义的

main()min(intx,inty)

{intmin();{

inta,b,c,(*p)();……

p=min;}

……

}

A)printf(“%d\n”,min(a,b));B)c=min(a,b);

C)c=(*p)(a,b);D)p++;

41.下列函数FUN的功能是

FUN(char*ps)

{char*p;

p=ps;

while(*p++);

return(p-ps);

}

A)比较两个字符串的大小B)求字符串的长度

C)复制字符串D)以上说法都不对

42.已知指针p的指向如图所示,则表达式++*p的值是

a[0]

a[1]

a[2]

a[3]

a[4]

10

20

30

40

50

P↑

A20B30C21D31

43.已知指针p的指向如图所示,则执行语句*p++;后,*p的值是

a[0]

a[1]

a[2]

a[3]

a[4]

10

20

30

40

50

P↑

A20B30C21D31

44.已定义以下函数

intfun(int*p)

{return*p;}

fun函数返回值是

A不确定的值B一个整数

C形参p中存放的值D形参p的地址值

45.若有说明语句:

double*p,a;则能通过scanf语句正确给输入项读入数据的程序段是

A)*p=&a;scanf(“%lf”,p);B)*p=&a;scanf(“%f”,p);

C)P=&a;scanf(“%lf”,*p);D)p=&a;scanf(“%lf”,p);

46.以下语句或语句组中,能正确进行字符串赋值的是

A.char*p;*sp=”right!

”;B.chars[10];s=”right!

”;

C.chars[10];*s=”right”;D.char*sp=”right”;

47.有以下程序

Fun(char*a,char*b)

{while((*a!

=’\0’)&&(*b!

=’\0’)&&(*a==*b))

{a++;b++;

}

Return(*a-*b);

}

该函数的功能是

A计算a和b所指字符串的长度之差B将b所指字符串复制到a所制字符串中

C将b所指字符串连接到a所指字符串后面D比较a和b所指字符串大小

48.程序中若有如下说明和语句

charfun(char*);

main()

{char*s=”one”,a[5]={0},(*f1)()=fun,ch;

……

}

以下选项中对函数fun的正确调用语句是

A(*f1)(a);B*f1(*s);Cfun(&a);Dch=*f1(s)

49.若有语句:

char*line[5];,以下叙述中正却的是

A定义line是一个数组,每个数组元素是一个基类型为char的指针变量

B定义line是一个指针变量,改变量可以指向一个长度为5的字符型数组

C定义line是一个指针数组,语句中的*号称为间址运算符

D定义line是一个指向字符型的指针

50.设有定义:

intn1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是

A*p=*q;Bp=q;C*p=&n1Dp=*q;

51.设有定义:

intx=0,*p=&x;则语句printf(“%d\n”,*p);的输出结果是

A随机值B0Cx的地址Dp的地址

52.有以下程序

main()

{inta=1,b=3,c=5;

int*p1=&a,*p2=&b,*p=&c;

*p=*p1*(*p2);

printf("%d\n",c);

}

执行后的输出结果是

A1B2C3D4

53.若有定义:

intw[3][5];,则以下不能正确表示该数组元素的表达式是

A*(*w+3)B*(w+1)[4]C*(*(w+1))D*(&w[0][0]+1)

54.若有以下函数首部

intfun(doublex[10],int*n)

则下面针对此函数的函数声明语句中正确的是

Aintfun(doublex,int*n);Bintfun(double,int);

Cintfun(double*x,intn);Dintfun(double*,int*);

55.若有定义语句:

intk[2][3],*pk[3];,则以下语句中正确的是

Apk=k;Bpk[0]=&k[1][2];Cpk=k[0];Dpk[1]=k;

56.有以下程序

voidchange(intk[]){k[0]=k[5];}

main()

{intx[10]={1,2,3,4,5,6,7,8,9,10},n=0;

while(n<=4){change(&x[n]);n++;}

for(n=0;n<5;n++)printf("%d",x[n]);

printf("\n");

}

程序运行后的输出结果是

A678910B13579C12345D62345

57.有以下程序

main()

{chars[]={"aeiou"},*ps;

ps=s;printf("%c\n",*ps+4);

}

程序运行后的输出结果是

AaBeCuD元素s[4]的地址

58.以下语句中存在的语法错误是

Acharss[6][20];ss[1]="right?

";

Bcharss[][20]={"right?

"};

Cchar*ss[6];ss[1]="right?

";

Dchar*ss[]={"right?

"};

59.若有定义:

char*x="abcdefghi";,以下选项中正确运用了strcpy函数的是

Achary[10];strcpy(y,x[4]);

Bchary[10];strcpy(++y,&x[1]);

Cchary[10],*s;strcpy(s=y+5,x);

Dchary[10],*s;strcpy(s=y+1,x+1);

60.有以下程序

#include

main(intargc,char*argv[])

{inti=1,n=0;

while(i

printf("%d\n",n);

}

该程序生成的可执行文件名为:

proc.exe,若在运行时输入命令行:

proc1234567

则该程序的输出结果是

A3B5C7D11

二、读程序,写运行结果

一般题

1.以下程序运行后的输出结果是______

voidfun(char*c,intd)

{*c=*c+1;d=d+1;

printf("%c,%c,",*c,d);

}

main()

{chara='A',b='a';

fun(&b,a);printf("%c,%c\n",a,b);

}

2.以下程序运行后的输出结果是__

#include

main()

{char*p="abcde\0fghjik\0";

printf("%d\n",strlen(p));

}

3.以下程序程序编译连接后生成的可执行文件是ex1.exe,若运行时输入带参数的命令行是:

ex1abcdefg10<回车>,则运行的结果是______

#include

main(intargc,char*argv[])

{inti,len=0;

for(i=1;i

printf("%d\n",len);

}

4.以下程序运行后的输出结果是_____

intfa(intx)

{returnx*x;}

intfb(intx)

{returnx*x*x;}

intf(int(*f1)(),int(*f2)(),intx)

{returnf2(x)-f1(x);}

main()

{inti;

i=f(fa,fb,2);printf("%d\n",i);

}

5.设有以下程序,执行该程序后,a的值为,b的值为

main()

{inta,b,k=4,m=6,*p1=&k,*p2=&m;

a=p1==&m;

b=(*p1)/(*p2)+7;

printf("a=%d\n",a);

printf("b=%d\n",b);

}

6.以下程序运行后的输出结果是

main()

{chars[]="9876",*p;

for(p=s;p

}

7.下列程序的运行结果是

voidfun(int*a,int*b)

{int*k;

k=a;a=b;b=k;

}

main()

{inta=3,b=6,*x=&a,*y=&b;

fun(x,y);

printf("%d%d",a,b);

}

8.以下程序的输出结果是

main()

{intarr[]={30,25,20,15,10,5},*p=arr;

p++;

printf("%d\n",*(p+3));

}

9.下列程序的输出结果是

intb=2;

intfunc(int*a)

{b+=*

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1