|
发表于 2019-12-12 17:01:06
|
显示全部楼层
首先,你的程序有输入错误,统计输入人数的函数在声明和调用时的书写与定义时书写不一样。
在这,有个大问题,,就是dqrs()函数中while循环条件不对。你的要求应该是输入不多于40个分数,你的循环判断条件并不能满足你的要求。你需要好好学习一下scanf的用法,scanf有返回值,返回值可能是1或者0或者-1,若读到符合要求的办理类型则返回值为1;若读到其他字符,则返回值为0;什么也没有读到,则返回值为-1。
帮你改了一下,不考虑输入错误的情况。
- #include<stdio.h>
- #define N 40//为下面的分数设置40个位置
- int dqrs(int score[]);//统计输入的人数
- int bjgrs(int n,int score[]);//统计不及格人数
- int main()
- {
- int score[N],n;
- n=dqrs(score);
- printf("总人数为%d",n);
- printf("不及格人数%d",bjgrs(n,score));
- return 0;
- }
- int dqrs(int score[])
- {
- int i=-1,flag=-1;
- do{
- i++;
- printf("输入分数:");
- flag=scanf("%d",&score[i]);
- }while(flag!=-1&&i<40);
- return i;
- }
- int bjgrs(int n,int score[])
- {
- int t=0,i;
- for(i=0;i<n;i++)
- {
- if(score[i]<60)
- {
- t+=1;
- }
- }
- return t;
- }
复制代码 |
|