m = 0;
while(m < n-1) {
if(*(p+i) != 0) { } i++; if(i == n) }
while(*p == 0)
i = 0; *(p+i) = 0; k = 0; m++; k++; if(k == 4)
p++;
printf(”%d is number %d.\\n”,n,*p); return 0; }
第7章 习 题
1.设有以下说明语句, struct ex {
int x ; float y; char z ; }example;
则下面的叙述中不正确的是( )。
A.struct结构体类型的关键字 B. example是结构体类型名 C.x,y,z都是结构体成员名 D. struct ex是结构体类型 答:
2.下面正确的叙述是( )
A. 结构体一经定义,系统就给它分配了所需的内存单元。
B. 结构体变量和共用体变量所占内存长度是各成员所占内存长度之和。 C. 可以对结构类型和结构类型变量赋值、存取和运算。
D. 定义共用体变量后,不能引用共用体变量、只能引用共用体变量中的成员。 答:
3.结构体类型变量在程序执行期间( )。
A. 所有成员驻存在内存中 B. 只有一个成员驻留在内存中 C. 部分成员驻留在内存中 D. 没有成员驻留在内存中 答:
4.判断下面的有关结构体的定义或引用,正确的请在后边括弧中用T表示,错误的用F表示。
struct student {
int no; int score; }student1;
A. student.score = 99;( ) B. student1.score = 99;( ) A D B
C. struct LiMing; LiMing.score = 99;( )
D. struct student LiMing; LiMing.score = 99;( ) E. student LiMing; LiMing.score = 99;( ) 答:
5.若有以下说明和定义
typedef int INTEGER; INTEGER p,*q; 以下叙述正确的是( ) A. p是int型变量
B. p是基类型为int的指针变量 C. q是基类型为int的指针变量 D. 程序中可用INTEGER代替int类型名 答:
6. 对于下列定义的枚举型
7. 试分析下列源程序的功能,写出其运行结果。
#include
#define Person_1 struct person_1 struct person_1 {
char name[31]; int age;
char address[101]; };
typedef struct person_2
{
char name[31]; int age;
char address[101]; } Person_2; void main( ) {
enum color1{yellow,green,blue = 7,red,brown}; A.3,8 C
B.1,8
C.0,8
D.0,3
则枚举常量yellow和red的值分别是( ) 答:
ACD
F T F T F
} 答:
Person_1 a = {”zhao”,31,”east street 49”}; Person_1 b = a;
Person_2 c = {”Qian”,25,”west street 31”}; Person_2 d = c;
printf(”%s,%d,%s\\n”,b.name,b.age,b.address); printf(”%s,%d,%s\\n”,d.name,d.age,d.address);
zhao,31,east street 49 Qian,25,west street 31
8. 定义一个日期结构变量重新实现第五章第十题。 答:
#include
int year; int month; int day; }date; int main() {
int i,days = 0;
int day_tab[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; printf(\
scanf(\for(i = 0;i < date.month;i++) days += day_tab[i]; days += date.day;
if((date.month >= 3)&&((date.year%4 == 0&&date.year0 != 0)||date.year@0 == 0)) days += 1;
printf(\date.month,date.day,days,date.year); return(0); }
9.建立一个职工情况统计表,它应包括职工的工作证号、姓名、年龄、工资等项内容。最后输出:
(1)该单位职工的平均年龄,平均工资; (2)各年龄段职工人数的分布情况; 答:
#include
long num;/*工作证号*/ char name[20]; };
void input(struct employee employee1[],int n) {
int i,j; char temp[30]; for(i = 0;i < n;i++) {
printf(\the information of the employee!(num, name, age, iSalary)\\n\
scanf(\&employee1[i].age,&employee1[i].iSalary); } }
void average(struct employee employee1[],int n) {
int i,iAvage = 0,iAavsalary = 0; for(i = 0;i < n;i++) {
iAvage = iAvage +employee1[i].age;
iAavsalary = iAavsalary +employee1[i].salary; }
iAvage = iAvage/n;
iAavsalary = iAavsalary /n;
printf(\
printf(\}
void agenum(struct employee employee1[],int n) {
int i,a1 = 0,a2 = 0,a3 = 0,a4 = 0,a5 = 0; for(i = 0;i < n;i++) {
if(employee1[i].age < 20)
a1++;
else if(employee1[i].age >= 20&&employee1[i].age<30) int age; int iSalary;