第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-1index复数 中,如果要计算的是三门课程的课程平均成绩,应该如何改写程序
解答:
#include<stdio.h>
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.name,&s1.math,&lish,&s1puter);
        math_sum+=s1.math;
        english_sum+=s1.english;
        computer_sum+=s1puter;
    }
    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,85,90},{40231, "王三",71,91,74},{40754, "赵四",65,76,87},{50426, "刘五",81,92,73}};
【练习9-5】参考例 9-2,输入并保存 10 个学生的成绩信息,分别输出平均成绩最高和最低的学生信息。
解答:
#include<stdio.h>
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<n;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]puter);
students[i].average=(students[i].math+students[i].english+students[i]puter)/3.0;
      }
      max=min=0;
      for(i=1;i<n;i++){
            if(students[max].average<students[i].average) max=i;
            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,students[max].english,students[max]puter,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,students[min].english, students[min]puter, 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( ),将第一个形参改为结构数组形式。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。