潮汐546 2021-12-16 13:04 采纳率: 80%
浏览 24
已结题

请问为什么一直无输出?怎么改对呢

输入某班学生某门课的成绩(最多不超过40人),
当输入为负值时,表示输入结束,
用函数编程统计成绩不低于平均分的学生人数。
要求:
(1)按如下函数原型进行编程:
int GetAboveAver(int score[], int n);
(2)在主函数中:
输入学生成绩,
然后调用函数GetAboveAver计算成绩不低于平均分的学生人数,
最后输出该人数。
要求:
(1)学生成绩和平均分均定义为int类型
(2)**无输入提示信息
**输入格式为:"%d"
**输出格式为:"Students of above average is %d\n"

#include <stdio.h>
void main( )
{
int str[40];
int i = -1, aver = 0, a, b = 0, c = 0;
do
{
i++;
scanf("%d", str[i]);
}
while (str[i] > 0);
for (a = 0; a < i; a++)
aver += str[a];
aver = aver / (i-1);
while (b < i)
{
if (str[b] >= aver)
c++;
b++;
}
printf("Students of above average is %d\n", c);

}

  • 写回答

3条回答 默认 最新

  • Staringabyss 2021-12-17 17:17
    关注

    #include <stdio.h>
    void main()
    {
    int score[40];/数组最大容量/
    int i,j=0,k=0,sum,aver;
    for(i=0;i<40;i++)
    {
    scanf("%d",&score[i]);/*此处你没有取地址符'&',所以输入无效 */
    if(score[i]>0)
    {
    j=j+1;/统计输入有效成绩的数量/
    continue;
    }
    if(score[i]<0)/*你给出例题里说输入负数结束*/
    {
    break;
    }
    }
    for(i=0;i<j;i++)/*计算总分数*/
    {
    sum=sum+score[i];
    }
    aver=sum/j;/*求平均成绩*/
    for(i=0;i<j;i++)
    {
    if(score[i]>aver)/没必要那么多数组变量,一个就够了/
    {
    k=k+1;
    }
    }
    printf("Students of above average is %d\n", k);
    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月6日
  • 已采纳回答 3月29日
  • 创建了问题 12月16日

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。