当前位置:首页 > 单片机C51编程 - 习题答案 - - - Copy
3.简述数组有多少种初始化方法。
答:。初始化数组元素可以采用两种方法:在声明数组时初始化和动态初始化。其中,声明数组时初始化又可以有完整声明初始化、部分初始化和省略数组大小三种。
四、编程题
编写一个二维字符串数组读写的程序。
#include
void main() {
//头文件
//主函数
//声明并初始化字符串数组
char str[3][11]={\ //char str2[][]={\int i,j;
char str2[2][4]={{'a','b','c','\\0'},{'A','B','C','\\0'}}; //声明并初始化字符串数组
//错误的声明方式,没有指定数组大小 //定义整型变量
//循环逐个输出str2中的元素值
for(i=0;i<2;i++) for(j=0;j<4;j++) printf(\
printf(\
printf(\
//输出换行符
//逐行输出字符串str的第一行 //逐行输出字符串str的每一行
printf(\}
7.9 习题
一、填空题
1. 内存单元 是单片机存储器中的最小存储单位,通常 一个字节 称为一个内存单元。单片机内存单元的编号也就是 地址 。 2.在定义指针变量时,指针名前的 “*” 不能省略,同一个指针变量只能指向 同一类型的变量 。
3.指针变量的专用运算符包括 & 和 * 。 4.指针变量可以参与 关系 和 算术 运算。
5.通过 字符指针 可以访问字符串常量中的内容,但 不可以 对其进行修改。
6.在指针变量说明中,“*”是 类型说明符 ,表示其后是 指针类型的变量 。
7.表达式中出现的“*”则是 取值运算符 ,用来表示指针变量所指向的地址中的数据值。
二、选择题
1.如果p是指向数组ch的指针变量,设n为一个正整数,则下述运算那个不符合C51语言的规则( D )。
A.p+n B.p++ C.p-- D.p*n
2.假设pstr指向字符串常量,则如下那个表达式不符合C51语言的规则( C )。
A.pstr++ C.*pstr-1
B.pstr+3 D.pstr+5
3.在下面程序可能的运行结果为( A )。
01 #include
int ch[3][4]={{1,1,3,3},{5,6,7,8},{9,10,1,2}}; //定义并初始化二维数组ch printf(\
//输出ch的值 //输出*ch的值
//头文件 //主程序
printf(\
A.a=1000,*a=1000 C.a=2000,*a=1000 三、简答题
B.a=1000,*a=2000 D.a=1010,*a=2000
1.简述数组指针和指针数组的区别。 答:数组指针是指向数组的指针变量。指针数组是同一数据类型的多个指针变量构成的一个数组。其中,指针数组中的每个元素都是一个独立的指针变量。 2.简述指针变量能够参与的运算和注意事项。
答:指针变量是特殊的一种变量,其同样也可以参与一些运算,但是有很大的局限性。
? 指针变量可以进行有限的某些运算,例如赋值运算、部分算术运算及关系运算。 ? 只有指向同一数组的两个指针变量之间才能进行运算,否则运算无意义。
四、编程题
编写一个使用指针数组来存放不同长度字符串的程序。
#include
void main() {
int k;
//头文件 //主函数
char *pweek[7]={\//定义并初始化指针数组 \for(k=0;k<7;k++) printf(\}
//循环输出指针数组指向的字符串
8.10 习题
一、填空题
1.结构就是用户定义的, 不同数据类型 的一个集合体。
2.定义结构用的关键字为 struct ,声明结构变量用的关键字为 struct 。 3.在C51语言中,表示结构变量成员的一般形式为 结构变量名.成员名 。 4.结构数组常来表示具有相同数据结构的一个群体,是指数组中的每一个元素都是具有相同结构类型的 结构变量 。 5.嵌套结构的成员名的引用,是 从最外层 直到 最内层 逐个被列出的,典型的嵌套式结构成员表示方式为 结构变量名.嵌套结构变量名.结构成员名 。
6.通过位结构,可以访问 一个字节或字的多个位 ,这样可以有效的介绍代码体积,提高程序的效率。
二、选择题
1.位结构中的数据类型可以为( A )。
A.unsigned B.float C.void D.struct
2.声明结构变量可以采用哪种方法(多选)( ABCD )。
A.先定义结构,再声明结构变量 B.义结构时声明结构变量 C.直接声明结构变量 D.以上三种都可以
3.结构指针变量成员的引用方法可以为(多选)( ABCD )。
A.(*结构指针变量). 成员名 B.*结构指针变量. 成员名 C.结构指针变量->成员名 D.以上三种都可以
4.下面这段程序的运行结果为( A )。
01 #include
int num;
//学号 //姓名 //性别 //年龄 //分数
//声明结构数组并初始化
//头文件 //声明结构
char name[20]; char sex[2]; int age;
float score;
09 } class1[5]={ 10 11 12 13 14 15
{100\{101,\{102,\{103,\{104,\};
//主函数
16 void main() 17 { 18 19 20 21 22 23 24 25 } 26 }
int i;
for(i=0;i<5;i++) {
//循环
if(boy[i].score>=95.0) //判断分数是否大于90,如果大于则输出
printf(\ class1[i].num,class1[i].name,
class1[i].sex,class1[i].age, class1[i].score);
A.100 Alice F 24 90.500000 C.101 Bob M 24 88.000000 三、简答题
1.简述结构变量的三种声明方式。
B.102 Jack M 25 95.500000 D.103 Twis M 23 69.500000
答:C51语言中提供了灵活的结构变量的声明方法,可以采用如下3种:先定义结构再声明结构变量、定义结构时声明结构变量和直接声明结构变量。
2.简述结构指针和普通指针的区别。
答:结构指针是指该指针变量用来指向一个结构变量。其中,结构指针变量中的值是所指向的结构变量的首地址。而普通指针指向一个基本数据类型变量。
四、编程题
编写一个程序来统计成绩在80~90之间的学生,并输出学生信息。
#include
struct student {
char *name; int num; int age; char *sex;
//头文件 //定义结构 //姓名 //学号 //年龄 //性别 //分数
//声明并初始化结构数组
float score;
}boy[5]={ {\{\{\{\{\
void main() {
int i;
//主函数
for(i=0;i<5;i++) {
//循环
if(boy[i].score>=80.0 & boy[i].score<90.0) //判断分数输出 printf(\boy[i].score);
} }
9.7 习题
一、填空题
1.在定义了联合类型后,还需要使用该联合类型来声明 联合变量 。联合变量
的声明有3种方法 先定义联合,再声明联合变量 、 直接声明联合变量 和 定义联合时声明联合变量 。 2.从 数据存储 角度来说,结构和联合变量的区别主要在于 联合变量的成员 占用同一个内存空间,而 结构变量中的成员 分别独占自己的内存空间,互相不干扰, 3. 类型说明 是指由用户自己定义类型说明符,其一般形式为 typedef 原类型名 新类型名; 。
4.位域也常称为 位段 ,位域采用关键字 struct 来实现。 5.在C51语言中,位域变量的位段名引用的一般形式为 。
6.在C51语言中,只能把 枚举元素 赋予枚举变量,不能把 枚举元素的数
共分享92篇相关文档