任务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();}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$$