程序设计基础人民邮电出版社答案第9章结构体.docx
- 文档编号:23873618
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:14
- 大小:18.20KB
程序设计基础人民邮电出版社答案第9章结构体.docx
《程序设计基础人民邮电出版社答案第9章结构体.docx》由会员分享,可在线阅读,更多相关《程序设计基础人民邮电出版社答案第9章结构体.docx(14页珍藏版)》请在冰豆网上搜索。
程序设计基础人民邮电出版社答案第9章结构体
一、选择题
1.根据下面的定义,能打印出字母M的语句是(D)。
structperson{charname[9];
intage;};
structpersonclass[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]);
2.若有以下结构体定义:
structexample
{intx1;
inty1;
};
则B是正确的使用方式。
A.structexample.x1=100;B.structexamplexy;xy.x1=100;
C.structxy;xy.x1=100;D.structexamplexy={100};
3.下面结构体数组的定义,错误的是(D)。
A.structstudent
{intnum;
charname[10];
floatscore;
};
structstudentstu[30];
B.struct
{intnum;
charname[10];
floatscore;
}stu[30];
C.structstudent
{intnum;
charname[10];
floatscore;
}stu[30];
D.structstu[30]
{intnum;
charname[10];
floatscore;
};
二、写出以下程序的运行结果
(1)
#include
voidmain()
{structcmplx{intx;
inty;
}cnum[2]={1,3,2,7};
printf("%d\n",cnum[0].y/cnum[0].x*cnum[1].x);
}
答案:
6
(2)
#include
voidmain()
{structdate
{intyear,month,dat;
}today;
printf("%d\n",sizeof(structdate));
}
答案:
6
(3)
#include
voidmain()
{structMING
{struct{intx;
inty;
}in;
inta;
intb;
}e;
e.a=1;e.b=2;
e.in.x=e.a*e.b;
e.in.y=e.a+e.b;
printf("%d,%d",e.in.x,e.in.y);
}
答案:
2,3
(4)
#include
voidmain()
{
structabc
{inta,b,c;};
structabcs[2]={{1,2,3},{4,5,6}};
intt;
t=s[0].a+s[1].b;
printf("%d\n",t);
}
答案:
6
(5)
#include
#include
structstudent
{charname[9];
charsex;
floatscore[2];
};
structstudentf(structstudenta)
{
structstudentb={"Zhao",'m',85.0,90.0};inti;
strcpy(a.name,b.name);
a.sex=b.sex;
for(i=0;i<2;i++)a.score[i]=b.score[i];
returna;
}
voidmain()
{
structstudentc={"Qian",'f',95.0,92.0},d;
d=f(c);
printf("%s,%c,%2.0f,%2.0f\n",d.name,d.sex,d.score[0],d.score[1]);
}
答案:
Zhao,m,85,90
3、改错题
(1)定义一个二维平面上的点结构体,从键盘输入一个点的坐标并输出到屏幕上。
请找出以下程序的错误并修改。
#include
structpoint//声明点的结构体point
{
intx;//x坐标
inty;//y坐标
}
(1)
voidmain()//主函数
{
structpointpt;//定义结构体变量pt
printf("Pleaseinputthepoint:
");
scanf("%d%d",pt.x,pt.y);
(2)
printf("Thepointyouinputis:
x=%d,y=%d",&pt.x,&pt.y);(3)
}
答案:
(1)最后加分号“;”。
(2)改为scanf("%d%d",&pt.x,&pt.y);
(3)改为printf("Thepointyouinputis:
x=%d,y=%d",pt.x,pt.y);
(2)定义一结构体People,包括姓名,性别,职位,年龄,要求从键盘输入3名人员的相应信息并显示,请找出下面程序的错误并修改。
#include
structPeople//结构体People
{
charname[20];//姓名
charsex;//性别
charposition[20];//职位
intage;//年龄
};
voidmain()
{
structPeoplepeo; //定义结构体数组,此处请修改!
(1)
inti;
for(i=0;i<3;i++)//输入
{
printf("Pleaseinputthe%dPeople'sname\n",i+1);
scanf("%c",peo[i].name);//输入姓名,此处请修改!
(2)
getchar();
printf("Pleaseinputtheperson'ssex\n");
scanf("%c",peo[i].sex);//输入性别,此处请修改!
(3)
getchar();
printf("PleaseinputthePeople'sposition\n");//输入职位
scanf("%s",peo[i].position);(4)
getchar();
printf("Pleaseinputtheperson'sage\n");//输入年龄
scanf("%d",&peo[i].age);
}
for(i=0;i<3;i++)//输出
{
printf("The%dPeople'snameis:
%s,sex:
%c,position:
%s,age:
%d\n",i+1,peo[i].name,peo[i].sex,peo[i].position,&peo[i].age);//此处请修改!
(5)
}
}
答案:
(1)改为structPeoplepeo[];
(2)改为scanf("%c",&peo[i].name);
(3)改为scanf("%c"&,peo[i].sex);
(4)改为scanf("%s",&peo[i].position);
(5)改为:
printf("The%dPeople'snameis:
%s,sex:
%c,position:
%s,age:
%d\n",i+1,peo[i].name,peo[i].sex,peo[i].position,peo[i].age);
四、编程题
(1)设计一个通信录的结构体类型,并画出该结构体变量在内存的存储形式。
structphotonote
{
charname[20];
charnumber[20];
};
(2)用结构体变量表示矩形,编写矩形面积函数,矩形周长函数,输入矩形长宽函数,输出矩形长宽函数,输入矩形的长宽并进行面积和周长的计算。
#include
structjuxing
{
floatchang;
floatkuan;
};
structjuxingshuru()
{
structjuxingr;
printf("shurujuxingchangkuan:
\n");
scanf("%f%f",&r.chang,&r.kuan);
returnr;
}
voidshuchu(structjuxingr)
{
printf("changshi:
%f\n",r.chang);
printf("kuanshi:
%f\n",r.kuan);
}
floatmianji(structjuxingr)
{
returnr.chang*r.kuan;
}
floatzhouchang(structjuxingr)
{
return2*r.chang+2*r.kuan;
}
voidmain()
{
structjuxinga;
a=shuru();
shuchu(a);
printf("mianjiwei:
%f\n",mianji(a));
printf("zhouchangwei:
%f\n",zhouchang(a));
}
(3)设有学生情况登记表如表9.3所示,用选择法对该表按成绩从小到大排序。
表9.3 学生情况登记表
学号(num)
姓名(name[8])
性别(sex)
年龄(age)
成绩(score)
101
Zhang
M
19
98.3
102
Wang
F
18
87.2
103
Li
M
20
73.6
104
Zhao
F
20
34.6
105
Miao
M
18
99.4
106
Guo
M
17
68.4
107
Wu
F
19
56.9
108
Xu
F
18
45.0
109
Lin
M
19
76.5
110
Ma
F
19
85.3
#include
structStudent{
intnum;
charname[8];
charsex;
intage;
floatscore;
};
voidmain(){
inti,j;
intmin;
structStudenttemp;
structStudentstu[10]={{101,"zhang",'M',19,98.3},{102,"wang",'F',18,87.2},{103,"li",'M',20,73.6},{104,"zhao",'F',20,34.6},{105,"miao",'M',18,99.4},{106,"guo",'M',17,68.4},{107,"wu",'F',19,56.9},{108,"xu",'F',18,45.0},{109,"lin",'M',19,76.5},{110,"ma",'F',19,85.3}};
for(i=0;i<9;i++){
min=i;
for(j=i;j<9;j++){
if(stu[i].score min=j+1; } } temp=stu[min]; stu[min]=stu[i]; stu[i]=temp; } for(i=0;i<=9;i++) { printf("num=%d,name=%s,sex=%c,age=%d,score=%f\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].score); } getchar(); } (4)某班有20名学生,每名学生的数据包括学号、姓名、3门课的成绩,从键盘输入20名学生的数据,要求打印出每门课的平均成绩,以及每名学生的平均成绩并输出最高分的学生的数据(学号、姓名、3门课、平均成绩)。 #include structstudent {charnum[4]; charname[8]; floatscore[3]; floatave; }; voidmain() { structstudents1[20]; inti,j; floatavg1=0,avg2=0,avg3=0,sum=0; for(i=0;i<20;i++) scanf("%s%s%f%f%f",s1[i].num,s1[i].name,&s1[i].score[0],&s1[i].score[1],&s1[i].score[2]); for(i=0;i<20;i++) { avg1+=s1[i].score[0]; avg2+=s1[i].score[1]; avg3+=s1[i].score[2]; s1[i].ave=(s1[i].score[0]+s1[i].score[1]+s1[i].score[2])/3; } avg1/=20; avg2/=20; avg3/=20; printf("2menkedepingjunchengji: %f,%f,%f\n",avg1,avg2,avg3); sum=s1[0].ave; j=0; for(i=1;i<20;i++) if(s1[j].ave j=i; for(i=0;i<20;i++) printf("pingjunchengji: %f\n",s1[i].ave); printf("ZuiGaoFen--XueHao: %s,XingMing: %s,ChengJi: %f%f%f,PingJun: %f\n",s1[j].num,s1[j].name,s1[j].score[0],s1[j].score[1],s1[j].score[2],s1[j].ave); } (5)统计候选人总得票数。 假设有5名候选人,每次输入一个得票候选人的名字,要求最后按从大到小输出每个人的得票数排名。 #include #include structnote { charname[20]; intcount; }; voidmain() { structnotenotes[5]={"zhao",0,"qian",0,"li",0,"sun",0,"wang",0}; chartou[20]; inti,j; for(i=0;i<20;i++) { scanf("%s",tou); for(j=0;j<20;j++) if(! strcmp(tou,notes[j].name)) notes[j].count++; } for(i=0;i<4;i++){ for(j=i;j<4;j++){ if(notes[i].count structnotetemp=notes[i]; notes[i]=notes[j+1]; notes[j+1]=temp; } } }for(i=0;i<5;i++) printf("XingMing: %s,PiaoShu: %d\n",notes[i].name,notes[i].count); } (6)定义一个结构体变量(包括年、月、日)。 计算该日在本年中是第几天,注意闰年问题。 #include structdate { intyear; intmonth; intday; }; voidmain() { structdatedate1; inti,sum=0; scanf("%d,%d,%d",&date1.year,&date1.month,&date1.day); for(i=1;i if(i==4||i==6||i==9||i==11) sum+=30; else sum+=31; if(date1.month>2)sum-=3; if((date1.year%400==0)||(date1.year%4==0&&date1.year%100! =0))sum++; sum+=date1.day; printf("shidi%dtian\n",sum); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计基础人民邮电出版社答案第9章 结构体 程序设计 基础 人民邮电 出版社 答案 结构
![提示](https://static.bdocx.com/images/bang_tan.gif)