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

第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(\ 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 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(\ 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].averagestudents[i].average) min=i; }

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( ),将第一个形参改为结构

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4