C语言习题集合(指针).doc

上传人:wj 文档编号:4841976 上传时间:2023-05-07 格式:DOC 页数:23 大小:215KB
下载 相关 举报
C语言习题集合(指针).doc_第1页
第1页 / 共23页
C语言习题集合(指针).doc_第2页
第2页 / 共23页
C语言习题集合(指针).doc_第3页
第3页 / 共23页
C语言习题集合(指针).doc_第4页
第4页 / 共23页
C语言习题集合(指针).doc_第5页
第5页 / 共23页
C语言习题集合(指针).doc_第6页
第6页 / 共23页
C语言习题集合(指针).doc_第7页
第7页 / 共23页
C语言习题集合(指针).doc_第8页
第8页 / 共23页
C语言习题集合(指针).doc_第9页
第9页 / 共23页
C语言习题集合(指针).doc_第10页
第10页 / 共23页
C语言习题集合(指针).doc_第11页
第11页 / 共23页
C语言习题集合(指针).doc_第12页
第12页 / 共23页
C语言习题集合(指针).doc_第13页
第13页 / 共23页
C语言习题集合(指针).doc_第14页
第14页 / 共23页
C语言习题集合(指针).doc_第15页
第15页 / 共23页
C语言习题集合(指针).doc_第16页
第16页 / 共23页
C语言习题集合(指针).doc_第17页
第17页 / 共23页
C语言习题集合(指针).doc_第18页
第18页 / 共23页
C语言习题集合(指针).doc_第19页
第19页 / 共23页
C语言习题集合(指针).doc_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C语言习题集合(指针).doc

《C语言习题集合(指针).doc》由会员分享,可在线阅读,更多相关《C语言习题集合(指针).doc(23页珍藏版)》请在冰点文库上搜索。

C语言习题集合(指针).doc

第七章指针·23·

第七章指针

7.1选择题

1.若有说明:

inta=2,*p=&a,*q=p;,则以下非法的赋值语句是()。

A.p=q;B.*p=*q;C.a=*q;D.q=a;

2.若定义:

inta=511,*b=&a;,则printf("%d\n",*b);的输出结果为:

A.无确定值B.a的地址C.512D.511

3.已有定义 inta=2,*p1=&a,*p2=&a;下面不能正确执行的赋值语句是()。

A.a=*p1+*p2;B.p1=a;C.p1=p2;D.a=*p1*(*p2);

4.变量的指针,其含义是指该变量的()。

A.值B.地址C.名D.一个标志

5.若有说明语句:

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

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=10;p=&a;下面均代表地址的一组选项是()。

A.a,p,*&aB.&*a,&a,*p

C.*&p,*p,&aD.&a,&*p,p

0.2345

p

x

8.若需要建立如图所示的存储结构,且已有说明double*p,x=0.2345;则正确的赋值语句是()。

A.p=x;B.p=&x;

C.*p=x;D.*p=&x;

9.若有说明:

int*p,a=1,b;以下正确的程序段是()。

A.p=&b;B.scanf("%d",&b);

scanf("%d",&p);*p=b;

C.p=&b;D.p=&b;

scanf("%d",*p);*p=a;

10.有如下语句:

intm=6,n=9,*p,*q;p=&m;q=&n;如图1所示,若要实现下图所示的存储结构,可选用的赋值语句是()。

m

p

n

q

p

m

q

n

A.*p=*q;B.p=*q;

C.p=q;D.*p=q;

11.以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是()。

#include

main()

{

int*p,*q,a,b;

p=&a;

printf("inputa:

");

scanf("%d",*p);

}

A.*p表示的是指针变量p的地址

B.*p表示的是变量a的值,而不是变量a的地址

C.*p表示的是指针变量p的值

D.*p只能用来说明p是一个指针变量

12.下面程序的功能是从输入的十个字符串中找出最长的那个串。

请在________处填空。

#include"stdio.h"

#include"string.h"

#defineN10

main()

{

chars[N][81],*t;

intj;

for(j=0;j

gets(s[j]);

t=*s;

for(j=1;j

if(strlen(t)

printf("themaxlengthoftenstringsis:

%d,%s\n",strlen(t),t);

}

A.t=s[j]B.t=&s[j]C.t=s++D.t=s[j][0]

13.下面判断正确的是()。

A.char*s="girl";等价于char*s;*s="girl";

B.chars[10]={"girl"};等价于chars[10];s[10]={"girl"};

C.char*s="girl";等价于char*s;s="girl";

D.chars[4]="boy",t[4]="boy";等价于 chars[4]=t[4]="boy"

14.设char*s="\ta\017bc";则指针变量s指向的字符串所占的字节数是()。

A.9B.5C.6D.7

15.下面程序段中,for循环的执行次数是()。

char*s="\ta\018bc";

for(;*s!

='\0';s++)printf("*");

A.9B.5C.6D.7

16.以下不能正确进行字符串赋初值的语句是()。

A.charstr[5]="good!

";

B.char*str="good!

";

C.charstr[]="good!

";

D.charstr[5]={'g','o','o','d'};

17.若指针p已正确定义,要使p指向两个连续的整型动态存储单元,不正确的语句是()。

A.p=2*(int*)malloc(sizeof(int));

B.p=(int*)malloc(2*sizeof(int));

C.p=(int*)malloc(2*2);

D.p=(int*)calloc(2,sizeof(int));

18.下面程序段的运行结果是()。

  char*s="abcde";

s+=2;

printf("%d",s);

A.cdeB.字符'c'C.字符'c'的地址D.无确定的输出结果

19.设有如下的程序段:

chars[]="girl",*t;t=s;则下列叙述正确的是()。

A.s和t完全相同

B.数组s中的内容和指针变量t中的内容相等

C.s数组长度和t所指向的字符串长度相等

D.*t与s[0]相等

20.以下正确的程序段是()。

A.chars[20];B.char*s;

scanf("%s",&s);scanf("%s",s);

C.chars[20];D.chars[20],*t=s;

scanf("%s",&s[2]);scanf("%s",t[2]);

21.下面程序段的运行结果是()。

#include"stdio.h"

main()

{

intm=10,n=20;

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

m*=n;

printf(format,"m*=n",m,n);

}

A.format,"m*=n",m,nB.format,"m*=n"

C.m*=n,m=200,n=20D.以上结果都不对

22.以下与库函数strcpy(char*p,char*q)功能不相等的程序段是()。

A.strcpy1(char*p,char*q)

{while((*p++=*q++)!

='\0');

}

B.strcpy2(char*p,char*q)

{while((*p=*q)!

='\0')

{p++;q++;}

}

C.strcpy3(char*p,char*q)

{while(*p++=*q++);

}

D.strcpy4(char*p,char*q)

{while(*p)

*p++=*q++;

}

23.下面程序段的运行结果是()。

#include"stdio.h"

main()

{

chars[]="example!

",*t;

t=s;

while(*t!

='p')

{printf("%c",*t-32);

t++;}

}

A.EXAMPLE!

B.example!

C.EXAMD.example!

24.以下正确的程序段是()。

A.chars[]="12345",t[]="6543d21";strcpy(s,t);

B.chars[20],*t="12345";strcat(s,t);

C.chars[20]="",*t="12345";strcat(s,t);

D.char*s="12345",*t="54321";strcat(s,t);

25.以下与库函数strcmp(char*s,chat*t)的功能相等的程序段是()。

A.strcmp1(char*s,chat*t)

{for(;*s++==*t++;)

if(*s=='\0')return0;

return(*s-*t);

}

B.strcmp2(char*s,char*t)

{for(;*s++==*t++;)

if(!

*s)return0;

return(*s-*t);

C.strcmp3(char*s,char*t)

{for(;*t==*s;)

{if(!

*t)return0;

t++;

s++;}

return(*s-*t);

}

D.strcmp4(char*s,char*t)

{for(;*s==*t;s++,t++)

if(!

*s)return0;

return(*t-*s);

}

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

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

ps=s;

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

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

27.不合法的main函数命令行参数表示形式是:

()。

A.main(inta,char*c[])B.main(intargc,char*argv)

C.main(intarc,char**arv)D.main(intargv,char*argc[])

28.若有说明语句:

chars[]="itisaexample.",*t="itisaexample.";则以下不正确的叙述()。

A.s表示的是第一个字符i的地址,s+1表示的是第二个字符t的地址

B.t指向另外的字符串时,字符串的长度不受限制

C.t变量中存放的地址值可以改变

D.s中只能存放16个字符

29.若已定义chars[10];则在下面表达式中不表示s[1]地址的是()。

A.s+1B.s++C.&s[0]+1D.&s[1]

30.下面程序段的运行结果是()。

(注:

└┘代表空格)

#include"stdio.h"

main()

{chars[6];

s="abcd";

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

}

A."abcd"B."abcd└┘"C.\"abcd\"D.编译出错

31.执行以下程序后,a的值为【1】,b的值为【2】。

#include

main()

{

inta,b,k=4,m=6,*p=&k,*q=&m;

a=p==&m;

b=(-*p)/(*q)+7;

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

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

}

【1】A.-1B.1C.0D.4

【2】A.5B.6C.7D.10

32.下面程序的功能是将字符串s的所有字符传送到字符串t中,要求每传递三个字符后再存放一个空格,例如字符串s为"abcdefg",则字符串t为"abcdefg",请选择填空。

#include"stdio.h"

#include"string.h"

main()

{

intj,k=0;

chars[60],t[100],*p;

p=s;

gets(p);

while(*p)

{for(j=1;j<=3&&*p;【1】)t[k]=*p;

if(【2】){t[k]='';k++;}

}

t[k]='\0';

puts(t);

}

【1】A.p++B.p++,k++C.p++,k++,j++D.k++,j++

【2】A.j==4B.*p=='\0'C.!

*pD.j!

=4

33.下面程序的功能是将八进制正整数字符串转换为十进制整数。

请选择填空。

#include"stdio.h"

#include"string.h"

main()

{

char*t,s[8];

intn;

t=s;

gets(t);

n=【1】;

while(【2】!

='\0')n=n*8+*t-'0';

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

}

【1】A.0B.*tC.*t-'0'D.*t+'0'

【2】A.*tB.*t++C.*(++t)D.t

34.下面程序的功能是在字符串s中找出最大的字符并放在第一个位置上,并将该字符前的原字符往后顺序移动,如:

boy&girl变成ybo&girl。

请选择填空。

#include"stdio.h"

#include"string.h"

main()

{

chars[80],*t,max,*w;

t=s;

gets(t);

max=*(t++);

while(*t!

='\0')

{

if(max<*t)

{max=*t;w=t;}

t++;

}

t=w;

while(【1】)

{

*t=*(t-1);

【2】;}

*t=max;

puts(t);

}

【1】A.t>sB.t>=sC.*t>s[0]D.*t>=s[0]

【2】A.t++B.s--C.t--D.w--

35.以下程序的功能是删除字符串s中的所有空格(包括TAB符、回车符),请填空。

#include"stdio.h"

#include"string.h"

#include"ctype.h"

main()

{

chars[80];

gets(s);

delspace(s);

puts(s);

}

delspace(char*t)

{

intm,n;

charc[80];

for(m=0,n=0;【1】;m++)

if(!

isspace(【2】))/*C语言提供的库函数,用以判断字符是否为空格*/

{

c[n]=t[m];

n++;

}

c[n]='\0';

strcpy(t,c);

}

【1】A.t[m]B.!

t[m]C.t[m]='\0'D.t[m]=='\0'

【2】A.t+mB.*c[m]C.*(t+m)D.*(c+m)

36.下面程序的功能是统计字串sub在母串s中出现的次数。

请选择填空。

#include"stdio.h"

#include"string.h"

main()

{

chars[80],sub[80];

intn;

gets(s);

gets(sub);

printf("%d\n",count(s,sub));

}

intcount(char*p,char*q)

{

intm,n,k,num=0;

for(m=0;p[m];m++)

for(【1】,k=0;q[k]==p[n];k++,n++)

if(q[【2】]=='\0')

{num++;break;}

return(num);

}

【1】A.n=m+1B.n=mC.n=0D.n=1

【2】A.kB.k++C.k+1D.++k

37.下列程序的输出结果是()。

#include"stdio.h"

main()

{

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

p=a;

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

}

A.0B.1C.10D.9

38.以下程序的输出结果是()。

#include"stdio.h"

charcchar(charch)

{

if(ch>='A'&&ch<='Z')ch=ch-'A'+'a';

returnch;

}

main()

{

chars[]="ABC+abc=defDEF",*p=s;

while(*p)

{

*p=cchar(*p);

p++;

}

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

}

A.abc+ABC=DEFdefB.abcaABCDEFdef

C.abc+abc=defdefD.abcabcdefdef

39.以下程序的输出结果是()。

#include"stdio.h"

#include"string.h"

main()

{

charb1[8]="abcdefg",b2[8],*pb=b1+3;

while(--pb>=b1)strcpy(b2,pb);

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

}

A.8B.3C.1D.7

40.有以下程序

#include"string.h"

#include"stdio.h"

main()

{

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

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

}

程序运行后的输出结果是()。

A.12B.15C.6D.5

41.有以下程序

voidss(char*s,chart)

{

while(*s)

{if(*s==t)*s=t-'a'+'A';

s++;

}

}

main()

{

charstr[100]="abcddfe

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

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2