第八次上机作业理论题.docx
- 文档编号:9029472
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:12
- 大小:18.59KB
第八次上机作业理论题.docx
《第八次上机作业理论题.docx》由会员分享,可在线阅读,更多相关《第八次上机作业理论题.docx(12页珍藏版)》请在冰点文库上搜索。
第八次上机作业理论题
理论题期末考试前提交即可
一、选择题
1.下面对结构体数据类型的叙述中__________是错误的。
A.结构体变量可以在说明结构类型后定义,也可在说明结构类型时定义
B.结构体可由若干成员组成,各成员的类型可以不同
C.定义一个结构体类型后,编译程序要为结构体的各成员分配存储空间
D.结构体变量的各成员可通过结构体变量名和指向结构体变量的指针引用
2.对于一个共用体类型的变量,系统分配给它的内存大小是___________。
A.成员中内存需求量最大者的容量
B.第一个成员所需的容量
C.各成员所需容量的总和
D.最后一个成员所需的容量
3.设有如下定义语句:
structSD
{intx;
floaty;
}ND;
则下面叙述中不正确的是__________。
A.struct是结构体类型的关键字
B.ND是用户自定义的结构体类型名
C.structSD是用户自定义的结构体类型名
D.x和y都是结构体成员名
4.对于下列程序段:
structSD
{intx; floaty;};
structSDa[3]={{1001,3.5},{1002,4.5},{1003,4.0}},*p;
p=a;
则下面不正确的使用是__________。
A.(++p)->x B.p++ C.(*p).y D.p=&a[0].x
5.设有定义语句“struct{intx;inty;}a[2]={{2,3},{2,8}};”,则printf("%d\n",a[0].y/a[0].x*a[1].y);的输出结果是___________。
A.3 B.2 C.12 D.8
6.若有以下程序段:
structSD
{intx;
int*r;
};
inta=1,b=2,c=3;
structSDs[3]={{1001,&a},{1002,&b},{1003,&c}};
main()
{structSD*p;
p=s;
……
}
则以下表达式中值为2的是_________。
A.*(++p)->r B.*(p++)->r
C.(*p).r D.(p++)->r
7.有以下结构体类型的说明和变量定义,并给出图示,则选项中不能把结点b连接到a之后的语句是__________。
data next data next
a b
p q
structND
{chardata;
structND*next;
}a,b,*p=&a,*q=&b;
A.a.next=q; B.p.next=&b; C.p->next=&b; D.(*p).next=q;
8.以下说法中正确的是__________。
A.一个结构只能包含一种数据类型
B.不同结构中的成员不能有相同的成员名
C.两个结构变量不可以进行比较
D.关键字typedef用于定义新的数据类型
9.有说明:
enummoney{Fen,Jiao,Yuan=100,Tenyuam};
每个枚举量所对应的实际值为__________。
A.0,1,100,101 B.1,2,100,101
C.Fen,Jiao,Yuan,Tenyuam D.Fen,Jiao,100,Tenyuam
10.以下程序的输出结果是__________。
#include
main(){printf("%d",NULL);}
A.0 B.'\0' C.1 D.无定义
11.值为6的表达式为__________。
structst{intn;structst*next;}
staticstructsta[3]={5,&a[1],7,&a[2],9,’\0’},*p;
p=&a[0];
A.p++->n B.p->n++ C.(*p).n++ D.++p->n
12.对以下结构体变量example中成员x的引用正确的是__________。
struct
{int x;
int y;
}example,*p=&example;
A.(*p).example.x B.(*p).x C. p->example D.p.example.x
二、基本概念填空题
1.完成下列表格(表1):
表1结构体与共用体变量的对比表
问题
结构体
共用体
变量定义格式
什么因素决定了变量的大小
对成员的引用方法
改变一个成员的值是否影响其他成员的值
可否为变量各成员初始化
2.完成下列表格(表2):
表2简单数据类型与结构体、共用体的对比表
问题
char/int/float
指针
结构体
共用体
数据类型是否需要单独定义
是否有明确的数值范围
是否可以用scanf、printf直接输入输出
是否可以直接进行关系运算
3.“.”称为__________运算符,“->”称为__________运算符。
4.若有以下定义语句,则变量x在内存中所占的字节数是___________。
unionUN
{floatr;
chars[6];};
structST
{unionUNu;
floatv[5];
doublew;}x;
5.structst
{inta;
structstb;
}*p,x;
p=&x;
x.b的另外两种引用形式是:
____________________、____________________。
6.有定义和赋值语句:
unionaa
{longj;
charc;};
structst
{inta[4];
doublet;
unionaac;
}w[3],*pw;
pw=w;
数组w元素所占字节数是_____,w[0]的a[3]成员表示为:
________________,w[1]的c中c元素的引用形式为:
_______________________用pw引用w[0]中a[1]的两种形式是:
________________________、________________________用pw引用w[0]的c中的c元素的两种形式是:
________________________、_______________________。
三、阅读程序题
1.以下程序的输出结果是________。
enumweek{SUN=7,MON=1,WED,TUS,FRI,SAT};
main()
{printf("%d",hour(FRI,SUN));}
hour(intx,inty)
{if(y>x)return24*(y-x);
elsereturn-1;
}
2.以下程序的输出结果是___________。
(字符0的ASCII码值为16进制的30)
main()
{union
{charc;
charb[4];
}z;
z.b[0]=0x39;z.b[1]=0x36;
printf("%c\n",z.c);
}
3.以下程序的输出结果是___________。
main()
{union{intcount[2];
charch[4];}un;
int i;charletter=6;
for(i=0;i<4;i++)un.ch[i]=letter++;
for(i=0;i<2;i++)printf("%d:
%x,",i,un.count[i]);}
四、完善程序题
1.下列程序的功能是计算前一天是星期几。
enumday{sun,mon,tue,wed,thu,fri,sat};
enumdayday_after(d)
enumdayd;
{return((enumday)__________);
}
main()
{printf("%d\n",day_after(5));}
2.设某班级有学生30名,学期末统计每位学生各课程成绩总分后,将前10名学生的学号、姓名、总分张榜公布,以下程序输出张榜清单。
#defineN30
main()
{struct STU
{long num;
char name[20];
int score;
};
struct STU a[N],t;
inti,j,k;
for(i=0;i scanf("%ld%s%d",&a[i].num,a[i].name,&a[i].score); for(i=0;i {k=i; for(j=i+1;j if(a[j].score>a[k].score)k=j; if(i! =k) {__________;__________;__________;} } printf("Number Name Score\n"); for(i=0;i<10;i++) printf("%-10ld%-10s%-8d\n",a[i].num,a[i].name,a[i].score); } 3.某高三毕业班有三名同学(Guo、Liu、Hu)获得全国数学竞赛二等奖,现只有一个南京大学的保送名额,必须通过投票选举出得票最高的同学保送南大。 假设全班共有50名同学全部参加了投票,每人推举一名候选人,选票全部有效。 以下程序输出三名候选人的得票数。 #defineN50 #include"string.h" structHXR {charname[10]; intdps; }; main() {structHXRstu[3]={{"Guo",0},{"Liu",0},{"Hu",0}}; inti,j; charname[10]; for(i=0;i {_____________________; for(j=0;j<3;j++) if(strcmp(name,stu[j].name)==0)_____________________;} printf("Name Depiaoshu: \n"); for(i=0;i<3;i++) printf("%-5s%-3d\n",stu[i].name,stu[i].dps);} 4.以下程序用“比较计数”法对结构体数组a按成员num进行降序排列。 “比较计数”法的基本思想是: 通过另一成员a[i].con记录数组a中排在a[i]之前的元素的个数,每两个元素只比较一次。 最终,a[i].con的值就代表a[i].num在a中的排序位置。 #defineN8 struct {intnum,con;}a[N]; main() {inti,j;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第八 上机 作业 理论