第8章补充作业.docx

上传人:b****8 文档编号:30248485 上传时间:2023-08-13 格式:DOCX 页数:18 大小:19.81KB
下载 相关 举报
第8章补充作业.docx_第1页
第1页 / 共18页
第8章补充作业.docx_第2页
第2页 / 共18页
第8章补充作业.docx_第3页
第3页 / 共18页
第8章补充作业.docx_第4页
第4页 / 共18页
第8章补充作业.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

第8章补充作业.docx

《第8章补充作业.docx》由会员分享,可在线阅读,更多相关《第8章补充作业.docx(18页珍藏版)》请在冰豆网上搜索。

第8章补充作业.docx

第8章补充作业

第8章补充作业

1、选择题序号:

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

姓名:

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

2)若有语句int*point,a=4;和point=&a;下面均代表地址的一组选项是。

A.a,point,*&aB.&*a,&a,*point

C.*&point,*point,&aD.&a,&*point,point

3)若已定义a为int型变量,则是对指针p的正确说明和初始化。

A.int*p=a;B.int*p=*a;

C.intp=&a;D.int*p=&a;

4)下面判断正确的是。

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

5)以下合法的定义是。

A.staticstr[]={“china”};B.char*p=“china”;

C.char*p;strcpy(p,”china”);D.charstr[13];str[]=“china”;

6)若有定义:

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

A.&a[0][0]+6*i+jB.&a[0][0]+4*j+i

C.&a[0][0]+4*i+jD.&a[0][0]+6*j+i

7)若有以下定义,则数值不为3的表达式是。

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

A.x[3]B.p1=x+3,*p1++

C.p1=x+2,*(p1++)D.p1=x+2,*++p1

8)若有说明语句:

intx[3][4];则以下关于x,*x,x[0],&x[0][0]的正确描述是。

A.x,*x,x[0],&x[0][0]均表示元素x[0][0]的地址

B.只有x,x[0],&x[0][0]表示的是元素x[0][0]的地址

C.只有x[0]和&x[0][0]表示的是元素x[0][0]的地址

D.只有&x[0][0]表示的是元素x[0][0]的地址

9)若有以下说明语句:

staticinti,a[2][3]={1,3,5,7,9,11};

intm,n;

且0≤m≤1,0≤n≤2,则是对数组元素的正确引用。

A.a[m]+nB.*(a+5)

C.*(*(a+m)+3)D.*(*(a+m)+n)

10)以下程序运行的结果是。

#include

#include

main()

{char*p1,*p2,str[50]=“abc”;

p1=“abc”;p2=“abc”;

strcpy(str+1,strcat(p1,p2));

printf(“%s\n”,str);}

A.abcabcabcB.bcabcabcC.aabcabcD.cabcabc

11)下面程序的运行结果是C。

#include

main()

{intb,a=28;

chars[10],*p;

p=s;

do{

b=a%16;

if(b<10)

*p=b+48;

else

*p=b+55;

p++;

a=a/5;

}while(a>0);

*p=’\0’;

puts(s);}

A.10B.2C.51D.\0

12)下面程序的运行结果是A。

#include

main()

{staticchara[]=“Language”,b[]=“programe”;

char*p1,*p2;

intk;

p1=a;p2=b;

for(k=0;k<=7;k++)

if(*(p1+k)==*(p2+k))

printf(“%c”,*(p1+k));}

A.gaeB.gaC.LanguageD.有语法错误

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

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是一个指针变量

14)以下程序运行的结果是C。

#include

main()

{inta[]={2,4,6,8,10},y=1,x,*p;

p=&a[1];

for(x=0;x<3;x++)

y+=*(p+x);

printf(“%d\n”,y);}

A.17B.18

C.19D.20

15)有如下程序:

#include

main()

{charch[2][5]={“6937”,“8254”},*p[2];

inti,j,s=0;

for(i=0;i<2;i++)

p[i]=ch[i];

for(i=0;i<2;i++)

for(j=0;p[i][j]!

=’\0’;j+=2)

s=10*s+p[i][j]-’0’;

printf(“%d\n”,s);}

该程序的输出结果是C。

A.69825B.63825

C.6385D.693825

16)已有定义:

intk=2;int*ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是。

A.k=*ptr1+*ptr2;

B.ptr2=k;

C.ptr1=ptr2

D.k=*ptr1*(*ptr2);

17)若有说明:

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

A.p1=&m;p2=&p1;

B.p1=&m;p2=&n;*p1=*p2;

C.p1=&m;p2=p1;

D.p1=&m;*p2=*p1;

18)以下正确的程序段是。

A.charstr1[]=“12345”,str2[]=“abcdef”;strcpy(str1,str2);

B.charstr[10],*st=“abcde”;strcat(str,st);

C.charstr[10]=““,*st=“abcde”;strcat(str,st);

D.char*st1=“12345”,*st2=“abcde”;strcat(st1,st2);

19)下面程序段的运行结果是。

char*p=“abcdefgh”;

p+=3;

printf(“%d\n”,strlen(strcpy(p,”ABCD”)));

A.8B.12

C.4D.7

20)下面程序段的运行结果是C。

chara[]=“language”,*p;

p=a;

while(*p!

=’u’)

{printf(“%c”,*p-32);

p++;}

A.LANGUAGE

B.language

C.LANG

D.langUAGE

2、填空题

1)若p已指向存储单元a[1]。

通过指针p给s赋值,使s指向最后一个存储单元a[4]的语句是。

2)若有以下定义和语句:

则*--p的值是。

inta[4]={0,1,2,3},*p;

p=&a[2];

3)若有定义:

inta[2][3]={2,4,6,8,10,12};则*(&a[0][0]+2*2+1)的值是;*(a[1]+2)的值是。

4)若有定义:

intm[10][6];在程序中引用数组元素m[i][j]的四种形式是:

,和。

(假设i、j已正确说明并赋值)。

5)下面程序可通过行指针p输出数组a中任一行任一列元素的值。

请填空。

main()

{inta[2][3]={2,4,6,8,10,12};

int(*p)[3],i,j;

p=a;

scanf(“%d,%d”,&i,&j);/*0≤i<2,0≤j<3*/

printf(“a[%d][%d]=%d\n”,i,j,);}

6)下面程序的运行结果是sum=25。

main()

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

ints,i,*p;

s=0;

p=&x[0];

for(i=1;i<10;i+=2)

s+=*(p+i);

printf(“sum=%d”,s);}

7)mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。

请填空。

intmystrlen(char*str)

{char*p;

for(p=str;!

=’\0’;p++);

return();}

8)下面程序段的运行结果是12345。

chara[]=“12345”,*p;

ints=0;

for(p=a;*p!

=’\0’;p++)

s=10*s+*p-‘0’;

printf(“%d\n”,s);

9)下面程序的运行结果是

main()

{intva[10],vb[10],*pa,*pb,i;

pa=va;pb=vb;

for(i=0;i<3;i++,pa++,pb++)

{*pa=i;*pb=2*i;

printf(“%d\t%d\n”,*pa,*pb);}

pa=&va[0];pb=&vb[0];

for(i=0;i<3;i++)

{*pa=*pa+i;*pb=*pb*i;

printf(“%d\t%d\n”,*pa++,*pb++);

}}

10)若输入的值分别是1,3,5,下面程序的运行结果是111315

main()

{inta=0,i,*p,sum;

p=&a;

for(i=0;i<=2;i++)

{scanf(“%d”,p);

sum=s(p);

printf(“sum=%d\n”,sum);

}}

s(int*p)

{intsum=10;

sum=sum+*p;

return(sum);}

11)以下程序的运行结果是0136。

#include

main()

{inti,k;

for(i=0;i<4;i++)

{k=sub(&i);

printf(“%3d”,k);}

printf(“\n”);}

intsub(int*s)

{staticintt=0;

t=*s+t;

returnt;}

12)以下程序的输出结果是abcdeedcba。

#include

main()

{char*ptr1,*ptr2;

ptr1=ptr2=“abcde”;

while(*ptr2!

=’\0’)

putchar(*ptr2++);

while(--ptr2>=ptr1)

putchar(*ptr2);

putchar(‘\n’);}

13)有以下程序,若从键盘输入:

abcdef↙,则输出结果是def↙def↙。

#include

#include

main()

{char*p,*q;

p=(char*)malloc(sizeof(char)*20);

q=p;

scanf(“%s%s”,p,q);

printf(“%s%s”,p,q);}

14)以下程序的输出结果是c/bc/abc

#include

main()

{charstr[]=“abc”,*ps=str;

while(*ps)

ps++;

for(ps--;ps-str>=0;ps--)

puts(ps);}

15)设有以下程序:

#include

main()

{inti,*p=&i;

i=10;

*p=i+5;

i=2*i;

printf(“%d\n”,*p);}

程序执行的结果是30。

16)设有两个字符串a、b,下面程序是将a、b的对应字符中的较大者存放在数组c的对应位置上。

请填空。

#include

#include

main()

{intk=0;

chara[80],b[80],c[80]={‘\0’},*p,*q;

p=a;q=b;gets(a);gets(b);

while()

{if()

c[k]=*q;

else

c[k]=*p;

p++;q++;k++;}

if(*p!

=’\0’)

strcat(c,p);

else

strcat(c,q);

puts(c);}

17)以下程序的功能是:

将无符号八进制数字字符串转换为十进制整数。

例如,输入的字符串为556,则输出十进制整数366。

请填空。

#include

main()

{char*p,s[6];

intn;

p=s;

gets(p);

n=*p-‘0’;

while(=’\0’)

n=n*8+*p-‘0’;

printf(“%d\n”,n);}

18)假设a数组中的数据已按从小到大的顺序存放,以下程序可把a数组中相同的数据删得只剩下一个,然后以每行4个数据的格式输出a数组。

请填空。

#defineM10

main()

{inta[M],i,j,n;

for(i=0;i

scanf(“%d”,a+i);

n=i=M-1;

while(i>=0)

{if(*(a+i)==*(a+i-1))

{for(j=;j<=n;j++)

*(a+j-1)=*();

n--;}

i--;}

for(i=1;i<=n+1;i++)

{printf(“%4d”,*());

if(i%4==0)

printf(“\n”);}

printf(“\n”);}

19)下面程序是判断输入的字符串是否是”回文”,(顺读和倒读都一样的字符串称”回文”,如level)。

请填空。

#include

#include

main()

{chars[81],*p1,*p2;

intn;

gets(s);

n=strlen(s);

p1=s;

p2=;

while()

{if(*p1!

=*p2)

break;

else

{p1++;

;

}}

if(p1

printf(“NO\n”);

else

printf(“YES\n”);}

20)下面程序的运行结果是abcdefg/ADGH

#include

main()

{chara[80],b[80],*p=“aAbcdDefgGH”;

inti=0,j=0;

while(*p!

=’\0’)

{if(*p>=’a’&&*p<=’z’)

{a[i]=*p;i++;}

else

{b[j]=*p;j++;}

p++;}

a[i]=b[j]=’\0’;

puts(a);puts(b);}

21)以下程序的执行结果是8。

#include

main()

{staticinta[]={1,3,5,7};

int*p[3]={a+2,a+1,a};

int**q=p;

printf(“%d\n”,*(p[0]+1)+**(q+2));}

22)以下程序能找出数组x中的最大值和该值所在的元素下标,数组元素值从键盘输入,请填空。

main()

{intx[10],*p1,*p2,k;

for(k=0;k<10;k++)

scanf(“%d”,x+k);

for(p1=x,p2=x;p1-x<10;p1++)

if(*p1>*p2)

p2=;

printf(“MAX=%d,INDEX=%d\n”,*p2,);}

23)以下程序的执行结果是Thesentencescanmakestatementaboutthetopic。

#include

#include

#defineP(x)printf(“%s”,x)

main()

{staticchar*c[]={“youcanmakestatement”,“forthetopic”,

“Thesentences”,“Howabout”};

staticchar**p[]={c+3,c+2,c+1,c};

char***pp=p;

P(**++pp);

P(*--*++pp+3);

P(*pp[-2]+3);

P(pp[-1][-1]+3);

printf(“\n”);}

24)下面程序的功能是将字符串a的所有字符传送到字符串b中,要求每传送三个字符后再存放一个空格,例如字符串a为”abcdefg”,则字符串b为”abcdefg”,请选择填空。

#include

main()

{inti,k=0;

chara[80],b[80],*p;

p=a;

gets(p);

while(*p)

{for(i=1;【1】;p++,k++,i++)

b[k]=*p;

if(【2】)

{b[k]=’‘;k++;}

}

b[k]=’\0’;

puts(b);}

【1】A.i<3B.i<=3C.i<3&&*p!

=’\0’D.i<=3&&*p

【2】A.i==4B.*p==’\0’C.!

*pD.i!

=4

25)下面程序的功能是在字符串str中找出最大的字符并放在第一个位置上,并将该字符前面的原字符往后顺序移动,如chyab变成ychab。

请选择填空。

#include

main()

{charstr[80],*p,max,*q;

p=str;gets(p);max=*(p++);

while(*p!

=’\0’)

{if(max<*p)

{max=*p;

【1】;}

p++;}

p=q;

while(【2】)

{*p=*(p-1);

【3】;}

*p=max;

puts(p);}

【1】A.p++B.p=qC.q=pD.q++

【2】A.p>strB.p>=strC.*p>str[0]D.*p>=str[0]

【3】A.p++B.str--C.p--D.i--

26)下面程序的功能从终端读入一行字符作为字符串放在字符数组中,然后输出请填空。

inti;

chars[80],*p;

for(i=0;i<79;i++)

{s[i]=getchar();

if(s[i]==’\n’)

break;}

s[i]=;

p=;

while(*p)

putchar(*p++);

27)下面程序的运行结果是bcdABCD。

chars[20]=“abcd”;

char*sp=s;

sp++;

puts(strcat(sp,”ABCD”));

28)下面程序段的运行结果是*2*4*6*8*。

chara[]=“123456789”,*p;

inti=0;

p=a;

while(*p)

{if(i%2==0)*p=’*’;

p++;i++;}

puts(a);

29)下面程序的输出结果是24681012。

main()

{intb[2][3]={2,4,6,8,10,12};

int*a[2][3]={*b,*b+1,*b+2,*(b+1),*(b+1)+1,*(b+1)+2};

int**q,k;

q=a[0];

for(k=0;k<6;k++)

{printf(“%4d”,**q);

q++;}}

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

当前位置:首页 > 医药卫生 > 基础医学

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

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