printf(“%c”,*p); 。
2、以下程序输出的是 C 。 void main( ) { int i=3, j=2;
char *a=\DCBA\
printf(\ }
3、以下函数的功能是,把两个整数指针所指的存储单元中的内容进行交换。请填空。 void exchange(int *x, int *y) { int t;
t=*y; *y= *x ; *x= t ; }
B部分(本科必做)
程序填空:
1、下面程序的输出结果是 A B C D B C D C D D 。 char b[]=\ABCD\ void main() { char *chp;
for(chp=b; *chp: chp+=2) printf(\ printf(\
}
2、 下面是一个字符串连接函数,请补充完整。
void mystrcat(char *s1,char *s2) { char *p,*q; for(p=s1; *p ; p++ ); for( q=s2 ;*q;q++) *p++=*q ; *p=?\\0? ; }
第十一章 结构体与共用体
A部分(本、专科必做)
一、选择题
1、设有如下定义:
struct sk
{int a;float b;}data,*p;
若有p=&data;,则对data中的a域的正确引用是(B)。 A)(*p).data.a B)(*p).a C)p->data.a D)p.data.a
2、根据以下定义,能输出字母M的语句是(D)。 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]); struct person{char name[9];int age;};
struct person class[10]={“John”,17,”Paul”,19,”Mary”,18,”Adam”,16,}; 3、以下程序的输出结果是(D)。 A、0 B、1 C、3 D、6 #include
}
4、若有以下说明及语句,则值为6的表达式是(D)。 A、p++->n B、p->n++ C、(*p).n++ D、++p->n struct st{int n;struct st *next;}; struct st a[3],*p; a[0].n=5;a[0].next=&a[1];a[1].n=7;a[1].next=&a[2]; a[2].n=9;a[2].next=?\\0?;p=&a[0];
5、已知字符0的ASCII码的十进制的值是48,且数组的第0个元素在低位,以下程序的输出结果是(B)。 A、39 B、9 C、38 D、8 void main() { union{int i[2];long k;char c[4];}r,*s=&r; s->i[0]=0x39;s->i[1]=0x38; printf(“%x\\n”,s->c[0]);
}
6、以下程序输出的结果是(C)。 A、32 B、16 C、8 D、24
typedef union{long x[2];int y[4];char z[8];}MYTYPE; MYTYPE them; void main() { printf(“%d\\n”,sizeof(them));
} 7、设有以下语句
typedef struct S
{ int g; char h;} T; 则下面叙述中正确的是(B)。 A) 可用S定义结构体变量 C)S是struct类型的变量
B)可以用T定义结构体变量
D)T是struct S类型的变量
8、有以下说明和定义语句
struct student
{ int age; char num[8];};
struct student stu[3]={{20,\
struct student *p=stu;
以下选项中引用结构体变量成员的表达式错误的是(D)。 A) (p++)->num B) p->num C) (*p).num D) stu[3].age
二、填空题 1、为了建立结构体(含有两个成员,data是数据成员,next是指向自身结构体的指针成员),请填空: Struct link
{ char data; struct link *next ; }
2、把类型int另取一个类型名称INT,则以下应填: typedef int INT; 3、以下程序的运行结果是2002Shangxian 。
# include
char name[10]; long sno; float score; }STU; main( ) {
STU a={“zhangsan”,2001,95},b={“Shangxian”,2002,90},
c={“Anhua”,2003,95},d,*p=&d;
d=a;
if(strcmp(a.name,b.name)>0) d=b; if(strcmp(c.name,d.name)>0) d=c; printf(“%ld%s\\n”,d.sno,p->name); }
B部分(本科必做)
程序填空:
以下程序的功能是:处理由学号和成绩组成的学生记录,N名学生的数据已在主函数中放入结构体数组s中,它的功能是:把分数最高的学生数据放在b所指的数组中,注意:分数最高的学生可能不只一个,函数返回分数最高学生的人数。请填空。 #include
{ char num[10];
int s; }STREC;
int fun(STREC *a,STREC *b) { int i,j=0,max=a[0].s; for(i=0;i
printf(“The %d highest score:\\n”, n ); for(i=0;i printf(“%s M\\n”,h[i].num,h[i].s); printf(“\\n”); }