单片机C语言练习题_第1页
单片机C语言练习题_第2页
单片机C语言练习题_第3页
单片机C语言练习题_第4页
单片机C语言练习题_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

C语言习题集习题一一.填空题1.C程序是由()构成的,一个C程序中至少包含()。因此,()是C程序的基本单位。2.函数体是有符号____开始,符号____结束。函数体当中,前面是变量的____部分,后面变量的____部分。一个C源程序中至少应包括一个_______。在一个C源程序中,注释部分两侧的分界符分别为_____和________。在C语言的每条语句后面都要有____结束二.判断题1.一个C程序的执行总是从该程序的main函数开始,在main函数最后结束。【】2.main函数必须写在一个C程序的最前面。【】3.一个C程序可以包含若干的函数。【】4.C程序的注释部分可以出现在程序的任何位置,它对程序的编译和运行不起任何作用。但是可以增加程序的可读性。【】5.C程序的注释只能是一行。【】6.C程序的注释不能是中文文字信息。【】三、选择题1一个C程序的执行是从________。(A)本程序的main函数开始,到main函数结束。(B)本程序的第一个函数开始,到本程序文件的最后一个函数结束。(C)本程序的main函数开始,到本程序文件的最后一个函数结束。(D)本程序的第一个函数开始,到本程序main函数结束。2以下叙述不正确的是_________。(A)一个C源程序可由一个或多个函数组成。(B)一个C源程序必须包含一个main函数。(C)程序的基本组成单位是函数。(D)在C程序中,/**/类的注释说明只能位于一条语句的后面3C语言规定:在一个源程序中,main函数的位置___。 (A)必须在最开始 (B)必须在所有函数的后面 (C)可以任意 (D)必须在最后程序阅读1、找出该程序中的错误并改正。#include<stdio.h>;main();floatr,s;/*/*risradius*/*/r=5.0s=3.14*r*r;printf(“%f\n”,s)五.编程题1.利用keilc集成开发环境建立一个c语言的工程,旋转的MCU型号是STC89C52,并在工程内添加一个名为main的c文件,并在c文件中建立一个空的主函数。习题二(第2、3节知识)一.选择题1、合法的用户标识符是()A)abcB)!aC)intD)sfr2、合法的字符常量是()A)‘\084’B)“a”C)‘ab’D)3、是C语言提供的合法的数据类型关键字()A)FloatB)unsignedintC)integerD)Char4、在以下各组标识符中,合法的标识符是()(1)A)B01B)table_1C)0_t(2)A)Fast_B)voidC)pblD)<book>(3)A)xy_B)longdoubleC)*pD)CHAR(4)A)sjB)IntC)_xyD)w_y23------------------------------------------------------------------------------5、属于合法的C语言unsignedchar型常量的是()A)5876273B)0C)-20D)587626、unsignedchara=32,charb=‘A’那么表达式a+b的数值是()A)'A'B)0C)-1D)7、判断unsignedcharx=300;x的结果是()A)赋值非法B)溢出C)为300D)为448、为了计算s=10!(即10的阶乘),则s变量应定义为()A)intB)unsignedC)longD)以上三种类型均可9、与代数式(x*y)/(u*v)不等价的C语言表达式是()A)x*y/u*vB)x*y/u/vC)x*y/(u*v)D)x/(u*v)*y10、在C语言中,数字029是一个()A)八进制数B)十六进制数C)十进制数D)非法数11、在C语言中,要求参加运算的数必须时整数的运算符是()A)/B)*C)%D)=12、假定x和y为float型,则表达式x=2,y=x+3/2的值是()A)3.500000B)3C)2.00000013、以下合法的赋值语句是()A)x=y=100B)x+y=a+bC)x+yD)c=int(a+b)14、inta=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后n的值为()A)1B)2C)315、若有定义:inta=3,b=2,c=1;并有表达式:①a%b,②a>b>c,③b&&c+1,④c+=1,则表达式值相等的是()

A)①和②B)②和③C)①和③D)③和④16、逻辑运算符两侧运算对象的数据类型()A)只能是0或1B)只能是0或非0正数C)只能是整型或字符型数据D)可以是任何类型的数据二.填空题1、在C51中,一个unsignedchar数据在内存中所占字节数为,其数值范围为;一个unsignedint数据在内存中所占字节数为,其数值范围为;2、C语言的标识符只能由大小写字母,数字和下划线三种字符组成,而且第一个字符不能为

。3、有intx=3,y=-4,z=5;则表达式(x&&y)==(x||z)的值为。4、在C语言中,不同运算符之间运算次序存在的区别5、设x=2.5,a=7,y=4.7,则x+a%3*(int)(x+y)%2/4为。6、数学表达式1<=a<=3的C语言表达式为。7、已知:chara=’a’,b=’b’,c=’c’,unsignedinti;则表达式i=a+b+c的数值为。8、已知inta=12,n=5;则:表达式运算后a的值各为。a+=aa-=2a*=2+3a/=a+an%=(n%=2)a+=a-=a*=a9、设inta;floatf;则表达式10+’a’+9*f值的数据类型是。10、已知a,b,c是一个整数的百位,十位,个位,则该数的表达式是。11、若a是int变量,则执行表达式a=25/3%3后,a的值是。12、能正确表示“当x的取值在[1,10]和[200,210]范围内为真,否则为假”的表达式是。

A)(x>=1)&&(x<=10)&&(x>=200)&&(x<=210)

B)(x>=1)||(x<=10)||(x>=200)||(x<=210)

C)(x>=1)&&(x<=10)||(x>=200)&&(x<=210)

D)(x>=1)||(x<=10)&&(x>=200)||(x<=210)13、C语言提供6种关系运算符,按优先级高低它们分别是,,,,,等。14、C语言提供三种逻辑运算符,按优先级高低它们分别是,,。15、设a=3,b=4,c=5,写出下面各逻辑表达式的值。表达式表达式运算后的值a+b>c&&b==c!(a>b)&&!c||1!(a+b)+c–1&&b+c/216、将条件“y能被4整除但不能被100整除,或y能被400整除”写成逻辑表达式

。17、已知A=7.5,B=2,C=3.6,表达式A>B&&C>A||A<B&&!C>B的值是。三.程序阅读题1.写出以下程序的输出结果。

main()

{inty=3,x=3,z=1;

printf(“%d%d\n”,(++x,y++),z+2);

}四.程序填空题1.下列程序的输出结果是16.00,请填(1)空使程序完整。main(){inta=9,b=2;

floatx=[1],y=1.1,z;

z=a/2+b*x/y+1/2;

printf(“%5.2f\n”,z);}五.编程题1.已知a,b均是无符号整型变量,写出将a,b两个变量中的值互换的程序来。习题三(第4、5节知识)一.选择题1、C语言对嵌套if语句的规定是:else总是与()

A)其之前最近的if配对B)第一个if配对

C)缩进位置相同的if配对D)其之前最近的且尚未配对的if配对2.下面是错误的if语句(设intx,a,b;)

A)if(a=b)x++;B)if(a=<b)x++;

C)if(a-b)x++;D)if(x)x++;3.以下程序片段()

main()

{intx=0,y=0,z=0;if(x=y+z)

printf(“***”);else

printf(“###”);

}

A)有语法错误,不能通过编译B)输出:***

C)可以编译,但不能通过连接,所以不能运行D)输出:###4.对下述程序,是正确的判断。

main()

{intx,y;scanf(“%d,%d”,&x,&y);if(x>y)

x=y;y=x;else

x++;y++;printf(“%d,%d”,x,y);

}

A)有语法错误,不能通过编译B)若输入3和4,则输出4和5

C)若输入4和3,则输出3和4D)若输入4和3,则输出4和55.下述程序的输出结果是。main(){inta=0,b=0,c=0;

if(++a>0||++b>0)

++c;

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

A)0,0,0B)1,1,1C)1,0,16.以下程序输出结果是。main(){intx=1,y=0,a=0,b=0;

switch(x){

case1:switch(y){

case0:a++;break;

case1:b++;break;

}

case2:a++;b++;break;

case3:a++;b++;}

printf(“a=%d,b=%d”,a,b);}

A)a=1,b=0B)a=2,b=1C)a=1,b=17.当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是。if(a<b)if(c<d)x=1;else

if(a<c)

if(b<d)x=2;

elsex=3;

elsex=6;elsex=7;

A)1B)2C)38.若inti=0;执行下列程序后,变量i的正确结果是。switch(i){

case9:i+=1;

case10:i+=1;

case11:i+=1;

default:i+=1;}

A)10B)11C)12二.填空题1.一般地,调用标准字符或格式输入输出库函数时,文件开头应有以下预编译命令:

。2.C语句可以分为,,,

和等5种类型。3.C语句的基本结构有种,分别是___________________________4.一个表达式要构成一个C语句,必须。5.复合语句是用一对界定的语句块。三.判断题1.if语句中的表达式不限于逻辑表达式,可以是任意的数值类型。【】2.switch语句的case表达式必须是常量表达式。【】3.if语句,switch语句可以嵌套,而且嵌套的层数没有限制。【】4.switch语句的各个case和default的出现次序不影响执行结果。【】5.多个case可以执行相同的程序段。【】6.内层break语句可以终止嵌套的switch,使最外层的switch结束。【】7.switch语句的case分支可以使用{}复合语句,多个语句序列。【】8.switch语句的表达式与case表达式的类型必须一致。【】四.简答题1.C语言中如何表示“真”和“假”?系统如何判断一个量的“真”和“假”?2.请将以下语句改成switch语句。if((s>0)&&(s<=10))

if((s>=3)&&(s<=6))x=2;

elseif((s>1)&&(s>8))x=3;

elsex=1;elsex=0;五.程序阅读题1.写出以下程序的运行结果。main(){inta=2,b=7,c=5;

switch(a>0){

case1:switch(b<0){

case1:printf(“@”);break;

case2:printf(“!”);break;

}

case0:switch(c==5){

case1:pritnf(“*”);break;

case2:printf(“#”);break;

default:printf(“#”);break;

}

default:printf(“&”);

}

printf(“\n”);}六.程序判断题1.下面程序输入两个运算数x,y和一个运算符号op,然后输出该运算结果的值,例如输入3+5↙得到结果8;请判断下面程序的正误,如果错误请改正过来。

main()

{

floatx,y,r;

charop;

scanf(“%f%c%f”,&x,&op,&y);

switch(op){

case‘+’:r=x+y;

case‘-’:r=x+y;

case‘*’:r=x+y;

case‘/’:r=x+y;

}

printf(“%f”,r);}七.编程题1.有三个整数a,b,c,由键盘输入,输出其中最大的数。2.给出一百分制成绩,要求输出成绩等级’A’,’B’,’C’,’D’,’E’。90分以上为’A’,80-89分为’B’,70-79分为’C’,60-69分为’D’,60分以下为’E’。3.给一个不多于5位的正整数,要求分别输出每一位数字.习题五一.选择题1.下面程序段intk=2;while(k=0){printf(“%d”,k);k--;}则下面描述中正确的是。

A)while循环执行10次B)循环是无限循环

C)循环题语句一次也不执行D)循环体语句执行一次2.以下程序段的循环次数是。

for(i=2;i==0;)printf(“%d”,i--);

A)无限次B)0次C)1次D)2次3.以下不是死循环的程序段是。

A)inti=100;B)for(;;);

while(1){i=i%100+1;if(i>100)break;

}

C)intk=0;D)ints=36;do{++k;}while(k>=0);while(s);--s;4.下述语句执行后,变量k的值是。intk=1;while(k++<10);

A)10B)11C)9下面程序的输出结果是()main(){intk=0,m=0,i,j;

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

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

k++;

k-=j;

}

m=i+j;

printf(“k=%d,m=%d”,k,m);}

A)k=0,m=3B)k=0,m=5C)k=1,m=36.语句while(!E);括号中的表达式!E等价于。

A)E==0B)E!=1C)E!=07.下述程序段的运行结果是。inta=1,b=2,c=3,t;while(a<b<c){t=a;a=b;b=t;c--;}printf(“%d,%d,%d”,a,b,c);

A)1,2,0B)2,1,0C)1,2,18.以下for循环的执行次数是。for(x=0,y=0;(y=123)&&(x<4);x++);

A)无限循环B)循环次数不定C)4次D)3次9.下面for循环语句。

inti,k;

for(i=0,k=-1;k=1;i++,k++)

printf(“***”);

A)判断循环结束的条件非法B)是无限循环

C)只循环一次D)一次也不循环10.执行语句for(i=1;i++<4;);后变量i的值是。

A)3B)4C)5二.填空题1.C语言三个循环语句分别是语句,语句和语句。2.至少执行一次循环体的循环语句是。三.判断题1.在while循环中允许使用嵌套循环,但只能是嵌套while循环。【】2.在实际编程中,do-while循环完全可以用for循环替换。【】3.continue语句只能用于三个循环语句中。【】4.do-while循环的while后的分号可以省略。【】四.程序阅读题1.写出下面程序运行的结果。main(){intx,i;

for(i=1;i<=100;i++){

x=i;

if(++x%2==0)

if(++x%3==0)

if(++x%7==0)

printf(“%d”,x);

}2.写出下面程序运行的结果。main(){intk=1,n=263;

do{k*=n%10;n/=10;}while(n);

printf(“%d\n”,k);}3.写出下面程序运行的结果。main(){inty=2,a=1;

while(y--!=-1)

do{

a*=y;

a++;

}while(y--);

printf(“%d,%d\n”,a,y);}六.程序填空题1.下面程序的功能是输出1至100之间每位数的乘积大于每位数的和的数,请填(3)空使程序完整。main(){intn,k=1,s=0,m;

for(n=1;n<=100;n++){

k=1;s=0;

【1】;

while(【2】){

k*=m%10;

s+=m%10;

【3】;

}

if(k>s)printf(“%dd”,n);

}}2.下面程序按公式求和并输出结果,请填(3)空使程序完整。main(){

【1】;

intk;

for(k=1;k<=100;k++)

s+=k;

for(k=1;k<=50;k++)

s+=k*k;

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

s+=【2】;

printf(“sum=【3】”,s);}七.编程题求(即求1!+2!+3!+…+19!+20!)。习题七一.选择题1.以下正确的说法是。A)用户若需要调用标准库函数,调用前必须重新定义B)用户可以重新定义标准库函数,如若此,该函数将失去原有定义C)系统不允许用户重新定义标准库函数D)用户若需要使用标准库函数,调用前不必使用预处理命令将该函数所在的头文件包含编译,系统会自动调用。2.以下正确的函数定义是。A)doublefun(intx,inty)B)doublefun(intx,y)

{z=x+y;returnz;}{intz;returnz;}C)fun(x,y)D)doublefun(intx,inty)

{intx,y;doublez;{doublez;z=x+y;returnz;}returnz;}3.以下正确的说法是。A)实参和与其对应的形参各占用独立的存储单元B)实参和与其对应的形参共占用一个存储单元C)只有当实参和与其对应的形参同名时才共占用相同的存储单元D)形参时虚拟的,不占用存储单元4.以下正确的函数定义是。A)doublefun(intx,inty)B)doublefun(intx;inty)C)doublefun(intx,inty);D)doublefun(intx,y)5.若调用一个有返回值的函数,且此函数中没有return语句,则正确的说法是。A)该函数没有返回值B)该函数返回若干个系统默认值C)能返回一个用户所希望的函数值D)返回一个不确定的整数值6.C语言规定,简单变量做实参时,它和对应的形参之间的数据传递方式是。A)地址传递B)值传递C)有实参传给形参,再由形参传给实参D)由用户指定传递方式7.C语言规定,函数返回值的类型是由决定的。A)return语句中的表达式类型B)调用该函数时的主调函数类型C)调用该函数时由系统临时D)在定义函数时所指定的函数类型8.如果在一个函数中定义了一个变量,则该变量。A)只在本文件中有定义B)在该函数中有定义C)在本程序范围内有定义D)为非法变量9.以下不正确的说法是。A)在不同函数中可以使用相同名字的变量B)形式参数是局部变量C)在函数内定义的变量只在本函数范围内有定义D)在函数内的复合语句中定义的变量在本函数范围内有定义10.下面程序的输出是。

温馨提示

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

评论

0/150

提交评论