C语言程序设计习题集3.docx

上传人:b****5 文档编号:29985790 上传时间:2023-08-04 格式:DOCX 页数:16 大小:20.57KB
下载 相关 举报
C语言程序设计习题集3.docx_第1页
第1页 / 共16页
C语言程序设计习题集3.docx_第2页
第2页 / 共16页
C语言程序设计习题集3.docx_第3页
第3页 / 共16页
C语言程序设计习题集3.docx_第4页
第4页 / 共16页
C语言程序设计习题集3.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

C语言程序设计习题集3.docx

《C语言程序设计习题集3.docx》由会员分享,可在线阅读,更多相关《C语言程序设计习题集3.docx(16页珍藏版)》请在冰豆网上搜索。

C语言程序设计习题集3.docx

C语言程序设计习题集3

指针

一单项选择题(每题2分,共40分)

1以下叙述中错误的是_B__。

A在程序中凡是以“#”开始的语句行都是预处理命令行

B预处理命令行的最后不能以分号表示结束

C#defineMAX是合法的宏定义命令行

DC程序对预处理命令行的处理是在程序执行的过程中进行的

2若程序中有宏定义行:

#defineN100,则以下叙述中正确的是__B_。

A宏定义行中定义了标识符N的值为整数100

B在编译程序对C源程序进行预处理时用100替换标识符N

C对C源程序进行编译时用100替换标识符N

D在运行时用100替换标识符

3若有如下宏定义:

#defineN2

#definey(n)((N+1)*n)

则执行下列语句:

z=4*(N+y(5));后的结果是_B__。

A语句有错误Bz值为68Cz值为60Dz值为180

4以下程序运行后的输出结果是_A__。

#defineF(X,Y)(X)*(Y)

main()

{inta=3,b=4;

printf("%d\n",F(a++,b++));

}

A12B15C16D20

5以下程序运行后的输出结果是_C__。

#definef(x)(x*x)

main()

{inti1,i2;

i1=f(8)/f(4);i2=f(4+4)/f(2+2);

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

}

A64,28B4,4C4,3D64,64

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

Aintp=&a;Bint*p=a;Cint*p=*a;Dint*p=&a;

7已知下列说明语句:

staticinta[]={2,4,6,8}

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

int**q;

q=p;

则表达式**(q+2)的值是_A__。

A6B2C4D8

8下面是一个初始化指针的语句:

int*px=&a;,其中指针变量的名字应该__C_。

A*pxBaCpxD&a

9若指针px为空指针,则_B__。

Apx指向不定Bpx的值为零Cpx的目标为零Dpx的地址为零

10对下语句int*px[10];,下面正确的说法是_B__。

Apx是一个指针,指向一个数组,数组的元素是整数型。

Bpx是一个数组,其数组的每一个元素是指向整数的指针。

CA和B均错,但它是C语言的正确语句。

DC语言不允许这样的语句。

11具有相同基类型的指针变量p和数组y,下列写法中不合法的是_D__。

Ap=yB*p=y[i]Cp=&y[i]Dp=&y

12已知staticinta[]={5,4,3,2,1},*p[]={a+3,a+2,a+1,a},**q=p;,

则表达式*(p[0]+1)+**(q+2)的值是_A__。

A5B4C6D7

13说明语句int*(*p)();的含义为_D__。

Ap是一个指向int型数组的指针

Bp是指针变量,它构成了指针数组

Cp是一个指向函数的指针,该函数的返回值是一个整型

Dp是一个指向函数的指针,该函数的返回值是一个指向整型的指针

14设有如下程序段

chars[20]="Beijing",*p;p=s;

则执行p=s;语句后,以下叙述正确的是_A__。

A可以用*p表示s[0]

Bs数组中元素个数和p所指字符串长度相等

Cs和p都是指针变量

D数组s中的内容和指针变量p中的内容相同

15设int型变量i、n均已定义,指针变量s1、s2各指向一个字符串。

在for(i=0;i

A*s1++=*s2++;Bs1[n-1]=s2[n-1];

C*(s1+n-1)=*(s2+n-1);D*(++s1)=*(++s2);

16给出下列程序的运行结果_B__。

#include<>

voidmain()

{staticchara[]="language",b[]="program";

char*ptr1=a,*ptr2=b;

intk;

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

if(*(ptr1+k)==*(ptr2+k))printf("%c",*(ptr1+k));

}

AgaeBgaClanguageD有语法错误

17以下程序执行后的输出结果是_A__。

voidfun1(char*p)

{char*q;

q=p;

while(*q!

='\0'){(*q)++;q++;}

}

main()

{chara[]={"Program"},*p;

p=&a[3];fun1(p);printf("%s\n",a);

}

AProhsbnBPrphsbnCProgsbnDProgram

18以下程序执行后的输出结果是_C__。

voidswap(char*x,char*y)

{chart;

t=*x;*x=*y;*y=t;

}

main()

{char*s1="abc",*s2="123";

swap(s1,s2);printf("%s,%s\n",s1,s2);

}

A123,abcBabc,123C1bc,a23D321,cba

19以下程序执行后的输出结果是__C_。

main()

{char*p[]={"3697","2584"};

inti,j;longnum=0;

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

{j=0;

while(p[i][j]!

='\0')

{if((p[i][j]-'0')%2)num=10*num+p[i][j]-'0';

j+=2;

}

}

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

}

A35B37C39D3975

20下列程序运行后的输出结果是_A__。

voidmain()

{charstr[]="The_Microsoft";intn=4;

sub(str,0,n-1);

sub(str,0,strlen(str)-1);

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

}

sub(str,n1,n2)

char*str;

intn1,n2;

{charc,*p;

p=str+n2;

str=str+n1;

while(str

{c=*str;*str=*p;*p=c;

str++;p--;

}

}

AtfosorciMThe_B.ehT_MicrosoftCtfosorciM_ehTD.Microsoft_The

二填空题(每空3分,共30分)

1以下程序的定义语句中,x[1]的初值是2,程序运行后输出的内容是2468。

main()

{intx[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},*p[4],i;

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

{p[i]=&x[2*i+1];printf("%d",p[i][0]);}

printf("\n");

}

2以下程序的输出结果是25。

voidswap(int*a,int*b)

{int*t;

t=a;a=b;b=t;

}

main()

{inti=2,j=5,*p=&i,*q=&j;

swap(p,q);printf("%d%d\n",*p,*q)

}

3以下程序的输出结果是4。

main()

{inta[5]={2,4,6,8,10},*p;

p=a;p++;

printf("%d",*p);

}

4以下程序的输出结果是__55__。

#defineM5

#defineNM+M

main()

{intk;

k=N*N*5;printf("%d\n",k);

}

5若有定义语句:

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

6若有定义:

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

7若有程序段:

int*p[3],a[6],i;

for(i=0;i<3;i++)p[i]=&a[2*i];

则*p[0]引用的是a数组元素a[0],*(p[1]+1)引用的是a数组元素a[3]。

三程序填空题(每空3分,共30分)

1下面函数的功能是从输入的十个字符串中找出最长的那个串,请填空使程序完整。

voidfun(charstr[10][81],char**sp)

{inti;

*sp=【1】str[0];

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

if(strlen(*sp)

}

2下面函数的功能是将一个整数字符串转换为一个整数,例如:

"1234"转换为1234,请填空使程序完整。

intchnum(char*p)

{intnum=0,k,len,j;

len=strlen(p);

for(;【3】*p;p++)

{k=【4】*p-'0';j=(--len);

while(【5】j--)k=k*10;

num=num+k;

}

return(num);

}

3下面函数的功能使统计子串substr在母串str中出现的次数,请填空使程序完整。

intcount(char*str,char*substr)

{inti,j,k,num=0;

for(i=0;【6】str[i];i++)

for(【7】j=i,k=0;substr[k]==str[j];k++,j++)

if(substr[【8】k+1]==’\0’)

{num++;break;}

return(num);

}

4下面函数的功能是用递归法将一个整数存放到一个字符数组中,存放时按逆序存放,如483存放成“384”,请填空使程序完整。

voidconvert(char*a,intn)

{inti;

if((i=n/10)!

=0)convert(【9】a+1,i);

else*(a+1)=0;

*a=【10】n%10+'0’;

}

 

结构体文件

单项选择题(1~8题每题5分,9~18题每题6分,共100分)

1有以下说明语句,对结构变量中成员age的正确引用是__A_。

structstudent

{intage;intsex;}stud1,*p;

Ap->ageBC*D说明语句如下,则正确的叙述是_D__。

uniondata{intx;chary;floatz;}a;

Adata和a均是共用体类型变量

Ba所占内存长度等于其成员x、y、z各在内存所占长度之和

C任何情况下,均不能对a作整体赋值

Da的地址和它的各成员地址都是同一地址

3共用体成员的数据类型_B__。

A相同B可以不同也可以相同

C长度一样D是结构体变量

4由系统分配和控制的标准输出文件为__D_。

A键盘B磁盘C打印机D显示器

5下列关于C语言数据文件的叙述中正确的是C。

AC语言只能读写文本文件

BC语言只能读写二进制文件

C文件由字符序列组成,可按数据的存放形式分为二进制文件和文本文件

D文件由二进制数据序列组成

6若要用fopen函数建一个新的二进制文件,该文件要既能读也能写,则文件方式字符串应该为_B__。

A"ab+"B"wb+"C"rb+"D"ab"

7下列程序运行后的输出结果是__A_。

structs{intn;char*c;}*p;

chard[]={'a','b','c','d','e'};

structsa[]={10,&d[0],20,&d[1],30,&d[2],40,&d[3],50,&d[4]};

#include<>

main()

{p=a;

printf("%d\n",++p->n);

printf("%d\n",(++p)->n);

printf("%c\n",++(*p->c));

}

A11B11C10D10

20202020

cbcb

8已知

structstudent

{char*name;intstudent_no;chargrade;};

structstudenttemp,*p=&temp;

="chou";

则下面不正确的是_B__。

表达式值

Ap->namechou

B(*p)->name+2h

C*p->name+2e

D*(p->name+2)o

9下面程序运行后,其输出结果是_B__。

#include<>

structtree

{intx;char*s;}t;

func(structtreet)

{=10;="computer";return0;}

main()

{=1;="minicomputer";

func(t);printf("%d,%s\n",,;

}

A10,computerB1,minicomputerC1,computerD10,minicomputer

10下列程序的输出结果是__B_。

#include<>

main()

{union

{inti[2];

longk;

charc[4];

}t,*s=&t;

s->i[0]=0x39;

s->i[1]=0x38;

printf("%lx",s->k);

printf("%c\n",s->c[0]);

}

A39003839B3800399C393838D38398

11若已定义了如下的共用体类型变量x,则x所占用的内存字节数为__C_。

uniondata{inti;charcha;doublef;}x;

A7B11C8D10

12如下说明语句:

enumA{A0=1,A1=3,A2,A3,A4,A5};

enumAB;

执行B=A3;printf("%d\n",B);输出是_A__。

A5B3C2D编译时出错

13有以下说明语句,则结构变量s的成员num的不正确引用是_B__。

structstudent

{intnum;

intage;

}s,*p;

AB*Cp->numD(*p).num

14以下各选项试图说明一种新的类型名,其中正确的是C。

Atypedefintegerint;Btypedefinteger=int;

Ctypedefintinteger;Dtypedefint=integer;

15运行下面程序,其输出结果是__C_。

#include<>

structsample

{inta,b;char*ch;};

main()

{structsamplearg;

=1000;=100;="abcd";

f1(arg);

}

f1(structsampleparam)

{+=;

[2]='x';

printf("%d\n",;

printf("%s\n",;

}

A1000B1100C1100D100

abcdabcdabxdabcd

16fwrite函数的一般调用形式是_D__。

Afwrite(buffer,count,size,fp);Bfwrite(fp,size,count,buffer);

Cfwrite(fp,count,size,buffer);Dfwrite(buffer,size,count,fp);

17C语言文件操作函数fread(buffer,size,n,fp)的功能是_B__。

A从文件fp中读n个字节存入buffer

B从文件fp中读n个大小为size字节的数据项存入buffer中

C从文件fp中读入n个字节放入大小为size字节的缓冲区buffer中

D从文件fp中读入n个字符数据放入buffer中

18若有如下定义:

structdata

{inti;charch;floatf;}b;

则结构体变量b占用内存的字节数是A。

A7B4C1D2

指针

一单项选择题(每题2分,共40分)

D

A

C

B

B

B

B

B

A

C

1-56-10

B

A

C

C

A

D

A

D

A

A

11-1516-20

二填空题(每空3分,共30分)

1①

2

5⑥

2

1②

2468

6⑦

12

2③

25

6⑧

12

3④

4

7⑨

a0]

4⑤

55

7⑩

a[3]

三程序填空题(每空3分,共30分)

【1】str[0]【6】str[i]

【2】*sp=str[i]【7】j=i

【3】*p【8】k+1

【4】*p-'0'【9】a+1

【5】j--【10】n%10+'0'

 

结构体文件

单项选择题(1~8题每题5分,9~18题每题6分,共100分)

B

A

B

B

B

A

D

B

D

C

1-56-10

D

B

A

C

A

B

C

C

11-1516-18

 

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

当前位置:首页 > 经管营销 > 经济市场

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

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