当前位置:首页 > 单片机C51编程 - 习题答案 - - - Copy
01 #include
02 void main() 03 { 04 05 06 07 08 09 10 11 12 13 14 }
int a,b,c,d,e; float f1,f2; a=7; b=9; c=!a; d=a||b; f1=2.3; f2=5.7; e=(f1!=f2);
//头文件
//主函数
//声明变量
//变量赋值
//计算逻辑表达式
printf(\//输出结果
A.c=0,d=1,e=1 C.c=0,d=1,e=0 三、简答题
B.c=1,d=1,e=1 D.c=1,d=0,e=0
1.简述a++和++a的区别。
答:当自增运算符在操作数之前时,C51编译器在引用操作数之前就先执行加1操作,例如z=++x,表示x先自增1然后赋值给变量z;当自增运算符在操作数之后时,C51编译器就先引用操作数的值,而后再进行加1操作,例如z=x++,表示x先赋值给z然后自增1。 2.简述&&和&运算符的区别。
答:“&”运算符既按位与运算符,用于对操作数逐位进行逻辑与(AND)运算。“&”运算符在执行时,首先将两个操作数按照二进制展开,然后将对应位进行逻辑与运算。如果两个操作数对应的二进制位均为1,则逻辑与的结果为1;否则,则逻辑与的结果为0。而&&运算符是逻辑与运算符。
四、编程题
编写一个成绩等级的程序。要求输入学生的成绩范围为0~100,当为90~100时,输出字符A;当为80~90时,输出字符B;当为60~80时,输出字符C。当小于60时,输出字符D。
答:
#include
//头文件 //主函数
void main( ) {
float score=92; if(score>=90) { printf(“A”); } else if(score<90 && score>=80) { printf(“B”); } else if(score<80 && score>60) { printf(“C”); }
else { printf(“D”);
} }
5.13 习题
一、填空题
1.在C51语言的程序中,循环语句一般采用 for 、 do-while 和 while 来实现。
2.字符在C51语言的程序中,跳转语句一般采用 goto 、 break 和 continue 来实现。
3.do-while语句在执行时,先执行 循环体语句 ,然后执行 计算表达式的值 。
4.返回语句由关键字 return 来表示,常用于 函数的末尾 。
二、选择题
1.以下哪个声明语句是错误的( C )。
A.ch ch1; B.ch str[]=”hello” C.void fun; D.void func();
2.break语句不能应用于那个语句内部( A )。
A.if B.for C.while D.do-while
3.下面这段程序的运行结果为( A )。
01 #include
char ch; ch=’a’; switch(ch) {
case 'a':
//如果为'a',则输出'A'
//赋值 //开关语句
//头文件 //主程序
printf(\的大写字符为A\break;
//如果为'b',则输出'B'
case 'b':
printf(\的大写字符为B\break;
//否则输出这里
default: }
printf(\break;
A.ch的大写字符为A C.Not a and b 三、简答题
B.ch的大写字符为B D.都不是
1.简述本章采用了哪些方法来实现1~100之间所有整数的累加和。
答:本章共采用了6种方法,分别为for循环语句、while循环语句、do-while循环语句、goto语句、break语句和continue语句来实现
2.简述break语句和continue语句在应用到循环语句内部的区别。
答:break语句用于无条件跳出循环结构或者开关分支结构。continue语句用于强制结束当前循环体内部的后续语句,转而执行下一次循环。
四、编程题
编写一个子函数来实现如下函数的计算,其中,x为整数,并计算x=5时的函数值。
?(x?1)!?1(x?0)y??2
3x?2x11(x?0)?
01 #include
19 void main() 20 { 21 22 23 24 }
int x=5,y; y=Fun(x);
//函数调用 //打印输出结果
//主函数
int i,y; if(x>0) { } else { }
return y;
//返回语句
y=3*x*x+2*x+1;
//计算数学表达式
y=1;
for(i=1;i<=x;i++) { } y=y-1;
y=y*(i+1);
//阶乘运算
//判断x的值
//头文件
printf(\
6.8 习题
一、填空题
1.数组在声明的时候, 类型说明符 表示了数组元素的数据类型,可以为 任何基本数据类型 ,也可以为 聚合数据类型 。
2.在一维数组声明初始化时,可以省略 数组的大小 ,而此时需要给出全部的数组元素的初始值。
3.在程序中声明 字符串数组 时,其长度必须比要存的字符串多一个元素,最后一位元素用来存储 空字符“\\0” 。
4.多维数组的声明一般形式为 类型说明符 数组名[常量表达式1] [常量表达式2]… [常量表达式n] 。
5.在C51语言中,虽然不能动态分配 数组的大小 ,但是可以动态分配 数组元素的值 。
二、选择题
1.对于用语句int num[3]声明的数组,下列哪个不是其中的元素( D )。
A.num[0] B.num[1] C.num[2] D.num[3]
2.下列哪个不可以用于声明数组( D )。
A.char B.int C.float D.void
3.访问多维数组元素的时间要( A )访问一维数组元素的时间。
A.大于 B.等于 C.小于 D.不确定
4.在下面程序运行结果为( C )。
01 #include
//头文件
//提供字符串操作的头文件 //主函数
02 #include
char a[10]={'a','b'}; char b[]=\char s[30]; strcat(a,b); strcpy(s,a);
//声明字符串数组,并赋值
//将字符串b追加到a的末尾 //将字符串a复制到字符串s //输出字符串s
printf(\
A.s=ab C.s=abgood 三、简答题
B.s=good D.s=abgood\\n
1.简述字符串数组的特点。
答:在C51语言中,用char标识的是字符数组。而字符串数组则是一类特殊的字符数组,其区别在于字符串数组的最后一个元素为“\\0”,对应的ASCII码为0x00。
2.简述为何多维数组不提倡使用。
答:多维数组的存储量随着维数的增加呈指数增长,占用大量内存。另外,单片机的CPU要花大量时间计算数组下标,也就是说,在存放和读取多维数组中的元素时需要比一维数组花更多的时间。因此,应该尽量少使用多维数组。
共分享92篇相关文档