单片机C语言练习题.docx
- 文档编号:4498628
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:18
- 大小:25.19KB
单片机C语言练习题.docx
《单片机C语言练习题.docx》由会员分享,可在线阅读,更多相关《单片机C语言练习题.docx(18页珍藏版)》请在冰豆网上搜索。
单片机C语言练习题
C语言习题集
习题一
一•填空题
1.C程序是由()构成的,一个C程序中至少包含()。
因此,()是C程序的基本单位。
2.函数体是有符号____开始,符号_结束。
函数体当中,前面是变量的____部分,后面变量的____部分。
3.一个C源程序中至少应包括一个。
4•在一个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
main();
floatr,s;/*/*risradius*/*/
r=5.0s=3.14*r*r;
printf(“%f\n”,s)
5.编程题
1.利用keilc集成开发环境建立一个c语言的工程,旋转的MCU型号是STC89C52,并在工程内添加一个名为
main的c文件,并在c文件中建立一个空的主函数。
习题二(第2、3节知识)
一•选择题
1、合法的用户标识符是()
A)abcB)!
aC)intD)sfr
2、合法的字符常量是()
A),\084?
B)a”C),ab?
D)96
3、是C语言提供的合法的数据类型关键字()
A)FloatB)unsignedintC)integerD)Char
4、在以下各组标识符中,合法的标识符是()
(1)A)B01
B)
table_1
C)0_t
D)k%
(2)A)Fast_
B)
void
C)pbl
D)
(3)A)xy_
B)Iongdouble
C)*p
D)CHAR
⑷A)sj
B)Int
C)_xy
D)w_y23
5、属于合法的C语言unsignedchar型常量的是()
A)5876273B)0C)-20D)58762.73
6、unsignedchara=32,charb=‘A'那么表达式a+b的数值是()
A)'A'B)0C)-1D)'a'
7、判断unsignedcharx=300;x的结果是()
A)赋值非法B)溢出C)为300D)为44
&为了计算s=10!
(即10的阶乘),则s变量应定义为()
A)intB)unsignedC)IongD)以上三种类型均可
9、与代数式(x*y)/(u*v)不等价的C语言表达式是()
A)x*y/u*vB)x*y/u/vC)x*y/(u*v)D)x/(u*v)*y
10、在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.000000D)3.000000
13、以下合法的赋值语句是()
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)3D)4
15、若有定义:
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,贝Ux+a%3*(int)(x+y)%2/4为。
6、数学表达式1<=a<=3的C语言表达式为。
7、已知:
chara=?
a?
b=?
b?
c=?
a5nsignedinti;则表达式i=a+b+c的数值为。
&已知inta=12,n=5;则:
表达式运算后a的值各为。
a+=a
a_=2
a*=2+3
a/=a+a
n%=(n%=2)
a+=a_=a*=a
9、设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/2
16、将条件“y£被4整除但不能被100整除,或y能被400整除”写成逻辑表达式。
17、已知A=7.5,B=2,C=3.6,表达式A>B&&C>A||A
C>B的值是。
三•程序阅读题
1•写出以下程序的输出结果。
main()
{inty=3,x=3,z=1;
printf(“%di%d,(++x,y++),z+2);
}
四•程序填空题
1•下列程序的输出结果是16.00,请填
(1)空使程序完整。
main()
{inta=9,b=2;
floatx=[1],y=1.1,乙
z=a/2+b*x/y+1/2;
printf(“%5.'2f,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=
C)if(a-b)x++;D)if(x)x++;
3•以下程序片段()
main()
{intx=O,y=O,z=O;
if(x=y+z)
printf(“***”);
else
printf(“###”);
}
A)有语法错误,不能通过编译B)输出:
***
C)可以编译,但不能通过连接,所以不能运行D)输出:
###
4.对下述程序,是正确的判断。
main()
{intx,y;
scanf(“%d,%c”,&x,&y);
if(x>y)
x=y;y=x;
else
x++;y++;
printf(“%d,%c”,x,y);
}
A)有语法错误,不能通过编译B)若输入3和4,则输出4和5
C)若输入4和3,则输出3和4D)若输入4和3,则输出4和5
5•下述程序的输出结果是。
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,1D)0,1,1
6•以下程序输出结果是。
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=1D)a=2,b=2
7•当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是。
if(a
if(c else if(a if(b elsex=3; elsex=6; elsex=7; A)1B)2C)3D)4 8•若inti=0;执行下列程序后,变量i的正确结果是。 switch(i){ case9: i+=1; case10: i+=1; case11: i+=1; default: i+=1; } A)10B)11C)12D)13 2.填空题 1•一般地,调用标准字符或格式输入输出库函数时,文件开头应有以下预编译命令: 2.C语句可以分为,,—,和等5种类型。 3.C语句的基本结构有—种,分别是 4•一个表达式要构成一个C语句,必须。 5•复合语句是用一对界定的语句块。 3.判断题 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; *);break; “#”);break; “#”);break case0: switch(c==5){case1: pritnf(case2: printf(default: printf( }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? 2E90分以上为? A? 80-89分为? B? 70—79分为? C? 60-69分为? D? 60分以下为? E? 3•给一个不多于5位的正整数,要求分别输出每一位数字 习题五 一•选择题 1•下面程序段 intk=2; while(k=0){printf( 则下面描述中正确的是 A)while循环执行10次 C)循环题语句一次也不执行 2•以下程序段的循环次数是 for(i=2;i==0;)printf(“%d'i--); A)无限次B)0次 3.以下不是死循环的程序段是 A)inti=100; while (1){ i=i%100+1; if(i>100)break; } C)intk=0; do{++k;}while(k>=0); %df o k);k B)循环是无限循环 D)循环体语句执行一次 C)1次D)2次 B)for(;;); D)ints=36; while(s);--s; 4•下述语句执行后,变量k的值是 intk=1; D)无限循环,值不定 while(k++<10); A)10B)11C)9 5•下面程序的输出结果是() 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=3D)k=1,m=5 6•语句while(! E);括号中的表达式! E等价于 A)E==0B)E! =1C)E! =0D)E==1 7.下述程序段的运行结果是。 inta=1,b=2,c=3,t; while(a D)2,1,1 A)1,2,0B)2,1,0C)1,2,1 8•以下for循环的执行次数是。 for(x=0,y=0;(y=123)&&(x<4);x++); A)无限循环B)循环次数不定C)4次 9.下面for循环语句。 inti,k; for(i=0,k=-1;k=1;i++,k++)printf(“***”); B)是无限循环 D)一次也不循环 A)判断循环结束的条件非法 C)只循环一次 10.执行语句for(i=1;i++<4;);后变量i的值是 A)3B)4C)5 D)不定 二.填空题 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(“%ah”,k); } 3•写出下面程序运行的结果。 main() {inty=2,a=1; while(y--! =-1) do{ a*=y; a++; }while(y--); printf(“%dn%d,a,y); } 6.程序填空题 3)空使程序完整。 1•下面程序的功能是输出1至100之间每位数的乘积大于每位数的和的数,请填( main() {intn,k=1,s=0,m; for(n=1;*=100;n++){ k=1;s=0; 【1】; while(【2】){ k*=m%10; s+=m%10; 【3】; } if(k>s)printf(“%dc”,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(“sum3=]”,s); } 7.编程题 1.求(即求1! +2! +3! +…+19! +20)。 习题七 一.选择题 1•以下正确的说法是。 A)用户若需要调用标准库函数,调用前必须重新定义 B)用户可以重新定义标准库函数,如若此,该函数将失去原有定义 C)系统不允许用户重新定义标准库函数 系统会自动调用。 D)用户若需要使用标准库函数,调用前不必使用预处理命令将该函数所在的头文件包含编译, 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•下面程序的输出是。 inti=2; printf(“%d%d%”,i*=2,++i,i++); A)8,4,2B)8,4,3C)4,4,5D)4,5,6 三•程序阅读题 1•写出下面程序的功能。 func(intn) {inti,j,k; i=n/100;j=n/10-i*10;k=n%10; if(i*100+j*10+k)==i*i*i+j*j*j+k*k*k)returnn; return0; } main() {intn,k; for(n=100;*1000;n++)if(k=func(n))printf(“%d',k); } 四•程序判断题 1•下面add函数求两个参数的和;判断下面程序的正误,如果错误请改正过来。 voidadd(inta,intb) {intc; c=a+b; return(c); } s中的数为: 2•下面函数fun的功能是: 将长整型数中偶数位置上的数依次取出,构成一个新数返回,例如,当87653142时,则返回的数为: 8642;判断下面程序的正误,如果错误请改正过来。 longfun(Iongs) {longt,sl=1; intd; t=0; while(s>0){ d=s%10; if(d%2=0){ t=d*sl+t; sl*=10; } s\=10; } return(t); 习题六 一•选择题 1•在C语言中,引用数组元素时,其数组下标的数据类型允许是
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 语言 练习题
![提示](https://static.bdocx.com/images/bang_tan.gif)