第四周《C语言及程序设计》实践项目14 开发一个电子词典

来源:互联网 发布:钉钉软件怎么样 编辑:程序博客网 时间:2024/06/05 09:10

【项目1-学生成绩统计】 

/*   * Copyright (c) 2016, CSDN学院   * All rights reserved.   * 文件名称:【项目1-学生成绩统计】 .cpp   * 作    者:张易安   * 完成日期:2016年 9 月 18 日   * 版 本 号:v1.0   *   * 问题描述:每位同学的信息学号、姓名、C、高数、英语成绩。定义一个学生成绩的结构体数组,其中的数据成员包括学号(char num[13])、姓名(name)、三门课的成绩(grade)、总分(score)、均分(average))。 (1)从键盘上输入N名学生的信息(N定义为常变量); (2)求出每名同学的总分和均分,并存储在结构体数组中(可以读入过程中“顺便”计算); (3)输出每位同学的信息学号、姓名、总分和均分。  */#include<stdio.h>struct Student {char num[13];char name[10];int c;int math;int english;int grade;double average;};const int N=3;int main(){int i;float sum=0;struct Student stu[N];printf("请输入学号,姓名,C,高数,英语成绩:\n");for(i=0;i<N;i++){scanf("%s %s %d %d %d",&stu[i].num,&stu[i].name,&stu[i].c,&stu[i].math,&stu[i].english);stu[i].grade = stu[i].c+stu[i].english+stu[i].math;stu[i].average = stu[i].grade / 3.0;}printf("学号\t姓名\t总分\t均分\n");for(i=0;i<N;i++){printf("%s\t %s\t %d\t %lf\n",stu[i].num,stu[i].name,stu[i].grade,stu[i].average);sum += stu[i].average;}printf("所有同学均分的均值是:%lf",sum/N);return 0;}

运行结果


(2)

/*   * Copyright (c) 2016, CSDN学院   * All rights reserved.   * 文件名称:【项目1-学生成绩统计】 .cpp   * 作    者:张易安   * 完成日期:2016年 9 月 18 日   * 版 本 号:v1.0   *   * 问题描述:使用相同的结构体类型,在main函数中已经对结构体数组进行了初始化,请完成相关函数的定义,实现main函数中要求的功能。 */#include <stdio.h>#include<string.h>struct Student{   char num[13];   char name[10];   int c;   int math;   int english;   int grade;   double average;};void calculate(struct Student s[],int n);  //计算总分和均分,数据在s数组中,共有n个元素void sort1(struct Student [],int);      //按总分降序排序void sort2(struct Student [],int);      //按学号升序排序void output(struct Student [],int);     //输出成绩单void outputExcellent(struct Student [],int);  //输出优秀者:总分超285,单科不低于90int main(){    struct Student stu[]= {    {"201152501104","Tom",65,69 ,68 },        {"201152501114","Jeery",94 ,89 ,63 },        {"201152501138","Speike",67 ,62 ,84 },        {"201152501204","Tyke",100 ,95 ,91 },        {"201152501202","Tuffy",59 ,80 ,55 },        {"201152501115","Butch",100 ,99 ,89 },        {"201152501201","Lightning",95 ,92 ,99 },        {"201152501145","Topsy",88 ,56 ,67 },        {"201152501203","Droopy",62 ,62 ,95 },        {"201152501140","Drupa",80 ,60 ,86 },        {"201152501205","Buzz",73 ,90 ,94}    };    int stuNum=sizeof(stu)/sizeof(stu[0]);  //用sizeof运算确定数组中元素个数    //计算总分和均分后输出    calculate(stu,stuNum);    printf("下面是成绩单:\n");    output(stu,stuNum);    printf("优秀者名单:\n");    outputExcellent(stu,stuNum);    //按总分降序排序后输出    sort1(stu,stuNum);    printf("按总分降序排序后:\n");    output(stu,stuNum);    //按学号升序排序后输出    sort2(stu,stuNum);    printf("按学号升序排序后:\n");    output(stu,stuNum);    return 0;}//近段时间自己编程的学习方向有点问题,就是以完成任务为目的,而不是掌握知识为目的了,导致自己一直都不能很好的解决编程问题,只是照搬参考答案,也没有什么乐趣,知识感觉也没有学到多少//改变:以掌握知识为根本目的,参考答案只能算作辅助工具,是否学习到了东西是学习一段时间后的衡量标准 void calculate(struct Student s[],int n){int i;for(i=0;i<n;i++){s[i].grade+=s[i].c+s[i].math+s[i].english;s[i].average = s[i].grade / 3.0;}return;}void sort1(struct Student s[],int n){int i,j,temp;for(i=0;j<n-2;j++){  for(j=0;i<n-1-i;i++)  {  if(s[i].grade<s[i+1].grade)  {  temp = s[i].grade;  s[i].grade = s[i+1].grade;  s[i+1].grade = temp;  }  }   }   return ;}void sort2(struct Student s[],int n){int i,j,temp;for(i=0;j<n-2;j++){  for(j=0;i<n-1-i;i++)  {  if(strcmp(s[i].num,s[i+1].num)>0)  {  temp = s[i].grade;  s[i].grade = s[i+1].grade;  s[i+1].grade = temp;  }  }   }      return ;}void output(struct Student s[],int n){int i;for(i=0;i<n;i++){printf("%s %s %d %d %d %d %.2lf\n",s[i].num,s[i].name,s[i].c,s[i].math,s[i].english,s[i].grade,s[i].average);//看起来是有点不美观 }printf("\n");return ; }  void outputExcellent(struct Student s[],int n){int i;for(i=0;i<n;i++)if(s[i].grade>285&&s[i].c>=90&&s[i].math>=90&&s[i].english)    {    printf("%s, %s, ", s[i].num, s[i].name);            printf("%d, %d, %d, ", s[i].c, s[i].math, s[i].english);            printf("%d %.1f\n", s[i].grade, s[i].average);}printf("\n");return;}
运行结果



啊啊啊,好多啊,先留着吧。。。

0 1