第9章 结构体
一、单项选择题
1. 若有以下说明语句:
struct student
{ int num;
char name[ ];
float score;
}stu;
则下面的叙述不正确的是: ( )
A) struct是结构体类型的关键字 B) struct student 是用户定义的结构体类型
C) num, score都是结构体成员名 D) stu是用户定义的结构体类型名
2. 若有以下说明语句:
struct date
{ int year;
int month;
int day;
}brithday;
则下面的叙述不正确的是_____.
A) struct是声明结构体类型时用的关键字 B) struct date 是用户定义的结构体类型名
C) brithday是用户定义的结构体类型名 D) year,day 都是结构体成员名
3. 已知:(设整型2字节,字符型1字节,浮点型4字节)
struct
{ int i;
char c;
float a;
}test;
则sizeof(test)的值是 。
A) 4 B) 5 C) 6 D) 7
4. 以下对结构变量stul中成员age的非法引用是 。
struct student
{ int age;
int num;
}stu1,*p;
p=&stu1;
A) stu1.age B) student.age C) p->age D) (*p).age
5. 有如下定义
struct person{char name[9]; int age;};
struct person class[10]={“Tom”,17,“John”,19,
“Susan”,18,“Adam”,16,};
根据上述定义,能输出字母A的语句是
A) printf(“%c\n”,class[3].name); B) printf(“%c\n”,class[3].name[0]);
C) printf(“%c\n”,class[3].name[1]); D) printf(“%c\n”,class[2].name[3]);
6. 存放100个学生的数据、包括学号、姓名、成绩。在如下的定义中,不正确的是( )。
A.struct student
{int sno;
char name[20];
float score;
} stu[100];
B. struct student stu[100]
{int sno;
char name[20];
float score};
C. struct
{ int sno;
char name[20];
float score;} stu[100];
D. struct student
{int sno;
char name[20];
float score;};
struct student stu[100];
7. 设有定义语句“struct {int x; int y;} d[2]={{1,3},{2,7}};”
则“printf(“%d\n”,d[0].y/d[0].x*d[1].x);”输出的是( )。
A.0 B)1 C)3 D)6
8. 设有如下定义,则对data中的a成员的正确引用是( )。
struct sk{ int a; float b;} data,*p=&data;
A)(*p))data.a B)(*p).a C)p->data.a D)p.data.a
9、已知: struct sk
{ int a;
float b;
}data, *p;
若有p=&data,则对data中的成员a的正确引用是( )。
A、(*p).data.a B、p->data.a C、(*p).a D、p.data.a
10. 设有如下定义:
struck sk
{ int a;
float b;
}data;
int *p;
若要使P指向data中的a域,正确的赋值语句是
A) p=&a; B) p=data.a; C) p=&data.a; D)*p=data.a;
11. 以下对结构变量stu1中成员age的非法引用是( )。
struct student
{ int age;
int num;
}stu1,*p;
p=&stu1;
A、 stu1.age B、 student.age C、 p->age D、 (*p).age
12、设有以下说明语句:
typedef struct stu
{ int a;
float b;
} stutype;
则下面叙述中错误的是( )。
A、struct是结构类型的关键字 B、struct stu是用户定义的结构类型
C、a和b都是结构成员名 D、stutype是用户定义的结构体变量名
二、阅读程序,写出运行结果
1.
#include<stdio.h>
struct st
{ int x;
int y;
} a[2]={5, 7, 2, 9} ;
main()
{
printf("%d\n",a[0].y*a [1].x);
}
运行结果是:
14
2.
#include<stdio.h>
main( )
{struct stu
{int no;
char a[5];
float score;
}m={1234,”wang”,89.5};
printf(“%d,%s,%f”,m.no,m.a,m.score);
}
运行结果是:
1234,wang,89.500000
3.
#include<stdio.h>
struct cmplx
{ int x;
int y;
}cnum[2]={1, 3, 2, 7};
main( )
{
printf(“%d\n”, cnum[0].y * cnum[1].x );
}
运行结果是:
6
4.
#include <stdio.h>
struct abc
{ int a, b, c; };
main()
{ struct abc s[2]={{1,2,3},{4,5,6}};
int t;
t=s[0].a+s[1].b;
printf("%d \n",t);
}
运行结果是:
6
5.
#include<stdio.h>
struct point
{ int x; int y;
} pt[]={1,4,6, 8,3,5};
sizeof结构体大小main()
{ struct point *p;
p=pt;
printf(“%d”,p->y *(p+1)->x);
}
运行结果是:
24
6.
#include<stdio.h>
struct student
{ int num;
char name[10];
float score;
}stu[3]={{1,"wang",84},{2,"Li",86.5},{3,"Zhang",90}};
main()
{ int i;
float total=0.0;
for(i=0;i<3;i++)
total=total+stu[i].score;
printf("The total scores is:%f",total);
}
运行结果是:
The total scores is:260.5
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论