第十一次作业

1.建立一个通信录,通信录的结构体记录包括:姓名、生日、电话号码;其中生日又包括三项:年、月、日。编写程序,定义一个嵌套的结构类型,输入n(n<10)个联系人的信息,再按他们的年龄大小的顺序依次输出其信息。

 

#include<stdio.h>
struct friends{
 char name[10];
 int birth;
 char phone[20]; 
}p[10],t;
int main(){
 int n,i,j;
 scanf("%d",&n);
 for(i=0;i<n;i++)
 scanf("%s %d %s",p[i].name,&p[i].birth,p[i].phone);
 for(i=0;i<n-1;i++)
 for(j=0;j<n-i-1;j++) 
 if(p[j].birth>p[j+1].birth){
 t=p[j];p[j]=p[j+1];p[j+1]=t;
 }
 for(i=0;i<n;i++)
 printf("%s %d %s\n",p[i].name,p[i].birth,p[i].phone);
 return 0;
}

2.输入10个学生的学号、姓名和成绩,输出学生的成绩等级和不及格人数。每个学生的记录包括学号、姓名成绩和等级,要求定义和调用函数set_grade(),根据学生成绩设置其等级,并统计不及格人数
 
#include <stdio.h>
#define N 10
struct Student {
 char num[15];
 char name[15];
 int score;
 char grade;
};
void set_grade (struct Student *p, int n, int *f);
int main(void)
{
 int i, n;
 int fail = 0;
 struct Student s[N];
 
 printf("请输入学生人数:");
 scanf("%d",&n);
 for(i=0;i<n;i++)
 {
  printf("学生%d信息\n",i+1);
  printf("学号:");
  scanf("%s",s[i].num);
  printf("姓名:");
  scanf("%s",s[i].name);
  printf("成绩:");
  scanf("%d",&s[i].score);
 }
 
 set_grade (s,n,&fail);
 printf("学生成绩信息\n");
 printf("姓名\t等级\n");
 for (i=0;i<n;i++)
 {
  printf("%s\t",s[i].name);
  printf("%c\n",s[i].grade);
 }
 printf("不及格人数:%d\n",fail);
 
 return 0;
}
void set_grade (struct Student *p, int n, int *f)
{
 int i;
 *f = 0;
 for (i=0;i<n;i++,p++)
 {
  if (p->score>=85&&p->score<=100)
  {
   p->grade = 'A';
  }
  else if (p->score>=70&&p->score<=84)
  {
   p->grade = 'B';  
  }
  else if (p->score>=60&&p->score<=69)
  {
   p->grade = 'C';  
  }  
  else
  {
   p->grade = 'D';
   (*f)++;    
  }
 }
}
posted @ 2019-06-25 18:34  马福良  阅读(160)  评论(0编辑  收藏  举报