c语言关于输入和输出的程序代码是错误的,有人能帮我找出错误吗



我在c 中有以下代码

#include <stdio.h>
int main(void)
{
int a, b, c, sum;
double d, p;
sum = a + b + c;
printf("请输入三个整数:");
scanf("%d %d %d", &a, &b, &c);
d = sum / 3;
printf("3个整数的平均值是:d=%.2f", d);
p = a / sum * 100;
printf(",第一个数占和的比例是:p=%4.2f%%", p);
}

它是关于从键盘输入三个整数,对它们求平均值,然后计算第一个数字与三个数字之和的比率。输出结果保留小数点后2位。我找不出哪里不对。

两个主要问题是:

  1. 使用abc的未初始化值计算sum。将该计算移至成功的scanf()之后,以确保设置了这些变量
  2. 您可能希望以双倍精度而不是整数精度计算dp。我通过分数常数使用自动类型转换。另外两个选项是将sum的类型从int更改为double,或者显式使用类型转换(请参见@FeihuLiu的回答(

次要问题:

  1. 原始代码格式不好(由于我们的一个朋友修复了:-(
  2. 对于main()是可选的,但最好将return作为一个整数,正如您的声明所说的那样
  3. (未修复(如果您不将pd用于其他任何操作,请考虑删除它们,以便对printf()进行计算调用
  4. 一般来说,减少变量的范围是个好主意,所以我在使用这些定义之前将其移动到了
#include <stdio.h>
int main(void) {
printf("请输入三个整数:");
int a, b, c;
if (scanf("%d %d %d", &a, &b, &c) != 3) {
// TBD: translate error message
printf("scanf failedn");
return 1;
}
int sum = a + b + c;
double d = sum / 3.0;
printf("3个整数的平均值是:d=%.2f", );
double p = 100.0 * a / sum;
printf(",第一个数占和的比例是:p=%4.2f%%", p);
return 0;
}

除了sum问题外,整数除法还会产生整数。您可以使用以下代码:

#include <stdio.h>
int main(void) {
int a, b, c, sum;
double d, p;
printf("请输入三个整数:");
scanf("%d %d %d", &a, &b, &c);
sum = a + b + c;
d = (double) sum / 3;
printf("3个整数的平均值是:d=%.2f", d);
p = (double) a / sum * 100;
printf(",第一个数占和的比例是:p=%4.2f%%", p);
}

相关内容

最新更新