C语言程序设计新编教程(第2版)答案第8章 结构体和共用体习题答案_第1页
C语言程序设计新编教程(第2版)答案第8章 结构体和共用体习题答案_第2页
C语言程序设计新编教程(第2版)答案第8章 结构体和共用体习题答案_第3页
C语言程序设计新编教程(第2版)答案第8章 结构体和共用体习题答案_第4页
C语言程序设计新编教程(第2版)答案第8章 结构体和共用体习题答案_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

8.4习题8参考答案1.选择题1、C2、D,A,B3、C,D4、B,D5、B6、D2.简答题(1)结构体类型与以前的标准数据类型有什么区别?【解答】(1)结构体类型是一种构造出来的数据类型。它具体代表多少成员还需要由用户定义。基本类型不需要用户定义而可以直接使用,而结构体类型必须先定义类型再使用。(2)结构体类型是复合数据类型,可简单,也可复杂,而简单数据类型则比较单纯。(3)用简单类型定义的变量一般都可直接参与多种运算,而结构体变量则往往只能对其成员进行多种运算,对整个结构体变量适用的运算很少。(2)结构体类型与共用体类型有什么异同?【解答】(1)结构体和共用体都是构造数据类型,使用它们都可存储多种类型的数据,可以方便地组织不同类型的数据。(2)结构体占用的空间是所有成员所占用空间的和,而共用体则是最大成员所占据的空间。结构体重在组织多种类型的数据,从而构造一个复杂的数据类型,而共用体重在强调内存的共享与重复使用。3.运行程序写结果1、【解答】a,1002、【解答】2187.0zhang2187.0zhangzhang3、【解答】wangwei95.5000004、【解答】2,28.5实训8(1)定义一结构体,成员项包括一个字符型、一个整型。编程实现结构体变量成员项的输入、输出,并通过说明指针引用该变量。#include<stdio.h>voidmain(){ structa { charb; intc; }d,*p; p=&d; printf("输入:\n"); scanf("%c",&(*p).b); scanf("%d",&p->c); printf("输出:\n"); printf("%c\n",(*p).b); printf("%d\n",p->c);}(2)建立一结构体,其中包括学生的姓名、性别、年龄和一门课程的成绩。建立的结构体数组通过输入存放全班(最多45人)学生信息,输出考分最高的同学的姓名、性别、年龄和课程的成绩。#include<stdio.h>voidmain(){inti,b,n;floata;printf("请输入班级的人数:");scanf("%d",&n);getchar();structperson{ charname[20]; charsex[10]; intyear; floatscore; }stu[45]; for(i=0;i<n;i++) { printf("请输入第%d个学生的名字、性别、年龄及成绩\n",i+1);gets(stu[i].name); gets(stu[i].sex); scanf("%d",&stu[i].year); scanf("%f",&stu[i].score); getchar(); } for(b=0,a=stu[0].score,i=0;i<n;i++) if(a<stu[i].score) { a=stu[i].score; b=i; }printf("成绩最优秀的是第%d个学生\n",b+1);printf("名字:%s性别:%s年龄:%d成绩:%f\n",stu[b].name,stu[b].sex,stu[b].year,stu[b].score);}(3)已知一个班有45人,本学期有两门课程的成绩,求:●所有课程中的最高成绩,以及对应的姓名、学号和课程编号。●课程1、2的平均成绩,并求出两门课程都低于平均成绩的学生姓名和学号。●对编号1的课程从高分到低分排序(注意其他成员项应保持对应关系)。说明:要求定义结构体,第一成员项为学生姓名,第二成员项为学号,另外两个成员项为两门课成绩,并要求分别用函数完成。注意:由于人数太多,程序设计时可把总人数改为4人。#include<stdio.h>#defineN4structperson{ charname[20]; longintnumber; floatscore1; floatscore2;};voidshuru(structpersonstu[N]){ inti; for(i=0;i<N;i++) { printf("请输入第%d个学生的名字、学号、成绩1及成绩2\n",i+1); gets(stu[i].name); scanf("%ld",&stu[i].number); scanf("%f",&stu[i].score1); scanf("%f",&stu[i].score2); getchar(); }}voidzuigao(structpersonstu[N]){ intb,i; floata; for(b=0,a=stu[0].score1,i=0;i<N;i++) if(a<stu[i].score1) { a=stu[i].score1; b=i; } printf("第一门课程成绩最优秀的是第%d个学生\n",b+1); printf("名字:%s学号:%ld成绩:%f\n",stu[b].name,stu[b].number,stu[b].score1); printf("\n"); for(b=0,a=stu[0].score2,i=0;i<N;i++) if(a<stu[i].score2) { a=stu[i].score2; b=i; } printf("第二门课程成绩最优秀的是第%d个学生\n",b+1); printf("名字:%s学号:%ld成绩:%f\n",stu[b].name,stu[b].number,stu[b].score2); printf("\n");}voidpingjun(structpersonstu[N]){ inti; floats1,s2,p1,p2; for(s1=0,s2=0,i=0;i<N;i++) { s1+=stu[i].score1; s2+=stu[i].score2; } p1=s1/N; p2=s2/N; for(i=0;i<N;i++) {if(stu[i].score1<p1)printf("名字%s学号:%ld此学生成绩小于第一门课的平均分\n",stu[i].name,stu[i].number);if(stu[i].score2<p2)printf("名字%s学号:%ld此学生成绩小于第二门课的平均分\n",stu[i].name,stu[i].number); } printf("\n");}voidpaixu(structpersonstu[N]){ inti,j; structpersont; for(i=0;i<N-1;i++) for(j=0;j<N-1-i;j++) if(stu[j].score1<stu[j+1].score1) {t=stu[j];stu[j]=stu[j+1];stu[j+1]=t;} printf("按第一门课程从高到低排序为:\n"); for(i=0;i<N;i++)printf("名字:%s学号:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论