5.
#include
char *t; t=a;
while(*t!='\\0') t++;
t--; /*移到字符串最后*/ while(t>=a&&*t=='*')
t--; /*向前删除*/ *(t+1)='\\0';
}
void main() { char a[80]; gets(a); fun(a); if(*a!='\\0')
puts(a);
else puts(\变成空串了!\); }
6.
#include
int fun(int score[],int m,int below[]) { int *p,*q,k; float aver=0;
for(p=score;p aver+=*p; aver/=m; q=below; k=0; for(p=score;p } void main() { int a[10],b[10]; int i,k; printf(\请输入10个学生的成绩:\\n\); for(i=0;i<10;i++) scanf(\,&a[i]); k=fun(a,10,b); printf(\低于平均分的学生人数是:%d\\n\,k); printf(\低于平均分的成绩是:\\n\); for(i=0;i printf(\,b[i]); } 30 第十部分 结构体 一、选择题(共24分,每题1.5分) 1.以下对结构体变量stu1中成员age的非法引用是 B 。 struct student { int age; int num; }stu1,*p=&stu1; A.stu1.age B.student.age C.p->age D.(*p).age 2.有定义如下,则对于结构变量data的成员a的正确引用是 B 。 struct sk { int a; float b; }data ,*p=&data; A. data->a B. (*p).a C. p->data.a D. p.data.a (=>data.a, p->a) 3.以下scanf函数调用语句中对结构体变量成员的不正确引用是 D 。 struct pupil { char name[20]; int age; int sex; }pup[5],*p=pup; E. scanf(\ B.scanf(\ C. scanf(\ D.scanf(\=> &p->age 4.根据如下定义: struct person{char name[9]; int age;}; struct person class[10]={ \,17,\,19,\,18,\,16}; 能输出字母‘M’的语句是 D 。 A.prinft(\,class[3]. name); B.printf(\,class[3].name[1]); C.prinft(\,class[2].name[1]); D.printf(\,class[2].name[0]); 5.设有以下说明语句: struct ex { int x; float y; char z; }example; 则下面的叙述中不正确的是 B 。 A.struct是结构体类型的关键字 B.example是结构体类型名 C.x,y,z都是结构体成员名 D.struct ex是结构体类型名 31 6.定义一个结构体变量时,系统分配给它的内存大小是 A 。 A.各成员所需内存量的总和 B.成员中占内存量最大者所需内存容量 C.结构中第一个成员所需内存容量 D.结构中最后一个成员所需内存容量 7.C语言结构体类型变量在程序执行期间 A 。 A.所有成员一直驻留在内存中 B.只有一个成员驻留在内存中 C.部分成员驻留在内存中 D.没有成员驻留在内存中 8.若有以下定义,则不正确的引用是 D 。 struct student{int age;int num;}; struct student stu[3]={{1001,20},{1002,19},{1003,21}},*p=stu; A.(p++)->num B.p++ C.(*p).num D.p=&stu.age 9.若有以下说明和语句,则下面表达式中的值为1002的是 B 。 struct student { int age; int num; }stu[3]={{1001,20},{1002,19},{1003,21}},*p=stu; A.(p++)->num B.(++p)->age C.(*p).num D.(*++p)->age 10.若有以下程序段: struct dent { int n; int *m; }; int a=1,b=2,c=3; struct dent s[3]={{101,&a},{102,&b},{103,&c}},*p=s; 则下面表达式中的值为2的是 D 。 A.(p++)->m B.*(p++)->m C.(*p).m D.*(++p)->m data next … b NULL a x c r p q 11.若已建立上面的链表结构,指针p、q分别指向图中所示结点,则不能将q所指的结点插入到链 表末尾的一组语句是 C 。 A.q->next=NULL; p=p->next; p->next=q; B.p=p->next; q->next= p->next; p->next=q; C.p=p->next; q->next= p; p->next=q; 32 D.p=(*p).next; (*q).next=(*p).next; (*p).next=q; 12. 若已建立上面的链表结构,指针p、q分别指向图中所示结点,则不能将q所指的结点c插入到 a和b之间并形成新的链表的语句组是 B 。 A.(*q).next=(*p).next; (*p).next=q; B.p->next=q; q->next=p->next; C.q->next=p->next; p->next=q; D.(*p).next=q; (*q).next=&b; 13. 若已建立上面的链表结构,指针p、q分别指向图中所示结点,则能将p所指结点从链表中删除 并释放该结点的语句组是 C 。 A.free(p);r->next=p->next; B.p=p->next; r->next=p; free(p); C.(*r).next=(*p).next; free(p); D.p=p->next; r->next=p;r=r->next;free(r); 14.A 15.C 16.C 17.B 18.D 19.B 20.C C 21.下面对typedef的叙述中不正确的是 B 。 A.用typedef可以定义各种类型名,但不能用来定义变量 B.用typedef可以增加新类型 C.用typedef只是将已存在的类型用一个新的标识符来代表 D.使用typedef有利用程序的通用移值 22.已知 enum week{sun,mon,tue,wed,thu,fri,sat}day;则正确的赋值语句是 D 。 A.sun=0; B.san=day; C.sun=mon; D.day=sun; 23. enum color{red,green,yellow=5,white,black}定义了一枚举类型。编译程序为值表中各标识 符分配的枚举值依次为 C 。 A.1、2、3、4、5 B.0、1、5、2、3 C.0、1、5、6、7 D.3、4、5、6、7 二、填空题(共44分,每题4分) 1.以下程序的运行结果是 20,y 。 # include \struct data { int x; char c; }; 33 void func(struct data *b) { b->x=20; b->c='y'; } void main() { struct data a={10,'x'}; func(&a); printf(\} 2.以下程序的运行结果是 61,60,10 80,41 。 # include \struct st { int x; int *y; } *p; void main() { int dt[4]={ 10,20,30,40 }; struct st aa[4]={50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3]},*p=aa; printf(\ p+=2; printf(\} 3.以下程序的运行结果是 zhao liu li si zhang san wang wu 。 # include \ struct man { char name[20]; int age; }person[]={{\void main() { int i,j,k; struct man tmp; for(i=0;i<3;i++) { for(k=i,j=i+1;j<4;j++) 34 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库作业本_《C程序设计Ⅱ》答案(7)在线全文阅读。
相关推荐: