当前位置:首页 > 指针和结构体练习题
main ( )
{ char s[12]; int i;
for (i=0; i<12 ; i++) s[i]=?A?+i+32 ; sub(s,7,11);
for (i=0; i<12 ; i++) printf (“%c”,s[i]); printf(“\\n”); }
abcdefglkjih
4.当运行以下程序时,写出输入 6↙ 的程序运行结果。
sub(char *a,char b)
{ while (*(a++)!=?\\0?) ; while (*(a-1)
main ( )
{ char s[]=”97531”,c; c = getchar ( ) ; fun(s,c); puts(s) ; }
第十一章 结构
一.选择题
1.如下说明语句,则下面叙述不正确的是 。
struct stu {
int a ; float b ; } stutype ;
A)struct是结构类型的关键字
B)struct stu是用户定义的结构类型 C)stutype是用户定义的结构类型名 D)a和b都是结构成员名
2.以下对结构类型变量的定义中不正确的是 。
A)#define STUDENT struct student B)struct student { STUDENT { int num ; int num ; float age ; float age ; } std1 ; } std1 ; C)struct { D)struct {
int num ; int num ; float age ; float age ; } student ;
} std1 ; struct student std1 ; 3.在16位PC机中,若有定义:
struct data { int i ; char ch; double f; } b ; 则结构变量b占用内存的字节数是 。
A)1 B)2 C)8 D)11 4.当定义一个结构变量时,系统分配给它的内存是 。
A)各成员所需内存量的总和 B)结构中第一个成员所需内存量 C)成员中占内存量最大的容量 D)结构中最后一个成员所需内存量 5.已知学生记录描述为:
struct student {
int no ; char name[20]; char sex; struct {
int year; int month ; int day ; } birth ; } s ;
设结构变量s中的“birth”应是“1985年10月1日”,则下面正确的赋值方式是 。 A)year=1985 B)birth.year=1985 month=10 birth.month=10 day=1 birth.day=1
C)s.year=1985 D)s.birth.year=1985 s.month=10 s.birth.month=10 s.day=1 s.birth.day=1 6.下面程序的运行结果是 。
main ( ) {
struct complx { int x; int y ; } cnum[2]={1,3,2,7} ;
printf(“%d\\n”,cnum[0].y/cnum[0].x*cnum[1].x) ; }
A)0 B)1 C)2 D)6 7.以下对结构变量成员不正确的引用是 。
struct pupil {
char name[20]; int age; int sex ; } pup[5], *p=pup ;
A)scanf(“%s”,pup[0].name); B)scanf(“%d”,&pup[0].age); C)scanf(“%d”,&(p->sex)); D)scanf(“%d”,p->age); 8.以下引用不合法的是 。
struct s {
int i1; struct s *i2,*i0 ;
} a[3]={2,&a[1],’\\0’, 4,&a[2],&a[0], 6,’\\0’,&a[1]} , *ptr=a; A)ptr->i1++ B)*ptr->i2 C)++ptr->i0 D)*ptr->i1 9.若有以下程序段:
int a=1,b=2,c=3; struct dent {
int n ; int *m ;
} s[3] = {{101,&a},{102,&b},{103,&c}}; struct dent *p=s ;
则以下表达式中值为2的是 。
A)int B)*(p++)->m C)(*p).m D)*(++p)->m
10.若要利用下面的程序段使指针变量p指向一个存储整型变量的存储单元,则在【】中应有的内容是 。
int *p ;
p = 【】malloc(sizeof(int));
A)int B)int * C)(*int) D)(int*) 11.下面对typedef的叙述中不正确的是 。 A)用typedef可以定义多种类型名,但不能用来定义变量 B)用typedef可以增加新类型
C)用typedef只是将已存在的类型用一个新的标识符来代表 D)使用typedef有利于程序的通用和移植
二.填空题
1.结构变量成员的引用方式是使用 运算符,结构指针变量成员的引用方式是使用 运算符。 2.若有定义:
struct num {
int a ; int b ; float f ; } n = {1,3,5.0} ; struct num *pn = &n ;
则表达式pn->b/n.a,n.a*++pn->b的值是 。表达式(*pn).a+pn->f的值是 。
3.C语言允许用 声明新的类型名来代替已有的类型名。
共分享92篇相关文档