计算机C语言期末复习资料(含答案)_第1页
计算机C语言期末复习资料(含答案)_第2页
计算机C语言期末复习资料(含答案)_第3页
计算机C语言期末复习资料(含答案)_第4页
计算机C语言期末复习资料(含答案)_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单项选择题1.char*p[10];该语句声明了一个:C。A)指向含有10个元素的一维字符型数组的指针变量pB)指向长度不超过10的字符串的指针变量pC)有10个元素的指针数组p,每个元素可以指向一个字符串D)有10个元素的指针数组p,每个元素存放一个字符串2.在while(!x)语句中的x与下面条件表达式等价的是:D。A)x!=0B)x==1C)x!=1D)x==03.若二维数组a有m行n列,则下面能够正确引用元素a[i][j]的为:C。A)*(a+j*n+i)B)*(a+i*n+j)C)*(*(a+i)+j)D)*(*a+i)+j4union{double k; char c; float a;}test;则sizeof(test)的值是:A。A)8 B)1C)4 D)135、下面程序的输出是____D_____

#include<stdio.h>

void

main()

{

int

k=11;

printf("k=%d,k=%o,k=%x\n",k,k,k);(%o为8进制输出,%x为16进制输出)

}

A)

k=11,k=12,k=11

B)

k=11,k=13,k=13

C)

k=11,k=013,k=0xb

D)

k=11,k=13,k=B

6、在下列选项中,不正确的赋值语句是____D____.(在变量说明中,不允许连续给多个变量赋初值,而赋值语句允许连续赋值。如下述说明是错误的:)

A)

++t;

B)

n1=(n2=(n3=0));

C)

k=i=j;

D)

a=b+c=1;

7、下面合法的C语言字符常量是_____A_____.

A)

'\t'

B)

"A"

C)

65

D)

A

8、表达式:

10!=9的值是______D_____.

A)

true

B)非零值

C)

0

D)

1

9、C语言提供的合法的数据类型关键字是_____B___.

A)

Double(应该为double)

B)

shortC)

integer(应该为int)

D)

Char(应该为char)

10、字符(char)型数据在微机内存中的存储形式是__D__.

A)

反码

B)

补码

C)

EBCDIC码

D)

ASCII码

11、C语言程序的基本单位是_____C______.

A)

程序行

B)

语句

C)

函数

D)

字符

12、设

int

a=12,则执行完语句a+=a-=a*a后,a的值是_____D__

A)

552

B)

264

C)

144

D)

-264

13、执行下面程序中的输出语句后,输出结果是__B____.

#include<stdio.h>

void

main()

{int

a;

printf("%d\n",(a=3*5,a*4,a+5));

}

A)

65

B)

20

C)

15

D)

10

14、下面程序的输出是__B________.

#include<stdio.h>

void

main()

{int

x=023;(八进制)

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

}

A)

17

B)

18

C)

23

D)

24

15下面程序的输出的是___C______.

#include<stdio.h>

void

main()

{int

x=10,y=3;

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

}

A)

0

B)

1

C)

3

D)

不确定的值

16、已知字母A的ASCII码为十进制的65,下面程序的输出是_______A____.

#include<stdio.h>

void

main()

{char

ch1,ch2;

ch1='A'+'5'-'3';

ch2='A'+'6'-'3';

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

}A)

67,D

B)

B,C

C)

C,D

D)

不确定的值

17、若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为_D_____.

A)

a<>0

B)

!a

C)

a=0

D)

a

18、以下程序的输出结果是__D______.

#include<stdio.h>

void

main()

{

int

x=10,y=10;

printf("%d

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

}A)

10

10

B)

9

9

C)

9

10

D)

10

9

19、设有如下定义:

int

x=10,y=3,z;

则语句printf("%d\n",z=(x%y,x/y));

的输出结果是_D_______.

A)

1

B)

0

C)

4

D)

3

20、为表示关系x≥y≥z,应使用C语言表达式____A__.

A)

(x>=y)&&(y>=z)

B)

(x>=y)AND(y>=z)

C)

(x>=y>=z)

D)

(x>=y)

&

(y>=z)21、C语言中非空的基本数据类型包括__B______.(基本数据类型有整型,字符型,浮点型,枚举类型)

A)

整型,实型,逻辑型

B)

整型,实型,字符型

C)

整型,字符型,逻辑型

D)

整型,实型,逻辑型,字符型

22、若x和y都是int型变量,x=100,y=200,且有下面的程序片段:

printf("%d",(x,y));

上面程序片段的输出结果是___A____.

A)

200

B)

100

C)

100

200

D)

输出格式符不够,输出不确定的值

23、阅读下面的程序

#include<stdio.h>

void

main()

{

char

ch;

scanf("%3c",&ch);(%3c表示输入三个字符)

printf("%c",ch);

(表示输出一个字符)}

如果从键盘上输入abc<回车>

则程序的运行结果是__A____.

A)

a

B)

b

C)

c

D)

程序语法出错

24、阅读下面的程序

#include<stdio.h>

void

main()

{

int

i,j;

i=010;

j=9;

printf("%d,%d",i-j,i+j);

}

则程序的运行结果是___D_____.

A)

1,19

B)

-1,19

C)

1,17

D)

-1,17

25、阅读下面的程序

#include<stdio.h>

void

main()

{

int

i,j,m,n;

i=8;j=10;

m=++i;

n=j++;

printf("%d,%d,%d,%d",i,j,m,n);

}

程序的运行结果是____C___;A)

8,10,8,10

B)

9,11,8,10

C)

9,11,9,10

D)

9,10,9,11

26、已知a=12,则表达式a+=a-=a*=a的结果是__A_____.

A)

0

B)

144

C)

12

D)

-264

27、若已定义int

a,则表达式a=10,a+10,a++的值是_B__.

A)

20

B)

10

C)

21

D)

11

28、阅读下面的程序

#include<stdio.h>

void

main()

{

int

i,j;

scanf("%3d%2d",&i,&j);

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

}

如果从键盘上输入1234567<回车>,则程序的运行结果是____D____.

A)

i=123,j=4567

B)

i=1234,j=567

C)

i=1,j=2

D)

i=123,j=45

29、下面程序的输出结果是___D_____.

#include<stdio.h>

void

main()

{

int

a=-1,

b=4,

k;

k=(++a<=0)&&(b--<=0);(如果&&前面部分为假则&&后面的部分就不被执行,如果前面部分为真则&&后面部分需要被执行)

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

}

A)

1,1,2

B)

1,0,3

C)

0,1,2

D)

0,0,3

30、下面叙述错误的是___D___A)一个由数据申明部分和执行语句组成。B)任何表达式都可以加上分好而成为语句。C))break语句只能用于循环语句和switch语句。D)二维数组的第二维可以省略。31、为了避免嵌套的if-else语句的二义性,C语言规定else总是与___C___组成配对关系.A)缩排位置相同的ifB)在其之前未配对的ifC)在其之前尚未配对的最近的ifD)同一行上的if32、对于for(表达式1;;表达式3)可理解为______B____.A)for(表达式1;0;表达式3)B)for(表达式1;1;表达式3)C)for(表达式1;表达式1;表达式3)D)for(表达式1;表达式3;表达式3)33、若i为整型变量,则以下循环语句的循环次数是_B_.for(i=2;i==0;)printf("%d",i--);A)无限次B)0次C)1次D)2次34、若已定义x和y是整型变量,x=2;,则表达式y=2.75+x/2的值是____C____.A)5.5B)5C)3D)4.035、以下程序的输出结果是____D____.#include<stdio.h>voidmain(){inta=12,b=12;printf("%d,%d\n",--a,++b);}A)10,10B)12,12C)11,10D)11,1336、若有定义inta=12,n=5,则表达式a%=(n%2)运算后,a的值______A____.A)0B)1C)12D)637、若有定义intx=3,y=2和floata=2.5,b=3.5,则表达式:(x+y)%2+(int)a/(int)b的值是__D__.A)0B)2C)1.5D)138、C语言中的变量名只能由字母,数字和下划线三种字符组成,且第一个字符____C____.A)必须为字母B)必须为下划线C)必须为字母或下划线D)可以是字母,数字或下划线中的任意一种39、设有说明:charw;intx;floaty;doublez;则表达式:w*x+z-y值的数据类型是___D____.A)floatB)charC)intD)double40、设a为整型变量,不能正确表达数学关系10<a<15的C语言表达式是____A____.A)a>10||a<15B)a==11||a==12||a==13||a==14C)a>10&&a<15D)!(a<=10)&&!(a>=15)41、下列程序执行后的输出结果是_____C____.#include<stdio.h>voidmain(){inta=5,b=60,c;if(a<b){c=a*b;printf("%d*%d=%d\n",b,a,c);}else{c=b/a;printf("%d/%d=%d\n",b,a,c);}}A)60/5=12B)300C)60*5=300D)1242、执行下列程序段后的输出结果是_____A____.intx=1,y=1,z=1;x+=y+=z;printf("%d\n",x<y?y:x);A)3B)2C)1D)443、设ch是char型变量,值为'A',则表达式ch=(ch>='A'&&ch<='Z')?ch+32:ch的值是__B___.A)ZB)aC)zD)A44、以下对二维数组a进行正确初始化的是__B_____.A)inta[2][3]={{1,2},{3,4},{5,6}};B)inta[][3]={1,2,3,4,5,6};C)inta[2][]={1,2,3,4,5,6};D)inta[2][]={{1,2},{3,4}};45、运行下面程序时,若从键盘输入"3,4<CR>",则程序的输出结果是____B___.#include<stdio.h>voidmain(){inta,b,s;scanf("%d,%d",&a,&b);s=a;if(s<b)s=b;s=s*s;printf("%d\n",s);}A)14B)16C)18D)2046、下列程序的执行结果是_____D____.#include<stdio.h>voidmain(){intx=0,y=1,z=0;if(x=z=y)x=3;printf("%d,%d\n",x,z);}A)3,0B)0,0C)0,1D)3,147、有如下程序#include<stdio.h>voidmain(){floatx=5.0,y;if(x<0.0)y=0.0;elseif(x<10.0)y=1.0/x;elsey=1.0;printf("%f\n",y);}该程序的输出结果是____C_____.A)0.000000B)0.50000C)0.200000D)1.00000048、以下定义语句中,错误的是___B_____.A)inta[]={1,2};B)chara={"test"};C)chars[10]={"test"};D)inta[]={'a','b','c'};49、有如下程序:#include<stdio.h>voidmain(){inta=2,b=-1,c=2;if(a<b)if(b<0)c=0;elsec++;printf("%d\n",c);}该程序的输出结果是___C_____.A)0B)1C)2D)350、下列程序执行后的输出结果是____B____.#include<stdio.h>voidmain(){intx,y=1,z;if((z=y)<0)x=4;elseif(y==0)x=5;elsex=6;printf("%d,%d\n",x,y);}A)4,1B)6,1C)5,0D)出错信息51、有如下程序#include<stdio.h>voidmain(){intx=1,a=0,b=0;switch(x){case0:b++;case1:a++;case2:a++;b++;}printf("a=%d,b=%d\n",a,b);}该程序的输出结果是______A____.A)a=2,b=1B)a=1,b=1C)a=1,b=0D)a=2,b=252、以下说法中正确的是_____C___.A)C语言程序总是从第一个定义的函数开始执行B)在C语言程序中,要调用的函数必须在main()函数中定义C)C语言程序总是从main()函数开始执行D)C语言程序中的main()函数必须放在程序的开始部分53、假定w、x、y、z、m均为int型变量,有如下程序段:w=1;x=2;y=3;z=4;m=(w<x)?w:x;m=(m<y)?m:y;m=(m<z)?m:z;则该程序段执行后,m的值是____D_____.A)4B)3C)2D)154、以下程序的输出结果是___D______.main(){inta=100;if(a>100)printf("%d\n",a>100);elseprintf("%d\n",a<=100);}A)a<=100B)100C)0D)155、若执行下面的程序从键盘上输入9,则输出结果是.______B________#include<stdio.h>voidmain(){intn;scanf("%d",&n);if(n++<10)printf("%d\n",n);elseprintf("%d\n",n--);}A)11B)10C)9D)856、下列程序的输出结果是____C____.#include<stdio.h>voidmain(){charb[]="ABCDEFG";charp=0;while(p<7)putchar(b[p++]);putchar('\n');}A)GFEDCBAB)BCDEFGC)ABCDEFGD)GFEDCB57、如有定义语句inta[]={1,8,2,8,3,8,4,8,5,8};,则数组a的大小是___A_____.A)10B)11C)8D)不定58、以下对C语言函数的有关描述中,正确的是___A__.A)在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参B)C函数既可以嵌套定义又可以递归调用C)函数必须有返回值,否则不能使用函数D)C程序中有调用关系的所有函数必须放在同一个源程序文件中59、有如下说明:inta[10]={0,1,2,3,4,5,6,7,8,9};则数值不为9的表达式是____B____.A)a[10-1]B)a[8]C)a[9]-0D)a[9]-a[0]60、设有数组定义:chararray[]="China";则数组array所占的存储空间为____C____.(存放字符串时,最后的\0会占用一个字节,但是有效字是5个字符,但是占用6个字节的内存)A)4个字节 B)5个字节C)6个字节 D)7个字节61、在以下叙述中,不正确的选项是____B____。A)C语言程序总是从main()函数开始执行B)在C语言程序中,被调用的函数必须在main()函数中定义C)C程序是函数的集合,在这个函数集中包括标准函数和用户自定义函数D)在C语言程序中,函数的定义不能嵌套,但函数的调用可以嵌套62、C语言中,若未说明函数的类型,则系统默认该函数的类型是___C_____。A)float型B)long型C)int型D)double型63、对于C语言的函数,下列叙述中正确的是___A___.A)函数的定义不能嵌套,但函数调用可以嵌套B)函数的定义可以嵌套,但函数调用不能嵌套C)函数的定义和调用都不能嵌套D)函数的定义和调用都可以嵌套64、在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是_____B___.A)地址传递B)单向值传递C)由实参传给形参,再由形参传回实参D)传递方式由用户指定65、以下函数fun形参的类型是____D____.fun(floatx){floaty;y=3*x-4;returny;}A)intB)不确定C)voidD)float66、C语言中规定函数的返回值的类型是由__D______.A)return语句中的表达式类型所决定B)调用该函数时的主调用函数类型所决定C)调用该函数时系统临时决定D)在定义该函数时所指定的类型所决定67、有如下程序intfunc(inta,intb){return(a+b);}voidmain(){intx=2,y=5,z=8,r;r=func(func(x,y),z);printf("%d\n",r);}该程序的输出结果是_____D_____.A)12B)13C)14D)1568、有如下函数调用语句func(rec1,rec2+rec3,rec4,rec5);该函数调用语句中,含有的实参个数是___B_____.A)3B)4C)5D)有语法错误69、C语言中,凡未指定存储类别的局部变量的隐含存储类别是____A____.A)autoB)staticC)externD)register70、在C语言中,全局变量的存储类别是____A_____.A)staticB)externC)voidD)regist程序分析及编程题(请理解程序的作用,可以自行编程,只要达到要求即可,部分程序只给出样题,并非完全一样)1输入一行字符分别统计求出其中英文字母,空格数字和其他字符的个数并输出。参考程序#include<stdio.h>voidmain(){charch;intz=0,k=0,s=0,q=0;for(;(ch=getchar())!='\n';){if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z')z++;elseif(ch=='')k++;elseif(ch>='0'&&ch<='9')s++;elseq++;}printf("zimu:%d\nspace:%d\nshuzi:%d\nqita:%d\n",z,k,s,q);getch();}2任意从键盘输入10个整数,按从小到大的顺序排序,并输出结果。参考程序#include<stdio.h>voidmain(){inta[10];inti,j,t;printf("input10numbers:\n");for(i=0;i<10;i++)scanf("%d",&a[i]);printf("\n");for(j=0;j<9;j++)for(i=0;i<9-j;i++)if(a[i]>a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}printf("thesortednumbers:\n");for(i=0;i<10;i++)printf("%d",a[i]);getch();printf("\n");}3有以下四种水果,(1)苹果(2)柚子(3)桃子(4)葡萄价格分别为3元,4.5元,1元,5元请输入水果编号、数量计算应付款。参考程序#include<stdio.h>intmain(){floati,b,x=3.0,y=4.5,z=1.0,a=5;printf(":\n");scanf("%f%f",&i,&b);switch(i){case1:printf("%f*%f=%7.1f\n",i,x,x*b);break;case2:printf("%f*%f=%7.1f\n",i,y,y*b);break;case3:printf("%f*%f=%7.1f\n",i,z,z*b);break;case4:printf("%f*%f=%7.1f\n",i,a,a*b);break;default:printf("enterdataerror!\n");break;}getch();return0;}4编写函数实现两个数据的交换,在主函数中输入任意三个数据,调用函数对这三个数从大到小排序。参考程序#include<stdio.h>voidSwap(int*a,int*b){intt;t=*a;*a=*b;*b=t;}intmain(){inta,b,c;scanf("%d%d%d",&a,&b,&c);if(a<b)Swap(&a,&b);if(b<c)Swap(&b,&c);if(a<b)Swap(&a,&b);printf("%d%d%d\n",a,b,c);getch();return0;}5以下程序的程序功能是:从键盘输入圆柱体的底面半径r和高h,计算其底面积s和体积v并输出。参考程序#include<stdio.h>voidmain(){floatpi=3.14;floatr,h,s,v;printf("Pleaseinputr,h:\n");scanf("%f,,&r,);s=

;v=

;printf("area=%f,volume=%f\n",,);}6下面的程序试图计算由键盘输入的任意两个整数的平均值,请找出其中的错误:(已改正)参考程序 #include<stdio.h> intmain() { intx,y,a; scanf("%d,%d",&x,&y); a=(x+y)/2; printf("Theaverageis%d:\n",a);return0;}7利用全局变量求长方体的体积及三个面的面积。参考程序#include<stdio.h>ints1,s2,s3;intvs(inta,intb,intc){intv;v=a*b*c;s1=a*b;s2=a*c;s3=b*c;returnv;}intmain(){intv,l,w,h;printf("\ninputlength,widthandheight:");scanf("%d%d%d",&l,&w,&h);v=vs(l,w,h);printf("v=%ds1=%ds2=%ds3=%d\n",v,s1,s2,s3);getch();}8以下程序实现求分段函数。y=-1x>9x*(x+2)3<x<=92*x-1<x<=3x-1x<=-1参考程序#include<stdio.h>intmain(){ intx,y; scanf(“%d”,&x); if()y=x*(x+2); elseif()y=2*x; elseif()y=x-1; elsey=-1; printf(“%d\n”,y); return0;}9计算1-1/2+1/3-1/4……..+1/99-1/100++直到最后一项的绝对值小于10的负4次方参考程序#include<stdio.h>intmain(){doublei=1,t=0,sum=0,sign=-1;while(i<10000){sign=-sign;t=sign/i;sum=sum+t;i++;}printf("sum=%lf\n",sum);getch();return0;}10.编写函数判断某数是否为素数,如果是素数,则返回1,否则返回0,在main函数中调用该函数,根据返回值判断是否为素数。参考程序#include<stdio.h>intf(intx){inti,t=1;for(i=2;i<=x-1;i++)if(x%i==0){t=0;break;}returnt;}main(){intn,t;scanf("%d",&n);t=f(n);if(t==1)printf("%4d是素数",n);elseprintf("%4d不是素数",n);}11.小明妈妈给他买了若干块巧克力,小明第一天吃了一半,还不过瘾,又多吃了一块,第二天又将剩下的巧克力吃掉一半,又多吃一块,以后每天都吃了前一天剩下的一半零一块。到第10天再想吃时,只剩下一块了。编程计算小明妈妈总共给小明买了多少块巧克力?参考程序#include<stdio.h>main(){longls;//每天剩余的巧克力数longts;//天数ls=1;//第十天时剩下一块for(ts=3;ts>=1;ts--){ls=(ls+1)*2;}printf("妈妈共买了%d块巧克力。\n",ls);system("pause");}12.一百万富翁遇到一个陌生人,陌生人找他谈一个换钱的计划,该计划如下:我每天给你十万元,而你第一天只需给我一分钱,第二天我仍给你十万元,你给我二分钱,第三天我仍给你十万元,你给我四分钱,…,你每天给我的钱是前一天的两倍,直到满一月(30天),百万富翁很高兴,欣然接受了这个契约。请编写一个程序计算这一个月中陌生人给了百万富翁多少钱?百万富翁给陌生人多少钱?参考程序#include<stdio.h>#definea100000voidmain(){ doublei,f,q,q1; f=a; q=0.01; for(i=0;i<30;i++) { f+=100000; q+=q*2; } q1=q/100; printf("30天后,富人得到:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论