C语言程序设计(第3版)何钦铭 颜 晖 第9章 结构

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第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

struct student{

int num;

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("Input n:");

scanf("%d", &n);

printf("Input the student's number, name and course scores:\n"); math_sum=english_sum=computer_sum=0;

for(i=1;i<=n;i++){

printf("No.%d:",i);

scanf("%d%s%d%d%d",&s1.num,,&s1.math,&s1.english,&pu ter);

math_sum+=s1.math;

english_sum+=s1.english;

computer_sum+=puter;

}

printf("math_ave:%.2lf\nenglish_ave:%.2lf\ncomputer_ave:%.2lf\n", 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, "张一",69,75,84 },{30132, "李二",80,8 5,90},{40231, "王三",71,91,74},{40754, "赵四",65,76,87},{50426, "刘五",81,92,73}};

【练习9-5】参考例 9-2,输入并保存 10 个学生的成绩信息,分别输出平均成绩最高和最低的学生信息。

解答:

#include

struct student{

int num;

char name[10];

int computer,english,math;

double average;

};

int main(void)

{

int i,n,max,min;

struct student students[50];

printf("Input n:");

scanf("%d",&n);

for(i=0;i

printf("Input the info of No.%d:\n",i+1);

printf("number:");

scanf("%d",&students[i].num);

printf("name:");

scanf("%s",&students[i].name);

printf("math score:");

scanf("%d",&students[i].math);

printf("english score:");

scanf("%d",&students[i].english);

printf("computer score:");

scanf("%d",&students[i].computer);

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

if(students[min].average>students[i].average) min=i;

}

printf("max_average_infortmation:\n");

printf("number:%d,name:%s,math:%d,english:%d,computer:%d,average: %.2lf\n",students[max].num,students[max].name,students[max].math,stud ents[max].english,students[max].computer,students[max].average);

printf("min_average_information:\n");

printf("number:%d,name:%s,math:%d,english:%d,computer:%d,average: %.2lf\n",students[min].num,students[min].name,students[min].math,stud 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("%d%s%d%d%d", &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;

相关文档
最新文档