您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 程序设计基础(人民邮电)答案第9章结构体
214一、选择题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;};215二、写出以下程序的运行结果(1)#includestdio.hvoidmain(){structcmplx{intx;inty;}cnum[2]={1,3,2,7};printf(%d\n,cnum[0].y/cnum[0].x*cnum[1].x);}答案:6(2)#includestdio.hvoidmain(){structdate{intyear,month,dat;}today;printf(%d\n,sizeof(structdate));}答案:6(3)#includestdio.hvoidmain(){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,3216(4)#includestdio.hvoidmain(){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)#includestdio.h#includestring.hstructstudent{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;i2;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三、改错题217(1)定义一个二维平面上的点结构体,从键盘输入一个点的坐标并输出到屏幕上。请找出以下程序的错误并修改。#includestdio.hstructpoint//声明点的结构体point{intx;//x坐标inty;//y坐标}(1)voidmain()//主函数{structpointpt;//定义结构体变量ptprintf(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名人员的相应信息并显示,请找出下面程序的错误并修改。#includestdio.hstructPeople//结构体People{charname[20];//姓名charsex;//性别charposition[20];//职位intage;//年龄};voidmain(){structPeoplepeo;//定义结构体数组,此处请修改!(1)inti;for(i=0;i3;i++)//输入{printf(Pleaseinputthe%dPeople'sname\n,i+1);scanf(%c,peo[i].name);//输入姓名,此处请修改!(2)218getchar();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;i3;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);219四、编程题(1)设计一个通信录的结构体类型,并画出该结构体变量在内存的存储形式。structphotonote{charname[20];charnumber[20];};(2)用结构体变量表示矩形,编写矩形面积函数,矩形周长函数,输入矩形长宽函数,输出矩形长宽函数,输入矩形的长宽并进行面积和周长的计算。#includestdio.hstructjuxing{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(){220structjuxinga;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)101ZhangM1998.3102WangF1887.2103LiM2073.6104ZhaoF2034.6105MiaoM1899.4106GuoM1768.4107WuF1956.9108XuF1845.0109LinM1976.5110MaF1985.3#includestdio.hstructStudent{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}};221for(i=0;i9;i++){min=i;for(j=i;j9;j++){if(stu[i].scorestu[j+1].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门课、平均成绩)。#includestdio.hstructstudent{charnum[4];charname[8];floatscore[3];floatave;};voidmain(){structstudents1[20];inti,j;floatavg1=0,avg2=0,avg3=0,sum=0;for(i=0;i20;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;i20;i++){222avg1+=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;i20;i++)if(s1[j].aves1[i].ave)j=i;for(i=0;i20;i++)printf(pin
本文标题:程序设计基础(人民邮电)答案第9章结构体
链接地址:https://www.777doc.com/doc-2238082 .html