qq_37362700 2017-06-19 01:06 采纳率: 0%
浏览 1158

c语言简单学生查询问题

输入q类型不一样,出问题

#include <stdio.h>
#include <string.h>
#define NUMBER 5 //学生人数

//1).编写函数average,对n个学生的成绩score,计算平均分数,并返回其值。
 int arevage(int score[])
 {
    int total=0;
    int i=0;
    for (i=0;i<NUMBER;i++)
    {
        total+=score[i]; //总学生成绩
    }
    return total/NUMBER;  //得出平均值

 }
//2).编写函数grade,对n个学生的成绩score,分别统计及格人数c1和不及格的人数c2,并输出。
 int grade(int score[])
 {
     int c1=0;//及格人数
     int c2=0;//不及格人数
     int i=0;
     for (i=0;i<NUMBER;i++)
     {
         if(score[i]>60)
             c1++;
         else
            c2++;
     }
     printf ("及格人数为:   %d 人\n",c1);
     printf ("不及格人数为: %d 人\n",c2);
 }
//3).编写函数max,求n个学生的成绩score的最高分,并返回其值。
 int max(int score[])
 {
     int i=0,j=0;
     int _max=0;
     for (i=0;i<NUMBER-1;i++)
     {
         for(j=i+1;j<NUMBER;j++)
         {
             if(score[i]>score[j])
             {
                 _max=score[i];
                 score[i]=score[j];
                 score[j]=_max;
             }
         }
     }
     return score[i];
 }
//4)、编写函数xx,对n个学生的成绩score进行排序,并输出。
 int xx(int score[])
 {
     int i=0,j=0;
     int _max=0;
     for (i=0;i<NUMBER-1;i++)
     {
         for(j=i+1;j<NUMBER;j++)
         {
             if(score[i]>score[j])
             {
                 _max=score[i];
                 score[i]=score[j];
                 score[j]=_max;
             }
         }
     }
     return 0;
 }

/*5.)编写主函数main,通过键盘输入用户的选择步骤完成相应功能,用户输入1时调用average统计平均分,输入2时调用grade统计及格或不及格人数,输入3时调用max找最大值,输入4时调用xx对成绩排序,输入0时返回。
 程序要求:合适繁荣提示语 */
 int menu(int _getNumber)
 {
     int new;
     int i=(int)_getNumber;
     int studentScore[NUMBER]={10,70,61,90,100};
     if(i=='q'||i=='Q')
     {
         exit(1);
     }
     while(i!=1&&i!=2&&i!=3&&i!=4)
     {

         printf ("$error :输入有误请重新输入!\a\n");
         scanf("%d",&i);
         printf ("hello word !\n");
         //scanf("%d",&i);



     }
     while(i==1||i==2||i==3||i==4)
     {
     //计算机平均分
     if (i==1)
     {
         printf ("平均成绩是:%d\n",arevage(studentScore));
         //continue;
     }
     //统计合格与不合格的人数
     if (i==2)
     {
         grade(studentScore);
         //continue;
     }
     //最高成绩
     if (i==3)
     {
         printf ("最高的成绩为: %d\n",max(studentScore));

     }
     //从小到大排序
     if (i==4)
     {
         xx(studentScore);
         for (i=0;i<NUMBER;i++)
         {
         printf ("从小到大排序后为:sutdent[%d] = %d\n",i,studentScore[i]);
         }
     }

     printf ("$请再输入查询代号:");
     scanf("%d",&i);
     if(i!=1&&i!=2&&i!=3&&i!=4)
     {

         printf ("$error :输入有误请重新输入!\a\n");
         if(scanf("%d",&i));

     }
     if(i=='q'&&i=='Q')
     {
         break;
     }
     //printf("i = %d",i);
     if(i!=1&&i!=2&&i!=3&&i!=4)
     {

         printf ("$error :输入有误请重新输入!\a\n");
         scanf("%d",&i);

     }


     }
 }
 int main(int argc,char *argv[])
 {
     int getNumber=0;
     printf ("***************************************************\n\n");
     printf (" 输入 【1】————————统计学生成绩\n");
     printf (" 输入 【2】————————分别统计学生成绩及格人数和不及格的人数\n ");
     printf ("输入 【3】————————统计学生的最高成绩\n ");
     printf ("输入 【4】————————对学生成绩进行排序\n ");
     printf ("输入 【q】或者【Q】————————退出程序\n ");
     printf ("$你输入查询代号:");
     scanf("%d",&getNumber);
     menu(getNumber);
     return 0;
 }


主要是:让用户输入q,或者Q退出程序,输入1-4,输入其他报错,让用户重新输入

我调试了下是,当输入英文时,但scanf要求输入 整数类型,类型不一,里面的值不是本身的值,如何解决这个问题?

  • 写回答

3条回答

  • glustful 2017-06-19 01:05
    关注

    scanf不用接受整形吗,接受字符,1,2,3,4也作为字符判断就好了

    评论

报告相同问题?

悬赏问题

  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 ubuntu系统下挂载磁盘上执行./提示权限不够
  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)