c - 开发一个班级平均程序,每次程序运行时将处理任意数量的成绩
问题描述
#include <stdio.h>
#include <stdlib.h>
int main()
{
int grade,count,sum,average;
grade=0;
count=0;
sum=0;
while(grade!=-1)
{
printf("enter grade=");
scanf("%d",&grade);
sum=grade+sum;
count=count++;
}
average=sum/count;
printf("the average is=%d",average);
return 0;
}
这是问题和输出!!! 我有一个作业要做这个练习,我写了它,但我不知道哪里错了,所以请大家帮忙!谢谢
解决方案
代码中有一些有问题的行需要修复。
count=count++;
正如 Eugene 的评论所指出的,count++ 类似于 count = count + 1。这一行应该只是其中之一。将“count = count++”视为“count = count = count + 1”,这是一种非常奇怪的增量格式化方式。这条线应该只是count++;
average=sum/count;
这条线正在进行整数除法,您的问题正在寻找浮点答案。您可以通过将这两个整数乘以 1.0(浮点值)来强制执行浮点除法。它应该如下所示:
average = 1.0 * sum / count;
最后,无论输入什么,您的循环每次都会增加计数器,并将其添加到总和中。当输入 -1 时,它将增加计数并在 while 循环结束之前将其添加到总和中。您可以将这些操作放入一个简单的 if 语句中,以确保考虑到这一点:
printf("enter grade=");
scanf("%d",&grade);
if (grade >= 0) {
sum=grade+sum;
count++;
}
希望这会有所帮助!
注意:这里不考虑-1之前没有输入数字的情况,这个留给大家玩,有问题可以回这个问题
推荐阅读
- asana - 更新 Asana API 中项目的“收藏夹”字段
- swift - webViewDidStartLoad 和 webViewDidFinishLoad 不起作用
- macos - 电子 - MAC 保持在码头
- azure - 并行持久 Azure 函数
- linux - 删除空文件夹 Linux
- r - 我想使用 ggplot2 将我的背景分成两种颜色的水平条形图
- python - 为数组中的 nan 和 inf 值创建掩码
- node.js - express-session 在浏览器关闭时更改会话
- bash - 在处理管道时与 awk 交互
- javascript - 如何为 jsonschema 生成时间字符串