C语言程序设计(第3版)何钦铭 颜 晖 第9章 结构
更新时间:2024-07-02 00:48:01 阅读量: 综合文库 文档下载
第9章 结构
【练习9-1】定义一个能够表示复数的结构类型,一个复数包括实数与虚数两个部分。 解答:
struct complex{ float real;
float imaginary; };
【练习9-2】人的出生日期由年、月、日组成,请在例 9-1 中的通讯录结构中增加一个成员:出生日期,用嵌套定义的方式重新定义该结构类型。 解答:
struct date{ int year; int month; int day; };
struct student{ int num;
char name[10];
struct date birthday; int computer,english,math; double average; };
【练习9-3】例 9-1 中,如果要计算的是三门课程的课程平均成绩,应该如何改写程序? 解答:
#include
char name[10];
int computer,english,math; double average; };
int main(void) {
int i, n;
double math_sum,english_sum,computer_sum; struct student s1;
printf(\ scanf(\
printf(\ math_sum=english_sum=computer_sum=0; for(i=1;i<=n;i++){
printf(\
scanf(\ter);
math_sum+=s1.math;
english_sum+=s1.english; computer_sum+=s1.computer; }
printf(\math_sum/n,english_sum/n,computer_sum/n);
return 0; }
【练习9-4】定义一个包含 5 名学生信息的结构数组,并对该结构数组的所有元素进行初始化。 解答:
struct student{ int num;
char name[10];
int computer, english, math; };
struct student s[5]={{30101, \张一\李二\5,90},{40231, \王三\赵四\刘五\
【练习9-5】参考例 9-2,输入并保存 10 个学生的成绩信息,分别输出平均成绩最高和最低的学生信息。 解答:
#include
char name[10];
int computer,english,math; double average; };
int main(void) {
int i,n,max,min;
struct student students[50];
printf(\ scanf(\
for(i=0;i printf(\ printf(\ scanf(\ printf(\ scanf(\ printf(\ scanf(\ printf(\ scanf(\ printf(\ scanf(\ students[i].average=(students[i].math+students[i].english+stu dents[i].computer)/3.0; } max=min=0; for(i=1;i if(students[max].average printf(\ printf(\%.2lf\\n\ents[max].english,students[max].computer,students[max].average); printf(\ printf(\%.2lf\\n\ents[min].english, students[min].computer, students[min].average); return 0; } 【练习9-6】定义一个 struct student 类型的结构指针,用其实现一个学生信息的输入和输出。 解答: struct student{ /* 学生信息结构定义 */ int num; /* 学号 */ char name[10]; /* 姓名 */ int computer, english, math ; /* 三门课程成绩 */ double average; /* 个人平均成绩 */ }s, *p; p = &s; scanf(\&p->num, p->name, &p->math, &p->english, &p->computer); 【练习9-7】改写例 9-3 中的函数 update_score( ),将第一个形参改为结构 数组形式。 解答: int update_score(struct student s[],int n,int num,int course,int score) { int i,pos; for(i=0;i switch(course){ case 1:s[i].math=score; break; case 2:s[i].english=score; break; case 3:s[i].computer=score; break; } pos = i; } else pos = -1; return pos; } 习题9 一、选择题 1.下面定义结构变量的语句中错误的是 D 。 A.struct student{ int num; char name[20]; } s; B.struct { int num; char name[20]; } s; C.struct student{ int num; char name[20]; }; struct student s; D.struct student{ int num; char name[20]; }; student s; 2.如果有定义语句: struct { int x, y; } s[2] = { { 1, 3 }, { 2, 7 } }; 则语句:printf(“%d\\n”, s[0].y/s[1].x ); 输出结果为 B A.0 B.1 C.2 D.3 3.根据下面的定义,能打印出字母 M 的语句是 C 。 struct person{ char name[10]; int age; } c[10] = { “John”, 17, “Paul”, 19, “Mary”, 18, “Adam”, 16 }; 。 A.printf(“%c”, c[3].name); B.printf(“%c”, c[3].name[1]); C.printf(“%c”, c[2].name[0]); D.printf(“%c”, c[2].name[1]); 4.设有如下定义,则对 data 中的 a 成员的正确引用是 B 。 struct sk{ int a; float b; } data, *p=&data; A.(*p).data.a B.(*p).a C.p->data.a D.p.data.a 5.对于以下结构定义,(*p)->str++中的++加在 D 。 struct { int len; char *str; } *p; A.指针 str 上 B.指针 p 上 C.str 指向的内容上 D.语法错误 二、填空题 1.“.”称为 成员_(分量)_运算符,“->”称为_指向_运算符。 2.完成下列程序,该程序计算 10 名学生的平均成绩。 #include char name[20]; int score; }; struct student stud[10]; int main(void) { int i , sum = 0 ; for(i = 0; i < 10; i++){ scanf(\\&stud[i].num,_stud[i].name_,&stud[i].score); sum += stud[i].score; } printf(\ return 0; } 3.下列程序读入时间数值,将其加 1 秒后输出,时间格式为:hh: mm: ss,即小时:分钟:秒,当小时等于 24 小时,置为 0。 #include int hour, minute, second; 和调用函数 set_grade()根据学生成绩设置其等级,并统计不及格人数,等级设置:85-100 为 A,70-84 为 B,60-69 为 C,0-59 为 D。试编写相应程序。 解答: #include char name[20]; int score; char grade; }; int set_grade(struct students *p); int main(void) { struct students student[N]; int i,count; printf(\ for(i=0;i printf(\ scanf(\ ore); } count=set_grade(student); printf(\ printf(\ for(i=0;i printf(\ .grade); return 0; } int set_grade(struct students *p) { int i,n=0; for(i=0;i else if(p->score>=70&&p->score<85) p->grade='B'; else if(p->score>=60&&p->score<70) p->grade='C'; else{ p->grade='D'; n++; } } return n; }
正在阅读:
C语言程序设计(第3版)何钦铭 颜 晖 第9章 结构07-02
对甲基苯乙酮的制备10-11
中职职业生涯规划试题09-02
第六章 从杂交育种到基因工程 练习03-01
高层建筑消防给水的超压起因与防治措施10-21
13年中考试卷分析(2)05-02
《中国石拱桥》教学设计批注版05-11
年产1万吨白酒工厂设计说明书07-23
金工实习总结报告【优秀3篇】03-27
低碳生活从我做起05-27
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 程序设计
- 语言
- 结构
- 何钦铭
- 经济学说史100题
- 九年级数学上学期第一次月考10月试题新人教版五四制
- 西安交大C++程序设计第四章作业2
- 中国丝绸时装行业市场调查研究报告(目录) - 图文
- 高速公路填土路基试验段施工方案2017.8.24
- 201601建筑经济复习题库及部分答案
- 2010年度会计继续教育模拟试卷
- 电子信息制造业统计调查制度 - 图文
- DIY手工坊作业答案
- 中国校企合作的现状及其困境分析
- 二年级语文看图写话植树篇
- 对基层干部队伍管理的思考
- 民政局城乡社区建设工作情况调研报告
- 企业战略与市场营销战略规划
- 三年级混合运算练习题
- 中国移民报告-2014
- 2013地理学业标准内容
- 2017全国各地中考物理(3)—专题11内能及其利用
- 江西省赣州市信丰中学2017届高三第一次月考文综地理试题(解析版
- 无机材料科学基础复习资料 - 图文