C語言結構體單元練習
1.有以下定義和語句:
struct student
{ int age;
int num; };
struct student stu[3]={{1001,20},{1002,19},{1003,21}};
main()
{ struct student *p;
p=stu;
…… }
則以下不正確的引用是 。
A) (p++)->num B) p++ C) (*p).num D) p=&stu.age
2.有以下結構體定義:
struct example
{ int x;
int y; }v1;
。
A) example.x=10 B) example v2; v2.x=10;
C) struct v2; v2.x=10; D) struct example v2={10};
3.對于如下結構體定義,若對變量person的出生年份進行賦值,正確的賦值是 。
struct date
{ int year,month,day;
};
struct worklist
{ char name[20];
char sex;
struct date birth;
}person;
A) year=1976 B) birth.year=1976
C) person.birth.year=1976 D) person.year=1976
4.根據下述定義,可以輸出字符'A'的語句是 。
struct person
{ char name[11];
struct
{ char name[11];
int age;
}other[10];
};
struct person man[10]={ {"Jone",{"Paul",20}},{"Paul",{"Mary",18}},
{"Mary",{"Adam",23}},{"Adam",{"Jone",22}}
};
A) printf("%c",man[2].other[0].name[0]); B) printf("%c",other[0].name[0]);
C) printf("%c",man[2].(* other[0])); D) printf("%c",man[3].name);
5.若有以下程序段:
struct st
{ int n;
struct st *next; };
struct st a[3]={5,&a[1],7,&a[2],9, '\0'} ,*p=a;
則值為6的表達式為 。
A) p++->n B) p->n++ C) (*p).n++ D) ++p->n
6.對于以下定義,不正確的敘述是 。
union data
{ int i;
char c;
float f;}a,b;
A) 變量a所占的內存長度等于成員f的長度
B) 變量a的地址和它的各成員地址都是相同的
C) 不能對變量a賦初值
D) 可以在定義的時候對a初始化
7.下述程序運行結果為 。
#include
struct st
{ int n;
int *m;
}*p;
void main()
{ int d[5]={10,20,30,40,50};
struct st arr[5]={100,d,200,d+1,300,d+2,400,d+3,500,d+4};
p=arr;
printf("%d\t",++p->n);
printf("%d\t",(++p)->n);
printf("%d\n",++(*p->m));
}
A) 101 200 21 B) 101 20 30
C) 200 101 21 D) 101 101 10
8、 。
#include
main( )
{ union
{ long a;
int b;
char c;}m;
printf("%d\n",sizeof(m));}
A) 2 B) 4 C) 6 D) 7
9.若要利用下面的程序段使指針變量p指向一個存儲整型變量的存儲單元,則在空格中應填入的內容是 。
int *p;
p= malloc(sizeof(int));
A) int B) int *