定义序号、学号、姓名、获得学分、高数、大体、近代史、软导、C 程均分 数据类型,并输入全班同学数据,计算根据成绩计算获得学分和平均分,并按照 下列格式输出(注意间隔和对齐)。在输入过程中应该对成绩进

定义序号、学号、姓名、获得学分、高数、大体、近代史、软导、C 程均分

数据类型,并输入全班同学数据,计算根据成绩计算获得学分和平均分,并按照
下列格式输出(注意间隔和对齐)。在输入过程中应该对成绩进行合法性,学号
的规范性等进行判断,以防止非法数据的流入。



#include<stdio.h>

#include<stdlib.h>

#define N 20

struct student

{

       char   xuhao[2];

       char   sno[11];

       char   name[10];

       float  xuefen;

       float  score;

       float  Gshu;

       float  Tyu;

       float  Jdaishi;

       float  Dlun;

       float  Dying;

       float  Ccheng;

       float  average;

}stu[N];

 

void input(struct student s[],int n)

{

  int
i;

 
for(i=0;i<n;i++)

  {

          s[i].xuefen=0;

          printf("序号:\n");

      
gets(s[i].xuhao);

      
printf("学号:\n");

      
gets(s[i].sno);

          if(strlen(s[i].sno)!=10)

          {

                 printf("输入数据错误,请重新输入\n");

                        gets(s[i].sno);

          }

      
printf("姓名:\n");

      
gets(s[i].name);

      
printf("高数:\n");

      
scanf("%f",&s[i].Gshu);

          if(s[i].Gshu<0||s[i].Gshu>100)

          {

                 printf("输入数据错误,请重新输入\n");

                        scanf("%f",&s[i].Gshu);

          }

          else

          {

                 if(s[i].Gshu>=60)

                        s[i].xuefen+=5;

                 else

                        s[i].xuefen+=0;

 

          };

      
printf("大学体育:\n");

      
scanf("%f",&s[i].Tyu);

               if(s[i].Tyu<0||s[i].Tyu>100)

                 {

                 printf("输入数据错误,请重新输入\n");

                        scanf("%f",&s[i].Tyu);

                 }

         
else

          {

                 if(s[i].Tyu>=60)

                        s[i].xuefen+=1;

                 else

                        s[i].xuefen+=0;

 

          };

          printf("中国近代史纲要:\n");

      
scanf("%f",&s[i].Jdaishi);

               while(s[i].Jdaishi<0||s[i].Jdaishi>100)

                 {

                 printf("输入数据错误,请重新输入\n");

                       
scanf("%f",&s[i].Jdaishi);

                 }

               

                         if(s[i].Jdaishi>=60)

                        s[i].xuefen+=2;

                     else

                        s[i].xuefen+=0;

 

       

      
printf("软件技术导论:\n");

      
scanf("%f",&s[i].Dlun);

               while(s[i].Dlun<0||s[i].Dlun>100)

                 {

                 printf("输入数据错误,请重新输入\n");

                        scanf("%f",&s[i].Dlun);

                 }

                 

                        if(s[i].Dlun>=60)

                        s[i].xuefen+=1;

                 else

                        s[i].xuefen+=0;

                 

      
printf("大学英语:\n");

      
scanf("%f",&s[i].Dying);

               while(s[i].Dying<0||s[i].Dying>100)

                 {

                 printf("输入数据错误,请重新输入\n");

                       
scanf("%f",&s[i].Dying);

                 }

                

                        if(s[i].Dying>=60)

                        s[i].xuefen+=4;

                 else

                        s[i].xuefen+=0;

                 

      
printf("C语言程序设计:\n");

      
scanf("%f",&s[i].Ccheng);

              while(s[i].Ccheng<0||s[i].Ccheng>100)

                 {

                 printf("输入数据错误,请重新输入\n");

                       
scanf("%f",&s[i].Ccheng);

                 }

               

                         if(s[i].Ccheng>=60)

                        s[i].xuefen+=4;

                 else

                        s[i].xuefen+=0;

                

 

      
fflush(stdin);

 

  }

 

}

void average(struct student s[],int n)

{

  
int  i;

  
for(i=0;i<n;i++)

   {

  
s[i].score=0;

  
s[i].average=0;

  
s[i].score=s[i].Gshu+s[i].Tyu+s[i].Jdaishi+s[i].Dlun+s[i].Dying+s[i].Ccheng;

   
s[i].average=s[i].score/6;

   }

  

}

 

int main ()

{

       int
i;

       input(stu,N);

       average(stu,N);

 
printf("|序       号| 学      号 |姓    
名|获得分数|高等数学A1/5|大学体育1/1|中国近代史纲要/2|软件技术导论/2|大学英语A1/4|C语言程序设计A/4|平均分|\n");

 
for(i=0;i<N;i++)

 
printf("|%s|%7s|%5s|%9.1f|%10.1f|%10.1f|%11.1f|%13.1f|%13.1f|%11.1f|%13.1f|\n",
stu[i].xuhao,stu[i].sno,stu[i].name,stu[i].xuefen,stu[i].Gshu,stu[i].Tyu,stu[i].Jdaishi,stu[i].Dlun,stu[i].Dying,stu[i].Ccheng,stu[i].average);

 
return 0;

}

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值