C复习题 C.docx

上传人:b****6 文档编号:4487715 上传时间:2022-12-01 格式:DOCX 页数:11 大小:18.62KB
下载 相关 举报
C复习题 C.docx_第1页
第1页 / 共11页
C复习题 C.docx_第2页
第2页 / 共11页
C复习题 C.docx_第3页
第3页 / 共11页
C复习题 C.docx_第4页
第4页 / 共11页
C复习题 C.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

C复习题 C.docx

《C复习题 C.docx》由会员分享,可在线阅读,更多相关《C复习题 C.docx(11页珍藏版)》请在冰豆网上搜索。

C复习题 C.docx

C复习题C

一.单选题

(1)以下有4组用户标识符,其中合法的一组是

A)forB)4dC)f2_G3D)WO-RD

(2)以下选项中合法的字符常量是

A)"B"B)'\010'C)68D)D

(3)假定x和y为double型,x=2,则表达式y=x+3/2的值是

A)3.500000B)3C)2.000000D)3.000000

(4)设x、y均为整型变量,且x=10y=3,则以下语句的输出结果是

printf("%d,%d\n",x--,--y);

A)10,3B)9,3C)9,2D)10,2

(5)以下程序的输出结果是

main()

{inta=3;

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

}

A)-6B)12C)0D)-12

(6)设a、b、c、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为

A)0B)1C)2D)3

(7)阅读以下程序:

main()

{

intx;

scanf("%d",&x);

if(x--<5)printf("%d",x);

elseprintf("%d",x++);

}

程序运行后,如果从键盘上输入5,则输出结果是

A)3B)4C)5D)6

(8)t为int类型,进人下面的循环之前,t的值为0

while(t=l)

{……}

则以下叙述中正确的是

A)循环控制表达式的值为0B)循环控制表达式的值为1

C)循环控制表达式不合法D)以上说法都不对

(9)在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是

A)地址传递B)单向值传递

C)双向值传递D)传递方式由用户指定

(10)以下函数值的类型是

fun(floatx)

{

floaty;

y=3*x-4;

returny;

}

A)intB)不确定C)voidD)float

(11)以下程序的输出结果是

main()

{

charc='z';

printf("%c",c-25);

}

A)aB)ZC)z-25D)y

(12)若有说明:

inti,j=2,*p=&j;,则能完成i=j赋值功能的语句是

A)i=*p;B)p*=*&j;C)i=&j;D)i=**p;

(13)以下定义语句中,错误的是

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

C)chars[10]="test";D)intn=5,a[n];

(14)假定int类型变量占用两个字节,其有定义:

intx[10]={0,2,4};,则数组x在内存中所占字节数是

A)3B)6C)10D)20

(15)以下程序的输出结果是

main()

{

inti,a[10];

for(i=9;i>=0;i--)a[i]=10-i;

printf("%d%d%d",a[2],a[5],a[8]);

}

A)258B)741C)852D)369

(16)以下数组定义中不正确的是

A)inta[2][3];

B)intb[][3]={0,1,2,3};

C)intc[100][100]={0};

D)intd[3][]={{1,2},{1,2,3},{1,2,3,4}};

(17)以下程序的输出结果是

main()

{

inta[4][4]={{1,3,5},{2,4,6},{3,5,7}};

printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1],a[3][0]);

}

A)0650B)1470C)5430D)输出值不定

(18)以下程序的输出结果是

main()

{

charst[20]="hello\0\thg";

printf(%d%d\n",strlen(st),sizeof(st));

}

A)99B)520C)1320D)2020

(19)以下选项中,不能正确赋值的是

A)chars1[10];s1="Ctest";

B)chars2[]={'C','t','e','s','t'};

C)chars3[20]="Ctest";

D)char*s4="Ctest\n"

(20)以下程序的输出结果是

structHAR

{intx,y;structHAR*p;}h[2];

main()

{

h[0].x=1;h[0].y=2;

h[1].x=3;h[1].y=4;

h[0].p=&h[1];h[1].p=h;

printf("%d%d\n",h[0].p->x,h[1].p->y);

}

A)12B)23C)14D)32

(21)以下程序的输出结果是

main()

{

inta,b;

for(a=1,b=1;a<=100;a++)

{

if(b>=10)break;

if(b%3==1)

{b+=3;continue;}

}

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

}

A)101B)6C)5D)4

(22)以下程序的输出结果是

unionmyun

{

struct

{intx,y,z;}u;

intk;

}a;

main()

{

a.u.x=4;a.u.y=5;a.u.z=6;

a.k=0;

printf("%d\n",a.u.x);

}

A)4B)5C)6D)0

(23)以下程序的输出结果是

inta,b;

voidfun()

{a=100;b=200;}

main()

{

inta=5,b=7;

fun();

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

}

A)100200B)57C)200100D)75

(24)以下程序的输出结果是

#defineM(x,y,z)x*y+z//带参宏定义

main()

{

inta=1,b=2,c=3;

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

}

A)19B)17C)15D)12

(25)下面的程序执行后,文件test.t中的内容是

#include

voidfun(char*fname,char*st)

{

FILE*myf;

myf=fopen(fname,"w");

fputs(st,myf);

fclose(myf);

}

main()

{

fun("test","newworld!

");

fun("test","hello!

")

}

A)hello!

B)newworld!

hello!

C)newworld!

D)hello!

rld!

 

二、填空题

(1)语句:

x++;++x;x=x+1;x=1+x;执行后都使变量x的值增1,请写出一条同一功能的赋值语句()。

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

voidmain()

{

inti=10,j=0;

do{j=j+i;i--;}while(i-->2);

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

}

(3)设有以下程序:

voidmain()

{

intn1,n2;

scanf("%d",&n2);

while(n2!

=0)

{

n1=n2%10;

n2=n2/10;

printf("%d",n1);

}

}

程序运行后,如果从键盘上输入1298;则输出结果为()。

(4)以下程序输出的最后一个值是()。

intff(intn)

{

staticintf;

f=f+n;

returnf;

}

voidmain()

{

inti;

for(i=1;i<=5;i++)printf("%d\n",ff(i));

}

(5)以下函数的功能是:

求x的y次方,请填空。

doublefun(doublex,inty)

{

inti;

doublez;

for(i=1,z=x;____;i++)_____;

returnz;

}

(6)设有以下程序:

voidmain()

{

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

}

执行该程序后,a的值为(),b的值为()。

(7)若已定义:

inta[10],i;,以下fun函数的功能是:

在第一个循环中给10个数组元素依次赋1、2、3、4、5、6、7、8、9、10;在第二个循环中使a数组10个元素中的值对称折叠,变成1、2、3、4、5、5、4、3、2、1。

请填空。

fun(inta[])

{

inti;

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

for(i=0;i<5;i++)_____=a[i];

}

(8)若有定义语句:

chars[100],d[100];inti=0;,且s中已赋字符串,请填空以实现字符串拷贝。

(注:

不得使用逗号表达式)

while(s[i]){d[i]=____;i++;}

d[i]=’\0’;

(9)以下程序段用于构成一个简单的单向链表,请填空。

structSTRU

{

intx,y;

floatrate;

___________p;

}a,b;

a.x=0;a.y=0;a.rate=0;a.p=&b;

b.x=0;b.y=0;b.rate=0;b.p=NULL;

(10)若有如下结构体说明:

structSTRU

{

inta,b;charc;doubled:

structSTRUp1,p2;

};

___________t[20];

请填空,以完成对t数组的定义,t数组的每个元素为该结构体类型.

三、改错题

注意:

在/*********found**********/下一行改,不得增行或删行,也不得更改程序的结构!

1.给定函数fun的功能是:

先从键盘上输入一个3行3列矩阵的各个元素的值,然后输出主对角线元素之和。

请改正函数fun中的错误或在横线处填上适当的内容并把横线删除,使它能得出正确的结果。

intfun()

{

inta[3][3],sum;

inti,j;

/*********found**********/

______;

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

{for(j=0;j<3;j++)

/*********found**********/

scanf("%d",a[i][j]);

}

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

sum=sum+a[i][i];

printf("Sum=%d\n",sum);

}

2.给定函数fun的功能是:

将从键盘上输入的每个单词的第一个字母转换为大写字母,输入时各单词必须用空格隔开,用'.'结束输入。

请改正函数中的错误,使程序能输出正确的结果。

intfun(char*c,intstatus)

{

/***********found**********/

if(c=='')return1;

else

{

if(status&&*c<='z'&&*c>='a')

/***********found**********/

c+='A'-'a';

return0;

}

}

3.给定函数fun的功能是:

计算整数n的阶乘。

请改正函数中的错误或在横线处填上适当的内容并把横线删除,使它能计算出正确的结果。

doublefun(intn)

{

longresult=1;

while(n>1&&n<30)

/*********found*********/

result*=--n;

/*********found*********/

return________;

}

习题答案

一、单选题

1.C2.B3.D4.D5.D6.C7.B8.C

9.B10.D11.A12.A13.D14.D15.C16.D

17.A18.B19.A20.D21.D22.D23.B24.D

25.A

二、填空题

1.x+=12.303.89214.15

5.i

9.structSTRU10.structSTRU

三、改错题

1.sum=0;scanf("%d",&a[i][j]);

2.if(*c=='')return1;*c+='A'-'a';

3.result*=n--;returnresult;

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

当前位置:首页 > 高中教育 > 英语

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

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