单片机C语言练习题Word文档格式.docx

上传人:b****5 文档编号:17432105 上传时间:2022-12-01 格式:DOCX 页数:18 大小:25.19KB
下载 相关 举报
单片机C语言练习题Word文档格式.docx_第1页
第1页 / 共18页
单片机C语言练习题Word文档格式.docx_第2页
第2页 / 共18页
单片机C语言练习题Word文档格式.docx_第3页
第3页 / 共18页
单片机C语言练习题Word文档格式.docx_第4页
第4页 / 共18页
单片机C语言练习题Word文档格式.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

单片机C语言练习题Word文档格式.docx

《单片机C语言练习题Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机C语言练习题Word文档格式.docx(18页珍藏版)》请在冰豆网上搜索。

单片机C语言练习题Word文档格式.docx

4、在以下各组标识符中,合法的标识符是()

(1)A)B01

B)

table_1

C)0_t

D)k%

(2)A)Fast_

void

C)pbl

D)<

book>

(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+?

+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)&

=210)

B)(x>

=1)||(x<

=10)||(x>

=200)||(x<

C)(x>

D)(x>

13、C语言提供6种关系运算符,按优先级高低它们分别是,,,,,等。

14、C语言提供三种逻辑运算符,按优先级高低它们分别是,,。

15、设a=3,b=4,c=5,写出下面各逻辑表达式的值。

表达式表达式运算后的值

a+b>

c&

b==c

!

(a>

!

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)空使程序完整。

{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=<

b)x++;

C)if(a-b)x++;

D)if(x)x++;

3•以下程序片段()

{intx=O,y=O,z=O;

if(x=y+z)

printf(“***”);

else

printf(“###”);

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

***

C)可以编译,但不能通过连接,所以不能运行D)输出:

###

4.对下述程序,是正确的判断。

{intx,y;

scanf(“%d,%c”,&

x,&

y);

if(x>

y)

x=y;

y=x;

x++;

y++;

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

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

C)若输入4和3,则输出3和4D)若输入4和3,则输出4和5

5•下述程序的输出结果是。

{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•以下程序输出结果是。

{intx=1,y=0,a=0,b=0;

switch(x){

case1:

switch(y){

case0:

a++;

break;

case1:

b++;

break;

case2:

a++;

b++;

case3:

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<

b)

if(c<

d)x=1;

c)

if(b<

d)x=2;

elsex=3;

elsex=6;

elsex=7;

8•若inti=0;

执行下列程序后,变量i的正确结果是。

switch(i){

case9:

i+=1;

case10:

case11:

default:

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

=3)&

=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){

switch(b<

printf(“@);

printf(“!

”);

*);

“#”);

“#”);

break

case0:

switch(c==5){case1:

pritnf(case2:

printf(default:

printf(

}default:

printf(“&

printf(n“);

六•程序判断题

1•下面程序输入两个运算数x,y和一个运算符号op,然后输出该运算结果的值,例如输入3+5/得到结果8;

判断下面程序的正误,如果错误请改正过来。

{

floatx,y,r;

charop;

scanf(“%f%c%f'

,&

op,&

switch(op){

case,+?

:

r=x+y;

case,-?

case,*?

case,/?

printf(“%f”,r);

七.编程题

1•有三个整数a,b,c,由键盘输入,输出其中最大的数。

2•给出一百分制成绩,要求输出成绩等级?

A?

?

B?

C?

D?

2E90分以上为?

80-89分为?

70—79分为?

60-69分为?

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•下面程序的输出结果是()

{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<

b<

c){t=a;

a=b;

b=t;

c-_;

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

D)2,1,1

A)1,2,0B)2,1,0C)1,2,1

8•以下for循环的执行次数是。

for(x=0,y=0;

(y=123)&

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.写出下面程序运行的结果。

{intx,i;

for(i=1;

=100;

x=i;

if什+x%2==0)

if什+x%3==0)if(++x%7==0)

printf(“%d”,x);

2•写出下面程序运行的结果。

{intk=1,n=263;

do{k*=n%10;

n/=10;

}while(n);

printf(“%ah”,k);

3•写出下面程序运行的结果。

{inty=2,a=1;

while(y--!

=-1)

do{

a*=y;

a++;

}while(y--);

printf(“%dn%d,a,y);

6.程序填空题

3)空使程序完整。

1•下面程序的功能是输出1至100之间每位数的乘积大于每位数的和的数,请填(

{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)空使程序完整。

【1】;

intk;

for(k=1;

k<

k++)

s+=k;

=50;

s+=k*k;

=10;

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;

{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语言中,引用数组元素时,其数组下标的数据类型允许是

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

当前位置:首页 > 工程科技 > 交通运输

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

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