gpt4 book ai didi

c 赋值,对整数求平均值

转载 作者:行者123 更新时间:2023-11-30 18:20:54 28 4
gpt4 key购买 nike

我昨天花了大约 5 个小时来完成这个工作,并使用这个网站的帮助让代码可以工作,但我认为我这样做的方式是一种作弊方式,我使用了 scanf 命令。无论如何,我想以正确的方式解决这个问题。多谢你们!哦,代码可以编译,但是吐出的平均值是错误的。我想从概念上理解我做错了什么并完成作业。

#include <stdio.h> 
#include <stdlib.h>
double get_number(int num);


main () {
double n1,n2,n3;
double average;

printf("\nCompute the average of 3 integers\n");
printf("--------------------------------\n");
n1 = get_number(1);
n2 = get_number(2);
n3 = get_number(3);
average = (n1 + n2 + n3)/3;
printf("The average is %0.2f\n",average);
}

double get_number(int num) {
double value = 0;
int c;
printf("Please input number %i: ", num);
while ((c = getchar()) != '\n') {
if ( (c<'0') || (c>'9') ) {
printf("Incorrect character entered as a number - %i\n",c);
exit(-1);
}
else {
c =value;
}
}
return(value);
}

最佳答案

您的 get_number 函数始终返回 0,因为您从未向 value 变量分配任何内容。我猜你想要:

value = value*10 + (c - '0');

而不是

c = value;

澄清一下:

您正在逐位读取数字(使用 getchar 读取单个字符)。假设您读到了数字 1 2 3:

当您读取 1 时,您会执行 value = value*10 + ('1' - '0') 意思是 value = 0 + 1 = 1 .

当您读取 2 时,您会执行相同的操作并得到 value = 1*10 + ('2' - '0') 表示 value = 12 .

3 相同。

您需要了解的是,将某个值乘以 10 会在该值的末尾添加一个 0。在以零结尾的内容中添加一个数字会将 0 替换为该数字。

您还必须了解您正在处理的字符实际上是整数。字符 '0' 由 ASCII 代码表示,例如 x'1'x + 1 等表示。如果您要打印 '0'+'3' 的值,则不会如您所料,为 3。这就是为什么我们从字符中减去 '0' (即 x),以获得实际的数字。

希望能够澄清一些问题。

关于c 赋值,对整数求平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3747144/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com