任务37:结构体数组 《编程语言-C语言》45分钟专题训练

| 2份
| 33页
| 100人阅读
| 1人下载

内容正文:

湖南省职教高考《编程语言—C语言》45分钟专题训练专辑,共43份试卷。试卷命题与高考紧密相关,精选具有代表性和典型性的高考常考题。旨在帮助学生系统地复习和巩固计算机类理论知识,熟悉高考题型和命题规律,提高解题能力和应试技巧,为高考取得优异成绩打下坚实的基础,本训练卷适用于即将参加计算机类高考的学生。与本专辑配套的还有湖南省职教高考《计算机应用基础》《计算机组装与维护》《计算机网络技术》45分钟专题训练专辑,欢迎同学和老师们下载使用。 《编程语言—C语言》 项目八: 结构体、共用体、链表 第37卷: 结构体数组 时间:45分钟 总分:100分 班级___________ 姓名__________ 学号__________ 成绩________ 一、选择题(共23小题,每小题2分,共46分) 1.根据以下定义,能打印出字母M的语句是( ) struct person{char name[9];int age;}; struct person class[10]={"John",17,"Tom",16,"Mary",19,"Adam",19}; A.printf("%c ",class[3].name); B.printf("%c ",class[3].name[1]); C.printf("%c ",class[2].name[1]); D.printf("%c ",class[2].name[0]); 【答案】D 2.设有以下程序段,则下列表达式中,值为6的选项是( ) struct st{int n;struct st *next;}; static struct st a[3]={5,&a[1],7,&a[2],9,'\0'},*p; p=&a[0]; A.p++->n B.p->n++ C.(*p).n++ D.++p->n 【答案】D 3.下列程序的输出结果是( ) main() {struct cmplx{int x;int y;}cnum[2]={1,3,2,7}; printf("%d ",cnum[0].y/cnum[0].x*cnum[1].x);getch();} A.0 B.1 C.3 D.6 【答案】D 4.设有以下定义,则scanf函数调用语句中,对结构体变量成员不正确的引用是( ) struct pu {char name[20];int age;int sex;}pup[5],*p;p=pup; A. scanf("%s",pup[0].name); B. scanf("%d",&pup[0].age); C. scanf("%d",&(p->sex)); D. scanf("%d",p->age); 【答案】D 5.设有以下定义和语句,则选项中,表达式值为3的是( ) struct s{int i1;struct s,*i2}; static struct s a[3]={1,&a[1],2,&a[2],3,&a[0]},*ptr; ptr=&a[1]; A.ptr->i1++ B.ptr++->i1 C.*ptr->i1 D.++ptr->i1 【答案】D 6.设有以下程序段,则选项中,表达式值为210的是( ) struct s {int a;int *b;}; int x0[ ]={110,120},x1[ ]={210,220}; struct s x[ ]={{100},{200}},*p=x; x[0].b=x0;x[1].b=x1; A.*p->b B.(++p)->a C.*(p++)->b D.*(++p)->b 【答案】D 7.设有定义:struct xx{int a;int b;};则下列选项中,属于正确的应用或定义的是( ) A.xx.a=5 B.xx c;c.x=5 C.struct c;c.x=5 D.struct xx c={5} 【答案】D 8.下列程序段的输出结果是( ) main( ) {struct student {int num;char name[10];float score;} s[5]={{1,"lili",98.5},{9,"xiaohua",66}},*p=s;printf("%d",*p++); getch();} A.1 B.98.5 C.9 D.66 【答案】A 9.设有以下定义和语句,则下列选项中不正确的引用形式是( ) struct student{int year;int num;}; struct student stu[3]={{2025,20},{2024,19},{2026,21}}; struct student *p;p=stu; A.(p++)->num B.p++ C.(*p).num D.p=&stu.age 【答案】D 10.执行以下程序段的输出结果是( ) main() {struct comper{int x;int y;int z;}cm[3]={1,3,5,7,9,11,2,4,6}; printf("%d,%d",cm[0].y+cm[1].x*cm[2].z-cm[0].x,cm[1].z+cm[0].x/2); getch();} A.40,10 B.36,11 C.45,11 D.44,11 【答案】D 11.执行以下程序段的输出结果是( ) main() {struct comper{int x;int y;float z;}cm[3]={1,3,5,2,4,6,1,2,3}; printf("%d,%d,%.2f",cm[0].x+cm[1].x+cm[2].x,cm[0].y*cm[1].y*cm[2].y, cm[0].z+cm[1].z/cm[2].z); getch();} A.4,24,7 B.4,20,7 C.4,22,7 D.4,24,7.00 【答案】D 12.执行以下程序段的输出结果是( ) main() {struct s{int x;int y;}s[2]={2,0,2,6}; printf("%d",s[0].x+s[1].y);getch();} A.2 B.4 C.8 D.10 【答案】C 13.设有以下定义,下列选项中能够输出33的选项是( ) struct person {char name[9];int age;}; struct person c[5]={"John",16,"Paul",17,"Mary",18,"Anna",19}; A.printf("%s",c[1].name+c[1].age); B.printf("%d",c[0].age+c[1].age); C.printf("%d",c[1].age+c[2].age); D.printf("%d",c[2].age+c[3].age); 【答案】B 14.下列程序的运行结果是( ) struct point {int x;int y;}; main() {struct point p1={20,25}; printf("point coordinates:(%d,%d) ",p1.x,p1.y);getch();} A.point coordinates:(20,25) B.point coordinates:(20 25) C.point coordinates:20,25 D.20,25 【答案】A 15.执行以下程序段的输出结果是( ) struct abc{int a,b,c;}; main() {struct abc s[2]={{1,1,1},{8,8,8}}; int t; t=s[0].c+s[1].b; printf("%d",t);getch();} A.1 B.2 C.8 D.9 【答案】D 16.执行以下程序段的输出结果是( ) struct abc{int a,b,c;}; main() {struct abc s[2]={1,2,1,2,1,2}; printf("%d,%d,%d",s[0].a>>2,s[1].b^s[1].c,s[1].a&s[0].b);getch();} A.1,3,2 B.0,3,3 C.0,2,3 D.0,3,2 【答案】D 17.下列程序的功能是:结构体中存有三人的姓名和年龄,下列程序可输出三人中年龄居中者的姓名和年龄。请你为第【1】空选择填空。( ) static struct man {char name[20];int age;} person[ ]={"li-yang",18,"wang-hua",19,"zhang-ping",20}; main( ) {int i,j,max,min;max=min=person[0].age; for(i=1;i<3;i++) if(person[i].age>max)【1】; else if(【2】) min=person[i].age; for(i=0;i<3;i++) if(person[i].age!=max【3】) {printf("%s %d ",person[i].name,person[i].age);break;}getch();} A.max=person[i].age B.min=person[i].age C.max=person[i].name D.max=person[++i].age 【答案】A 18.下列程序的功能是:结构体中存有三人的姓名和年龄,下列程序可输出三人中年龄居中者的姓名和年龄。请你为第【2】空选择填空。( ) static struct man {char name[20];int age;} person[ ]={"li-yang",18,"wang-hua",19,"zhang-ping",20}; main( ) {int i,j,max,min;max=min=person[0].age; for(i=1;i<3;i++) if(person[i].age>max)【1】; else if(【2】) min=person[i].age; for(i=0;i<3;i++) if(person[i].age!=max【3】) {printf("%s %d ",person[i].name,person[i].age);break;}getch();} A. person[i].age>min B. person[i].age<max C. person[i].age<min D.person[i].age>max 【答案】C 19.下列程序的功能是:结构体中存有三人的姓名和年龄,下列程序可输出三人中年龄居中者的姓名和年龄。请你为第【3】空选择填空。( ) static struct man {char name[20];int age;} person[ ]={"li-yang",18,"wang-hua",19,"zhang-ping",20}; main( ) {int i,j,max,min;max=min=person[0].age; for(i=1;i<3;i++) if(person[i].age>max)【1】; else if(【2】) min=person[i].age; for(i=0;i<3;i++) if(person[i].age!=max【3】) {printf("%s %d ",person[i].name,person[i].age);break;}getch();} A.&&person[i].age!=min B.&&person[i].age==min C.||person[i].age!=min D.||person[i].age==min 【答案】A 20.下列函数stdaverage的功能是:计算N个学生M门课程的平均分。请为第【1】空选择填空。( ) #define M 5 #define N 30 struct student {int num;char name[10];float score[M];float ave;}; void stdave(struct student s[ ],int n) {int i,j;float sum; for(i=0;i<n;i++) {sum=0.0; for(j=0;j<M;j++)sum=sum+【1】; 【2】=sum/M;}} main( ) {struct student pers[N];……stdave (pers,N);……getch();} A.s[j].score[j] B.s[i].score[j] C.s[j].score[i] D.s[i].score[j+1] 【答案】B 21.下列函数stdaverage的功能是:计算N个学生M门课程的平均分。请为第【2】空选择填空。( ) #define M 5 #define N 30 struct student {int num;char name[10];float score[M];float ave;}; void stdave(struct student s[ ],int n) {int i,j;float sum; for(i=0;i<n;i++) {sum=0.0; for(j=0;j<M;j++)sum=sum+【1】; 【2】=sum/M;}} main( ) {struct student pers[N];……stdave (pers,N);……getch();} A. s[j].ave B. s[i+1].ave C. s[i+j].ave D.s[i].ave 【答案】D 22.下列函数findbook的功能是:在有M个元素的结构体数组s中查找名为nam的书,若找到,函数返回数组下标,否则返回-1。请为第【1】空选择填空。( ) # define M 100 struct data {int id; char name[20]; double price;}book[M]; int findbook(struct data s[],char nam[]) {int i;for(i=0;i<M;i++) if(strcmp(【1】)==0) return i; 【2】;} A.s[i].name,nam B.s[i].name,s[i].name C.s[i].name,nam[0] D.s[i].price,nam 【答案】A 23. 下列函数findbook的功能是:在有M个元素的结构体数组s中查找名为nam的书,若找到,函数返回数组下标,否则返回-1。请为第【2】空选择填空。( ) # define M 100 struct data {int id; char name[20]; double price;}book[M]; int findbook(struct data s[],char nam[]) {int i;for(i=0;i<M;i++) if(strcmp(【1】)==0) return i; 【2】;} A.return 1 B.return 0 C.return ++i D.return -1 【答案】D 二、程序运行结果题(本题共7小题,每题3分,共21分) 24.以下程序的运行结果是( ) #include <stdio.h> #include <conio.h> struct st {int x; int *y;}*p; int dt[4]={10,20,30,40}; struct st aa[4]={55,&dt[1],66,&dt[0],77,&dt[2],88,&dt[3]}; main() {p=aa; printf("%d ",++p->x); printf("%d ",(++p)->x); printf("%d ",++(*p->y)); getch();} 【答案】56 66 11 25.以下程序的运行结果是( ) #include <stdio.h> #include <conio.h> struct s{int x,y;}; main() {struct s data[2]={4,3,1,9}; int i; for(i=0;i<2;i++) printf("%d,%d;",data[i].x,data[i].y>>1);getch();} 【答案】4,1;1,4; 26.以下程序的运行结果是( ) #include <stdio.h> #include <conio.h> struct s{int x,y;}; main() {struct s data[3]={4,3,2,0,8,1}; int i; for(i=0;i<3;i++) printf("%d%d;",data[i].x,data[i].y>>1); getch();} 【答案】41;20;80; 27.以下程序的运行结果是( ) #include <stdio.h> #include <conio.h> struct person{char name[10];int age;}; main() {struct person room[2]={{"wang",19},{"li",20}}; printf("%s:%d ",(room+1)->name,room->age); getch();} 【答案】li:19 28.以下程序的运行结果是( ) #include <stdio.h> #include <conio.h> struct stu{int x;int *y;}*p; int dt[4]={10,20,30,40}; struct stu a[4]={50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3]}; main( ) { p=a; printf("%d,",++p->x); printf("%d,",(++p)->x); printf("%d ",++(*p->y)); getch();} 【答案】51,60,21 29.以下程序的运行结果是( ) #include <stdio.h> #include <conio.h> struct tt {int x; struct tt *y;}*p; struct tt a[4]={20,a+1,26,a+2,30,a+3,17,a}; main() {int i; p=a; for(i=1;i<=2;i++) {printf("%d",p->x); p=p->y;} getch();} 【答案】2026 30.以下程序的运行结果是( ) #include <stdio.h> #include <conio.h> struct country {int num;char name[10];}; main() {struct country x[3]={{1,"asdfg"},{2,"qwert"},{3,"zcxvbn"}}; struct country *p; p=&x[2]; printf("%d,%s",p->num+1,p->name); getch();} 【答案】4,zcxvbn 三、阅读程序,修改程序中的错误,不得增行或删行,也不得更改程序结构。请指出错误代码所在的行号,并给出该行修改后的程序代码。每处3分,共9分) 31.下列程序的功能是:使用“比较计数”法对结构体数组a按照字段num进行降序排列。“比较计数”法的基本思想是“通过另一字段con记录a中小于某一特定关键字的元素的个数,待算法结束,a[i].con就是a[i].num在a中的排序位置。程序中有三处错误,请改正。 L1 #include <stdio.h> L2 #include<conio.h> L3 #define N 16 L4 struct c L5 { int num;int con;}a[16]; L6 main( ) L7 { int i,j; L8 for(i=0;i<N;i++) L9 { scanf("%d",a[i].num); L10 a[i].con=0;} L11 for(i=N-1;i>=-1;i--) L12 for(j=i-1;j>=-1;j++) L13 if(a[i].num>a[j].num) L14 a[j].con++; L15 else a[i].con++; L16 for(i=0;i<N;i++) L17 printf("%d,%d ",a[i].num,a[i].con); L18 getch();} 答案: L9 { scanf("%d",&a[i].num); L12 for(j=i-1;j>=0;j--) L13 if(a[i].num<a[j].num) 四、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共24分) 32.下列程序的功能是:函数print输出一个学生的成绩数组,该数组中有5个学生的数据记录,每个记录包括num,name,score[3],在主函数内输入这些记录,使用print函数输出这些记录。请填空。 #include <stdio.h> #include<conio.h> #define N 5 struct student {char num[6]; char name[8]; int score[4];}stu[N]; main() {【1】; int i,j; for(i=0;i<N;i++) {printf("input score of student %d: ",i+1); printf("NO:"); scanf("%s",stu[i].num); printf("name:"); scanf("%s",【2】); for(j=0;j<3;j++) {printf("score %d:",j+1); scanf("%d",【3】);} printf(" ");} print(stu);getch();} void print(struct student stu[6]) {int i,j; printf(" NO. name score1 score2 score3 "); for(i=0;i<N;i++) {printf("%5s%10s",【4】); for(j=0;j<3;j++) printf("%9d",stu[i].score[j]); printf(" ");}} 答案:①void print(struct student stu[6]) ②stu[i].name ③&stu[i].score[j] ④stu[i].num,stu[i].name 33.下列程序的功能是:从键盘输入10个学生的成绩(包括学号、姓名、3门课程成绩),输出3门课程总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课程成绩、平均分数)。请填空。 #include <stdio.h> #include<conio.h> #define N 10 struct student {char num[6]; char name[8]; float score[3]; float avr;}stu[N]; main() {int i,j,maxi; float sum,max,average; for(i=0;i<N;i++) {printf("input score of student %d: ",i+1); printf("NO:"); scanf("%s",stu[i].num); printf("name:"); scanf("%s",stu[i].name); for(j=0;j<3;j++) {printf("score %d:",j+1); scanf("%f",&stu[i].score[j]);} printf(" ");} average=0; max=0; maxi=0; for(i=0;i<N;i++) {sum=0; for(j=0;j<3;j++) sum+=【1】; stu[i].avr=【2】; average+=stu[i].avr; if(【3】) {max=sum; maxi=i;}} average=【4】; printf(" NO. name score1 score2 score3 "); for(i=0;i<N;i++) {printf("%5s%10s",stu[i].num,stu[i].name); for(j=0;j<3;j++) printf("%9.2f",stu[i].score[j]); printf("%8.2f ",stu[i].avr);} printf("average=%5.2f ",average); printf("The highest score is:student %s,%s ",stu[maxi].num,stu[maxi].name); printf("His scores are :%6.2f,%6.2f,%6.2f,average:%5.2f ", stu[maxi].score[0],stu[maxi].score[1],stu[maxi].score[2],stu[maxi].avr); getch();} 答案:①stu[i].score[j] ②sum/3.0 ③sum>max ④average/N 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $$ 湖南省职教高考《编程语言—C语言》45分钟专题训练专辑,共43份试卷。试卷命题与高考紧密相关,精选具有代表性和典型性的高考常考题。旨在帮助学生系统地复习和巩固计算机类理论知识,熟悉高考题型和命题规律,提高解题能力和应试技巧,为高考取得优异成绩打下坚实的基础,本训练卷适用于即将参加计算机类高考的学生。与本专辑配套的还有湖南省职教高考《计算机应用基础》《计算机组装与维护》《计算机网络技术》45分钟专题训练专辑,欢迎同学和老师们下载使用。 《编程语言—C语言》 项目八: 结构体、共用体、链表 第37卷: 结构体数组 时间:45分钟 总分:100分 班级___________ 姓名__________ 学号__________ 成绩________ 一、选择题(共23小题,每小题2分,共46分) 1.根据以下定义,能打印出字母M的语句是( ) struct person{char name[9];int age;}; struct person class[10]={"John",17,"Tom",16,"Mary",19,"Adam",19}; A.printf("%c ",class[3].name); B.printf("%c ",class[3].name[1]); C.printf("%c ",class[2].name[1]); D.printf("%c ",class[2].name[0]); 2.设有以下程序段,则下列表达式中,值为6的选项是( ) struct st{int n;struct st *next;}; static struct st a[3]={5,&a[1],7,&a[2],9,'\0'},*p; p=&a[0]; A.p++->n B.p->n++ C.(*p).n++ D.++p->n 3.下列程序的输出结果是( ) main() {struct cmplx{int x;int y;}cnum[2]={1,3,2,7}; printf("%d ",cnum[0].y/cnum[0].x*cnum[1].x);getch();} A.0 B.1 C.3 D.6 4.设有以下定义,则scanf函数调用语句中,对结构体变量成员不正确的引用是( ) struct pu {char name[20];int age;int sex;}pup[5],*p;p=pup; A. scanf("%s",pup[0].name); B. scanf("%d",&pup[0].age); C. scanf("%d",&(p->sex)); D. scanf("%d",p->age); 5.设有以下定义和语句,则选项中,表达式值为3的是( ) struct s{int i1;struct s,*i2}; static struct s a[3]={1,&a[1],2,&a[2],3,&a[0]},*ptr; ptr=&a[1]; A.ptr->i1++ B.ptr++->i1 C.*ptr->i1 D.++ptr->i1 6.设有以下程序段,则选项中,表达式值为210的是( ) struct s {int a;int *b;}; int x0[ ]={110,120},x1[ ]={210,220}; struct s x[ ]={{100},{200}},*p=x; x[0].b=x0;x[1].b=x1; A.*p->b B.(++p)->a C.*(p++)->b D.*(++p)->b 7.设有定义:struct xx{int a;int b;};则下列选项中,属于正确的应用或定义的是( ) A.xx.a=5 B.xx c;c.x=5 C.struct c;c.x=5 D.struct xx c={5} 8.下列程序段的输出结果是( ) main( ) {struct student {int num;char name[10];float score;} s[5]={{1,"lili",98.5},{9,"xiaohua",66}},*p=s;printf("%d",*p++); getch();} A.1 B.98.5 C.9 D.66 9.设有以下定义和语句,则下列选项中不正确的引用形式是( ) struct student{int year;int num;}; struct student stu[3]={{2025,20},{2024,19},{2026,21}}; struct student *p;p=stu; A.(p++)->num B.p++ C.(*p).num D.p=&stu.age 10.执行以下程序段的输出结果是( ) main() {struct comper{int x;int y;int z;}cm[3]={1,3,5,7,9,11,2,4,6}; printf("%d,%d",cm[0].y+cm[1].x*cm[2].z-cm[0].x,cm[1].z+cm[0].x/2); getch();} A.40,10 B.36,11 C.45,11 D.44,11 11.执行以下程序段的输出结果是( ) main() {struct comper{int x;int y;float z;}cm[3]={1,3,5,2,4,6,1,2,3}; printf("%d,%d,%.2f",cm[0].x+cm[1].x+cm[2].x,cm[0].y*cm[1].y*cm[2].y, cm[0].z+cm[1].z/cm[2].z); getch();} A.4,24,7 B.4,20,7 C.4,22,7 D.4,24,7.00 12.执行以下程序段的输出结果是( ) main() {struct s{int x;int y;}s[2]={2,0,2,6}; printf("%d",s[0].x+s[1].y);getch();} A.2 B.4 C.8 D.10 13.设有以下定义,下列选项中能够输出33的选项是( ) struct person {char name[9];int age;}; struct person c[5]={"John",16,"Paul",17,"Mary",18,"Anna",19}; A.printf("%s",c[1].name+c[1].age); B.printf("%d",c[0].age+c[1].age); C.printf("%d",c[1].age+c[2].age); D.printf("%d",c[2].age+c[3].age); 14.下列程序的运行结果是( ) struct point {int x;int y;}; main() {struct point p1={20,25}; printf("point coordinates:(%d,%d) ",p1.x,p1.y);getch();} A.point coordinates:(20,25) B.point coordinates:(20 25) C.point coordinates:20,25 D.20,25 15.执行以下程序段的输出结果是( ) struct abc{int a,b,c;}; main() {struct abc s[2]={{1,1,1},{8,8,8}}; int t; t=s[0].c+s[1].b; printf("%d",t);getch();} A.1 B.2 C.8 D.9 16.执行以下程序段的输出结果是( ) struct abc{int a,b,c;}; main() {struct abc s[2]={1,2,1,2,1,2}; printf("%d,%d,%d",s[0].a>>2,s[1].b^s[1].c,s[1].a&s[0].b);getch();} A.1,3,2 B.0,3,3 C.0,2,3 D.0,3,2 17.下列程序的功能是:结构体中存有三人的姓名和年龄,下列程序可输出三人中年龄居中者的姓名和年龄。请你为第【1】空选择填空。( ) static struct man {char name[20];int age;} person[ ]={"li-yang",18,"wang-hua",19,"zhang-ping",20}; main( ) {int i,j,max,min;max=min=person[0].age; for(i=1;i<3;i++) if(person[i].age>max)【1】; else if(【2】) min=person[i].age; for(i=0;i<3;i++) if(person[i].age!=max【3】) {printf("%s %d ",person[i].name,person[i].age);break;}getch();} A.max=person[i].age B.min=person[i].age C.max=person[i].name D.max=person[++i].age 18.下列程序的功能是:结构体中存有三人的姓名和年龄,下列程序可输出三人中年龄居中者的姓名和年龄。请你为第【2】空选择填空。( ) static struct man {char name[20];int age;} person[ ]={"li-yang",18,"wang-hua",19,"zhang-ping",20}; main( ) {int i,j,max,min;max=min=person[0].age; for(i=1;i<3;i++) if(person[i].age>max)【1】; else if(【2】) min=person[i].age; for(i=0;i<3;i++) if(person[i].age!=max【3】) {printf("%s %d ",person[i].name,person[i].age);break;}getch();} A. person[i].age>min B. person[i].age<max C. person[i].age<min D.person[i].age>max 19.下列程序的功能是:结构体中存有三人的姓名和年龄,下列程序可输出三人中年龄居中者的姓名和年龄。请你为第【3】空选择填空。( ) static struct man {char name[20];int age;} person[ ]={"li-yang",18,"wang-hua",19,"zhang-ping",20}; main( ) {int i,j,max,min;max=min=person[0].age; for(i=1;i<3;i++) if(person[i].age>max)【1】; else if(【2】) min=person[i].age; for(i=0;i<3;i++) if(person[i].age!=max【3】) {printf("%s %d ",person[i].name,person[i].age);break;}getch();} A.&&person[i].age!=min B.&&person[i].age==min C.||person[i].age!=min D.||person[i].age==min 20.下列函数stdaverage的功能是:计算N个学生M门课程的平均分。请为第【1】空选择填空。( ) #define M 5 #define N 30 struct student {int num;char name[10];float score[M];float ave;}; void stdave(struct student s[ ],int n) {int i,j;float sum; for(i=0;i<n;i++) {sum=0.0; for(j=0;j<M;j++)sum=sum+【1】; 【2】=sum/M;}} main( ) {struct student pers[N];……stdave (pers,N);……getch();} A.s[j].score[j] B.s[i].score[j] C.s[j].score[i] D.s[i].score[j+1] 21.下列函数stdaverage的功能是:计算N个学生M门课程的平均分。请为第【2】空选择填空。( ) #define M 5 #define N 30 struct student {int num;char name[10];float score[M];float ave;}; void stdave(struct student s[ ],int n) {int i,j;float sum; for(i=0;i<n;i++) {sum=0.0; for(j=0;j<M;j++)sum=sum+【1】; 【2】=sum/M;}} main( ) {struct student pers[N];……stdave (pers,N);……getch();} A. s[j].ave B. s[i+1].ave C. s[i+j].ave D.s[i].ave 22.下列函数findbook的功能是:在有M个元素的结构体数组s中查找名为nam的书,若找到,函数返回数组下标,否则返回-1。请为第【1】空选择填空。( ) # define M 100 struct data {int id; char name[20]; double price;}book[M]; int findbook(struct data s[],char nam[]) {int i;for(i=0;i<M;i++) if(strcmp(【1】)==0) return i; 【2】;} A.s[i].name,nam B.s[i].name,s[i].name C.s[i].name,nam[0] D.s[i].price,nam 23. 下列函数findbook的功能是:在有M个元素的结构体数组s中查找名为nam的书,若找到,函数返回数组下标,否则返回-1。请为第【2】空选择填空。( ) # define M 100 struct data {int id; char name[20]; double price;}book[M]; int findbook(struct data s[],char nam[]) {int i;for(i=0;i<M;i++) if(strcmp(【1】)==0) return i; 【2】;} A.return 1 B.return 0 C.return ++i D.return -1 二、程序运行结果题(本题共7小题,每题3分,共21分) 24.以下程序的运行结果是( ) #include <stdio.h> #include <conio.h> struct st {int x; int *y;}*p; int dt[4]={10,20,30,40}; struct st aa[4]={55,&dt[1],66,&dt[0],77,&dt[2],88,&dt[3]}; main() {p=aa; printf("%d ",++p->x); printf("%d ",(++p)->x); printf("%d ",++(*p->y)); getch();} 25.以下程序的运行结果是( ) #include <stdio.h> #include <conio.h> struct s{int x,y;}; main() {struct s data[2]={4,3,1,9}; int i; for(i=0;i<2;i++) printf("%d,%d;",data[i].x,data[i].y>>1);getch();} 26.以下程序的运行结果是( ) #include <stdio.h> #include <conio.h> struct s{int x,y;}; main() {struct s data[3]={4,3,2,0,8,1}; int i; for(i=0;i<3;i++) printf("%d%d;",data[i].x,data[i].y>>1); getch();} 27.以下程序的运行结果是( ) #include <stdio.h> #include <conio.h> struct person{char name[10];int age;}; main() {struct person room[2]={{"wang",19},{"li",20}}; printf("%s:%d ",(room+1)->name,room->age); getch();} 28.以下程序的运行结果是( ) #include <stdio.h> #include <conio.h> struct stu{int x;int *y;}*p; int dt[4]={10,20,30,40}; struct stu a[4]={50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3]}; main( ) { p=a; printf("%d,",++p->x); printf("%d,",(++p)->x); printf("%d ",++(*p->y)); getch();} 29.以下程序的运行结果是( ) #include <stdio.h> #include <conio.h> struct tt {int x; struct tt *y;}*p; struct tt a[4]={20,a+1,26,a+2,30,a+3,17,a}; main() {int i; p=a; for(i=1;i<=2;i++) {printf("%d",p->x); p=p->y;} getch();} 30.以下程序的运行结果是( ) #include <stdio.h> #include <conio.h> struct country {int num;char name[10];}; main() {struct country x[3]={{1,"asdfg"},{2,"qwert"},{3,"zcxvbn"}}; struct country *p; p=&x[2]; printf("%d,%s",p->num+1,p->name); getch();} 三、阅读程序,修改程序中的错误,不得增行或删行,也不得更改程序结构。请指出错误代码所在的行号,并给出该行修改后的程序代码。每处3分,共9分) 31.下列程序的功能是:使用“比较计数”法对结构体数组a按照字段num进行降序排列。“比较计数”法的基本思想是“通过另一字段con记录a中小于某一特定关键字的元素的个数,待算法结束,a[i].con就是a[i].num在a中的排序位置。程序中有三处错误,请改正。 L1 #include <stdio.h> L2 #include<conio.h> L3 #define N 16 L4 struct c L5 { int num;int con;}a[16]; L6 main( ) L7 { int i,j; L8 for(i=0;i<N;i++) L9 { scanf("%d",a[i].num); L10 a[i].con=0;} L11 for(i=N-1;i>=-1;i--) L12 for(j=i-1;j>=-1;j++) L13 if(a[i].num>a[j].num) L14 a[j].con++; L15 else a[i].con++; L16 for(i=0;i<N;i++) L17 printf("%d,%d ",a[i].num,a[i].con); L18 getch();} 四、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共24分) 32.下列程序的功能是:函数print输出一个学生的成绩数组,该数组中有5个学生的数据记录,每个记录包括num,name,score[3],在主函数内输入这些记录,使用print函数输出这些记录。请填空。 #include <stdio.h> #include<conio.h> #define N 5 struct student {char num[6]; char name[8]; int score[4];}stu[N]; main() {【1】; int i,j; for(i=0;i<N;i++) {printf("input score of student %d: ",i+1); printf("NO:"); scanf("%s",stu[i].num); printf("name:"); scanf("%s",【2】); for(j=0;j<3;j++) {printf("score %d:",j+1); scanf("%d",【3】);} printf(" ");} print(stu);getch();} void print(struct student stu[6]) {int i,j; printf(" NO. name score1 score2 score3 "); for(i=0;i<N;i++) {printf("%5s%10s",【4】); for(j=0;j<3;j++) printf("%9d",stu[i].score[j]); printf(" ");}} 33.下列程序的功能是:从键盘输入10个学生的成绩(包括学号、姓名、3门课程成绩),输出3门课程总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课程成绩、平均分数)。请填空。 #include <stdio.h> #include<conio.h> #define N 10 struct student {char num[6]; char name[8]; float score[3]; float avr;}stu[N]; main() {int i,j,maxi; float sum,max,average; for(i=0;i<N;i++) {printf("input score of student %d: ",i+1); printf("NO:"); scanf("%s",stu[i].num); printf("name:"); scanf("%s",stu[i].name); for(j=0;j<3;j++) {printf("score %d:",j+1); scanf("%f",&stu[i].score[j]);} printf(" ");} average=0; max=0; maxi=0; for(i=0;i<N;i++) {sum=0; for(j=0;j<3;j++) sum+=【1】; stu[i].avr=【2】; average+=stu[i].avr; if(【3】) {max=sum; maxi=i;}} average=【4】; printf(" NO. name score1 score2 score3 "); for(i=0;i<N;i++) {printf("%5s%10s",stu[i].num,stu[i].name); for(j=0;j<3;j++) printf("%9.2f",stu[i].score[j]); printf("%8.2f ",stu[i].avr);} printf("average=%5.2f ",average); printf("The highest score is:student %s,%s ",stu[maxi].num,stu[maxi].name); printf("His scores are :%6.2f,%6.2f,%6.2f,average:%5.2f ", stu[maxi].score[0],stu[maxi].score[1],stu[maxi].score[2],stu[maxi].avr); getch();} 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $$

资源预览图

任务37:结构体数组  《编程语言-C语言》45分钟专题训练-第1页
1
任务37:结构体数组  《编程语言-C语言》45分钟专题训练-第2页
2
任务37:结构体数组  《编程语言-C语言》45分钟专题训练-第3页
3

由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。