练习9-1答案
一、选择题
1.typedef unsigned long LONG的作用是( D )。
A.建立了一种新的数据类型 B.定义了一个整形变量
C.定义了一个长整型变量 D.定义了一个新的数据类型标识符
2.下面的4个运算符中,优先级最低的是( D )。
A.( ) B.. C.-> D.++
3.已知:
struct
{int i;
char c;
float a;
} test;
则sizeof(test)的值是( D )。
A.4 B.5 C.6 D.7
4.当声明一个结构变量时系统分配给它的内存是( A )。
A.各成员所需内存量的总和 B.结构中第一个成员所需内存量
C.成员中占内存量最大者所需的容量 D.结构中最后一个成员所需内存量
5.以下对结构类型变量的定义中错误的是( D )。
A.typedef struct student B.struct student
{ int num; {int num;
float age; float age;
} STUDENT std1; } std1;
C.struct D.struct
{ int num; {int num;
float age; float age;
} std1; } student;
struct student std1;
6.根据下面的定义,能打印出字母M的语句是( D )。
struct person
{char name[9];
int age;
};
struct person class[10]={"John", 17, "Paul", 19, "Mary", 18, "adam", 16};
A.printf("%c\n", class[3].name); B.printf("%c\n", class[3].name[1]);
C.printf("%c\n", class[2].name[1]); D.printf("%c\n", class[2].name[0]);
7.以下scanf函数调用语句中对结构变量成员的错误引用是( D )。
struct pupil
{char nam[20];
int age;
int sex
} pup[5], *p;
p=pup;
A.scanf("%s", pup[1].name); Bc语言中struct.scanf("%d", &pup[0].age);
C.scanf("%d", &(p->sex)); D.scanf("%d", p->age);
8.若有以下程序段:
struct dent
{int n;
int *m;
};
int a=1, b=2, c=3;
struct dent s[3]={{101, &a}, {102, &b}, {103, &c}};
struct dent *p=s;
则以下表达式中值为2的是( D )。
A.(p++)->m B.*(p++)->m C.(*p).m D.*(++p)->m
二、填空题
9.已知:
struct
{int x, y;
} s[2]={{1, 2}, {3, 4}}, *p=s;
则表达式++p->x的值( ①2 ),表达式(++p)->x的值是( ②3 )。
10.下面的程序从终端上输入n个人的年龄、性别和姓名,然后输出。则①是( p+n )、②是( gets(p->name) 或 scanf("%s", p->name) )、③是( p+n )。
#include "stdio.h"
struct man
{ char name[20];
unsigned age;
char sex[7];
};
main()
{ struct man person[5];
data_in(person, 5);
data_out(person, 5);
}
data_in(struct man *p, int n)
{ struct man *q= ① ;
for (; p<q; p++)
{ printf("age:sex:name");
scanf("%u%s", &p->age, p->sex);
② ;
}
}
data_out(struct man *p, int n)
{ struct man *q= ③ ;
for (; p<q; p++)
printf("%s;%u%s\n", p->name, p->age, p->sex);
}
三、读程序,写结果。
11.下面程序的运行结果是( Zhao )。
#include <stdio.h>
struct stu
{ int num;
char name[10];
int age;
};
void fun(struct stu *p)
{ printf("%s\n", (*p).name);
}
main()
{ struct stu students[3]={{9801,"Zhang",20},{9802,"Wang",19},{9803,"Zhao",18}}; fun(students+2);
}
12.下列程序输出结果是( 1, ninicomputer )。
#include "stdio.h"
struct tree
{ int x;
char *s;
} t;
func(struct tree t)
{ t.x=10;
t.s="computer";
return(0);
}
main()
{ t.x=1;
t.s="minicomputer";
func(t);
printf("%d, %s\n", t.x, t.s);
}
练习9-2答案
一、选择题
1.设有以下说明和定义语句,则下面表达式中值为3的是( D )。
struct s
{int i1;
struct s *i2;
};
static struct s a[3]={1, &a[1], 2, &a[2], 3, &a[0]};
static struct s *ptr;
ptr=&a[1];
A.ptr->i1++ B.ptr++->i1 C.*ptr->i1 D.++(ptr->i1)
2.下面对枚举变量的定义中,正确的是( D )。
A.enum color {red, blue, green;} a, b; B.enum color={red, blue, green} a,b;
C.enum color={"red", "blue", "green"} a, b; D.enum color {red, blue, green} a, b;
3.执行以下语句后的输出结果是( A )。
enum weekday {sun, mon=3, tue, wed, thu};
enum weekday workday;
workday=wed;
printf("%d\n", workday);
A.5 B.3 C.4 D.编译时出错
4.已知:
union
{int i;
char c;
float a;
} test;
则sizeof(test)的值是( A )。
A.4 B.5 C.6 D.7
5.已知函数原型为:
struct tree *f(int x1, int *x2, struct tree x3, struct tree *x4)
其中tree为已定义过的结构,且有下列变量定义:struct tree pt, *p; int i;
请选择正确的函数调用语句( B )。
A.&pt=f(10, &i, pt, p) B.p=f(i++, &i, pt, &pt);
C.f=f(i+1, &(i+2), *p, p); D.f(i+1, &i, p, p);
二、读程序,写结果
6.下面程序的运行结果是:
( mix.i=12345678
mix.k=5678
mix.ii=78
mix.s[0]=78□□□□□mix.s[1]=56
mix.s[2]=34□□□□□mix.s[3]=12 )。(注:□表示空格。)
#include <stdio.h>
main()
{union
{ long i;
int k;
char ii;
char s[4];
} mix;
mix.i=0x12345678;
printf("mix.i=%lx\n", mix.i);
printf("mix.k=%x\n", mix.k);
printf("mix.ii=%x\n", mix.ii);
printf("mix.s[0]=%x\tmix.s[1]=%x\n", mix.s[0], mix.s[1]);
printf("mix.s[2]=%x\tmix.s[3]=%x\n", mix.s[2], mix.s[3]);
}
7.下面程序对应的运行结果是:
( 380039
9 )。
#include <stdio.h>
main()
{union
{ int i[2];
long k;
char c[4];
} t, *s=&t;
s->i[0]=0x39;
s->i[1]=0x38;
printf("%lx\n", s->k);
printf("%c\n", s->c[0]);
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论