C程序设计复习题附答案.docx

上传人:b****5 文档编号:27740093 上传时间:2023-07-04 格式:DOCX 页数:37 大小:41.79KB
下载 相关 举报
C程序设计复习题附答案.docx_第1页
第1页 / 共37页
C程序设计复习题附答案.docx_第2页
第2页 / 共37页
C程序设计复习题附答案.docx_第3页
第3页 / 共37页
C程序设计复习题附答案.docx_第4页
第4页 / 共37页
C程序设计复习题附答案.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

C程序设计复习题附答案.docx

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

C程序设计复习题附答案.docx

C程序设计复习题附答案

C程序练习题

一.单项选择题

⑴“a”在内存中占B字节。

A.1个B.2个C.3个D.4个

⑵a=b+=c+5,若b=1,c=2,则a的值是C。

A.1B.7C.8D.出错

⑶下列合法的变量名是B。

A.123B.nextC.intD.*x

⑷字符型数据在微机内存中的存储形式是D。

A.反码B.补码C.EBCDIC码D.ASCII码

⑸请选出可作为C语言用户标示符的一组标示符B。

A.voidB.a3_b3C.ForD.Za

Define_123_abcDO

WORDIFcasesizeof

⑹若变量已正确定义并赋值,不符合C语言语法的表达方式是D。

A.a=a+7B.a=7+b+c,a++C.(int)(12.3)%4D.a=a+7=c+b

⑺TURBOC中int类型变量所占字节数是B。

A.1B.2C.3D.4

⑻执行scanf(“a=%d,b=%d”,&a,&b)语句,若要使变量a和b的值分别为3和4,则正确的输入方法为C。

A.3,4B.a:

3b:

4C.a=3,b=4D.34

⑼下列程序的执行结果是B。

A.5,0,-10B.0,0,5C.–10,5,-10D.5,0,5

main()

{inta=0,b=0,c=0;

c=(a-=a-5),(a=b,b+5);

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

⑽若输入2.50,下列程序的执行结果是D。

A.0B.3.125C.3.13D.程序有错

main()

{floatr,area;

scanf(“%5.2f”,&r);

printf(“area=%f\n”,area=1/2*r*r);}

⑾设a,b均是int型变量,则以下不正确的函数调用为D。

A.getchar()B.putchar(‘\106’);C.scanf(“%d,%2d”,&a,&b);D.putchar(‘\’);

⑿设a为整形变量,不能正确表达数学关系:

10

A.1010&&a<15D.!

(a<=10)&&!

(a>=15)

⒀在以下一组运行符中,优先级最高的是C。

A.<=B.=C.%D.&&

⒁在以下运算符中,优先级最高的运算符是B。

A.<=B./C.!

=D.&&

⒂假设所有变量均为整形,表达式(a=2,b=5,a>b?

a++:

b++,a+b)的值是B。

A.7B.8C.9D.2

⒃在以下运算符中,优先级最高的运算符是A。

A.!

B.=C.+D.‖

⒄执行下列程序段后,变量的正确结果,供选择的答案是D。

A.10B.11C.12D.13

inti=10,j=0;

do{switch(i)

{case9:

i++;

case10:

i++;

case11:

i++;

defaut:

i++;}

}while(j);

⒅以下程序执行C次。

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

#include“stdio.h”

#defineN2

#defineMN+1

#defineNUM(M+1)*M/2

main()

{inti,n=0;

for(i=1;i<=NUM;i++){n++;printf(“%d”,n);}

printf(“\n”);}

⒆对两个静态数组A和B进行如下初始化:

staticcharA[]=“ABCDEF”;

staticcharB[]={‘A’,‘B’,‘C’,‘D’,‘E’,‘F’};

则下列叙述正确的是D。

A.A和B完全相同B.A和B只是长度相同C.A数组长度比B数组短D.A数组长度比B数组长

⒇下列对C语言字符数组的描述中错误的是C。

A.字符数组可以存放字符串B。

字符数组中的字符串可以整体输入、输出

C。

可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值D。

不可以用关系运算符对字符数组中的字符串进行比较

⑴不能把字符串:

Hello!

赋给数组b的语句是B。

A.charb[10]={‘H’,‘e’,‘l’,‘l’,‘o’,‘!

’,‘\0’};B。

charb[10];b=“Hello!

”;

C。

charb[10];strcpy(b,“Hello!

”);D。

charb[10]=“Hello!

”;

⑵若有以下说明:

inta[12]={1,2,3,4,5,6,7,8,9,10,11,12};

charc=‘a’,d,g;

则数值为4的表达式是D。

A.a[g-c]B.a[4]C.a[‘d’-‘c’]D.a[‘d’-c]

⑶合法的数组定义是B。

A.inta[]=“string”B.inta[5]={1,2,3,4,5}C.chara=“string”D.chara[]={1,2,3,4,5}

⑷若有定义和语句:

staticchars1[]=“abcd”;

chars2[10];s2=s1;

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

则结果是(以下□代表空格)D。

A.输出abcdB.输出aC.输出abcd□□□□D.编译不通过

⑸以下程序段给数组所有元素输入数据,应在下划线处填入的是B。

A.a+(++i)B.&a[i++]C.a+iD.&a[++i]

main()

{inta[10],i=0;

while(i<10)scanf(“%d”,);

……;}

⑹变量的指针,其含义为指该变量的B。

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

⑺设ptr1和ptr2均为指向同一个int型一维数组的指针变量,k为int型变量,则下面不能正确执行的赋值语句是B。

A.k=*ptr1+*ptr2;B.ptr2=k;C.ptr1=ptr2;D.k=*ptr1*(*ptr2);

⑻设char*s=“\ta\017bc”,则指针变量s指向的字符串所占的字节数是C。

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

⑼以下程序有错,错误原因是D。

main()

{int*p,i;char*q,ch;

p=&i;q=&ch;*p=40;*p=*q;

……;}

A.p和q的类型不一致,不能执行*p=*q;语句B。

*q中存放的是地址值,因此不能执行*p=40;语句

C。

q无具体指向,所以*q无实际意义D。

q虽然指向了具体的存储单元,但该单元无确定值,故不能执行*p=*q

⑽有四组对指针变量操作的语句,以下判断正确的是D。

①int*p,*q;q=p;inta,*p,*q;p=q=&a②inta,*p,*q;q=&a;p=*q;inta=20,*p;*p=a

③inta=b=0,*p;p=&a;b=*p;inta=20,*p,*q=&a;*p=*q;④inta=20,*p,*q=&a;p=q;a=*p;

A.正确:

①不正确②③④B.正确:

①④不正确②③C.正确:

③不正确①②④D.正确:

④不正确①②③

⑾设程序段chars[]=“china”;char*p;p=s;则下列叙述正确的是CD。

A.s和p完全相等B。

数组s中的内容和指针变量p中的内容完全相等

C.s数组长度和p所指向的字符串长度完全相等Ds[0]和*p相等

⑿若a、b,、c均为int型变量,则执行以下语句后的a、c值分别为(B)。

a=b=c=-1;++a||++b&&++c;

A)不正确B)0和-1C)0和0D)-1和0

⒀若a、b均为int型变量且a=100,则以下关于for循环语句的正确判断为(A)。

for(b=100;a!

=b;++a,++b)printf(“--------”);

A)循环体一次也不执行B)死循环C)循环体只执行一次D)输出--------

⒁一个C程序总是从(A)开始执行的。

A)主函数B)主过程C)子函数D)子过程

⒂在C语言中,int、char和short三种类型数据所占用的内存(C)。

A)均为两个字节B)均由用户自己定义C)由所用机器的机器字长决定D)是任意的

⒃以下哪一个不是正确的转义符(B)。

A)‘\\’B)‘\’C)‘108’D)‘\0’

⒄以下关于switch语句和break语句的描述中,只有(C)是正确的。

A)在switch语句中必须使用break语句B。

break语句只能用于switch语句

C。

在switch语句中可以根据需要使用或不使用break语句D。

break语句是switch语句的一部分

⒅为了判断两个字符串s1和s2是否相等,应当使用(D)。

A)if(s1==s2)B)if(s1=s2)C)if(strcpy(s1,s2))D)if(strcmp(s1,s2)==0)

⒅函数定义的缺省类型为C。

A.voidB.doubleC.intD.char

⒆在C语言程序中,说法正确的是B。

A.函数的定义可以嵌套,但函数的调用不可以嵌套B。

函数的定义可以不嵌套,但函数的调用可以嵌套

C。

函数的定义和函数的调用都不可以嵌套D。

函数的定义和函数的调用都可以嵌套

⒇C语言规定,函数返回值的类型是由D。

A.return语句中的表达式类型所决定B。

调用该函数时的主调函数所决定

C。

调用该函数时系统临时决定D.在定义该函数时所指定的函数类型所决定

1、一个C语言程序是由[A]组成。

 A、主程序  B、子程序  C、函数  D、过程

2、下面标识符中,不合法的用户标识符为[D]。

 A、PAd   B、a_10C、CHAR  D、a#b

3、在C语言中,int、char和short三种类型数据所占用的内存[C]。

 A、均为2个字节        B、由用户自己定义 C、由所用机器的机器字长决定  D、是任意的

4、若w=1,x=2,y=3,z=4,则条件表达式w

w:

y

y:

z的结束为[D]。

 A、4  B、3  C、2  D1

5、设x和y均为int型变量,则执行以下语句后的输出为[A]。

A、0  B、1  C、6  D、12

x=15;y=5;

Printf(“%d\n”,x%=(y%=2));

6、下列程序正确的运行结果为[B]。

A、9.800000B、9.300000  C、8.500000  D、8.000000

#include

main()

{inta=1,b=4,c=2;

floatx=5.5,y=9.0,z;

z=(a+b)/c+sqrt((double)y)*1.2/c+x;

printf(“%f\n”,z)}

7、运行下面程序后的w值为[A]。

A、20  B、7  C、28  D、13

main()

{intw=2,k;

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

{w=f(w);

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

f(x)

intx;

{inty=0;

staticz=3;

y++;z++;

return(x+y+z);}

8、若有说明语句inti,j,且i的值为6,执行语句j=(++i)+(i++)后,j的值是[B]。

 A、4  B、14  C、13  D、15

9、若a、b为int型变量,则执行以下语句后,a,b的值为[]。

A、2,9  B、4,2  C、3,-1  D、2、8

 a=1;b=10;

do{b-=a;

a++;

}while(b--<0);

10、若a为int型变量,则执行以下语句后的结果为[A]。

A、5  B、不打印任何内容  C、4  D、陷入死循环

 a=5;

do{printf(“%2d\n”,a--);

}while(!

a); 

11、若x、y的int型变量,则执行以下语句后的x,y值是[A]。

A、10,6  B、6,4  C、7,8  D、10,2

 for(y=1,x=1;y<=50;y++)

{if(x>=10)break;

if(x%2==1)

{x+=5;

continue;}

x-=3;} 

12、下列程序正确的运行结果为[B]。

A、8,20  B、8,8  C、8,17  D、8,16

#include

main()

{intj=4,m=1,k;

k=fun(j,m);

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

fun(x,y)

intx,y;

{staticintm=0,i=2;

i+=m+1;

m=i+x+y;

return(m);} 

13、下列程序正确的运行结果为[A]。

A、12,2  B、5,20  C、2,12  D、不确定

 #include

intx,y;

num()

{inta=15,b=10;

intx,y;

x=a-b;

y=a+b;

retrun;}

main()

{inta=7,b=5;

x=a+b;

y=a-b;

num();

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

⒁C语言规定,简单变量做实参时,它和形参之间的数据传递方式是D。

A.地址传递B.单向值传递C.有实参传给形参,再由形参传回给实参D.由用户指定传递方式

⒂若用数组名作为函数调用的实参,传递给形参的是A。

A.数组的首地址B.数组第一个元素的值C.数组中全部元素的值D.数组元素的个数

⒃如果函数的类型和return语句中表达式的值的类型不一致,则A。

A.返回值的类型以函数类型为准B.返回值的类型不能确定

C.返回值的类型以return语句中表达式的类型为准D.编译不通过

⒄如果在一个函数中的复合语句中定义了一个变量,则该变量A。

A.指在该复合语句中有效B.在该函数中有效C.在本程序范围内均有效D.为非法变量

⒅以下不正确的描述为(B)。

A)在函数之外定义的变量为外部变量,外部变量是全局变量

B)在一个函数中既可以使用本函数中的局部变量,又可以使用别的函数中的局部变量

C)外部变量定义和外部变量说明的含义不同

D)同一个源文件中,外部变量与局部变量同名,则在局部变量的作用范围内,外部变量不起作用。

⒆下面写法错误的数字是(A)。

A)123E3B)4.3-6EC)E7D)2.9+3e

⒇已知x=’P’,y=’A’,P与A的ASCII码值分别为80和64,则表达式a=x>y?

‘a’:

1.5的值是(B)。

A)1.5B)97C)TD)97.0

1.面向算法的计算机语言是(B)A.可视化语言B.高级语言C.汇编语言D.机器语言

2.以下运算符使用错误的是(B)A.--kB.(a+b)--C.++jD.i++

3.关于C语言程序的正确叙述是(D)

A.main()所在行的末尾必须要有分号(;)B.主函数的函数体不一定用花括号({})括起来

C.一个完整的C程序可以没有任何函数D.C语言程序的简单语句必须用分号(;)作为语句的结束符

4.已知:

inti=5,a;当a=i++;语句执行后,变量i和a的值分别是(C)A.55B.56C.65D.66

5.用C语言表示算式

,错误的表达式是(C)A.a/(c*d)*bB.a*b/c/dC.a*b/c*dD.a*b/(c*d)

6.下列程序的运行结果是(C)A.0B.1C.3D.3.3

#include

main()

{intx=10,y=3;

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

7.下列程序的运行结果是(A)A.18B.19C.22D.23

#include

main()

{intx=023;

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

8.C语言中,关于scanf()函数正确的叙述是(A)

A.利用scanf()函数可以给变量提供数据B.scanf()函数具有计算功能C.scanf()函数就是输入语句D.scanf()函数只能用在主函数中

9.C语言中,已知a的ASCII码为97,A的ASCII码为65。

又已知,int,c;chari;scanf("%c,%d",&c,&i);语句执行后,若要使c的值为101,i的值为正确的数据输入为(注:

↙为回车符号)(C)A.101,68↙B.101,D↙C.e,68↙D.e,D↙

10.已知:

intx=100,y;y=x>80?

60:

70;

则y的值是(A)A.60B.70C.80D.100

11.C语言中,已知intb=2;则下列表达式值为1的是(A)A.b>1B.b>bC.b<1D.!

(b=1)

12.C语言中,下列语句运算符的执行次序是(C)x=!

a==b;

A.先执行=,再执行!

,再执行==B.先执行==,再执行!

,再执行=C.先执行!

,再执行==,再执行=D.执行次序是随机的

13.下列程序的功能是(B)

#include

main()

{charc;

c=getchar();

if(c>='a'&&c<='z')c=c-32;

putchar(c);}

A.将大写字母转换成小写字母B.将小写字母转换成大写字母C.将大小写字母互换D.以上均错误

14.C语言中,关于while与do-while语句正确的叙述是(D)

A.允许从do-while外部转到循环体内B.do-while的循环体不能是复合语句

C.while的循环控制条件比do-while的循环控制条件严格D.do-while的循环体至少无条件执行一次

15.下列程序段执行后,k的值是(C)A.9B.10C.11D.不定

intk=1;while(k++<10);

16.下列C语言程序运行时输入2473↙,则输出结果是(B)A.668966B.668977C.6677877D.6688766

(注:

↙为回车符号)

#include

main()

{intcx;

while((cx=getchar())!

='\n')

{switch(cx-'2')

{case0:

case1:

putchar(cx+4);

case2:

putchar(cx+4);break;

case3:

putchar(cx+3);

default:

putchar(cx+2);}}}

17.下列程序的运行结果是(C)A.x=4B.x=6C.x=8D.x=12

#include

main()

{inti,j,x=0;

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

{x++;

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

{if(j%2)continue;

x++;}

x++;}

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

18.已知:

inti=5,s;则s=i--;等价于(A)A.s=i;i=i-1;B.i=i-1;s=i;C.s=i;s=s-1D.s=i;s=i-1;

19.C语言中关于数组的正确叙述是(C)

A.数组名代表数组中的全部元素B.若有定义inta[10],说明该数组元素的最大下标是10

C.定义数组时可以同时初始化该数组D.初始化数组时必须使所赋初值的个数与数组长度相等

20.已知:

主函数中,inta[3]={4};数组元素a[1]的值是(A)A.0B.1C.4D.不确定

21.下列程序的运行结果是(B)A.EB.FC.EFGHD.FGH

#include

main()

{char*b="ABCDEFGH";

printf("%c",b[5]);}

22.下列程序的运行结果是(B)A.44B.8C.95D.以上结果均不正确

#include

intd=1;

fun(p)

intp;

{intd=5;

d+=p++;

printf("%d",d);}

main()

{inta=3;

fun(a);

d+=a++;

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

23.函数strcat(strcpy(str1,str2),str3)的功能是(C)

A.将串str1复制到串str2中后,再连接到串str3后B.将串str1连接到串str2中后,再复制到串str3后

C.将串str2复制到串str1中后,再将str3连接到串str1之后D.将串str2复制到串str1中后,再将str1连接到串str3之后

24.对C语言函数的正确描述是(D)

A.C语言程序总是从第一个定义的函数开始执行B.C语言程序中,要调用的函数必须放在main()函数中定义

C.C语言程序中的main()函数必须放在程序的开始部分D.C语言程序总是从main()函数开始执行

25.已知:

inta,*p;如果p指向a,则(D)

A.a与p存储单元的地址相同B.a与p的值相同C.a的值是p的地址D.p的值是a的地址

26.指针变量作为形参时,下列叙述正确的是(A)

A.实参可以是同类型的指针变量B.实参可以是同类型的常数C.实参可以是关系表达式D.实参可以是算术表达式

27.已知:

inta[]={1,3,5,7,9},*ip=a;表达式*ip+2的值是(B)

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

28.下列程序段的输出结果是(B)A.-3B.-2C.-1D.3

inta[]={1,-2,3,-4},*ip=a;ip++;

printf"%d",(*ip)++);

29.C语言中,能够将数据写入磁盘文件的函数是(

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

当前位置:首页 > 求职职场 > 简历

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

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