这些变量有问题。 有人能解决这个问题吗我的答案继续保持0.00
测试用例: 我们想用struct找到3个数字之间的平均值 输入= 2, 其中2个是:3 5 8和3 5 7
out put应该是: //*3+5+8=(16)/3=5.33 // * 3 + 5 + 7 =(15)/3=5.00
#include<stdio.h>
struct rata{
float in1;
float in2;
float in3;
};
float rata2(in1,in2,in3){
return (float)((in1+in2+in3)/3);
}
void main(){
int i,n;
char hasil[100];
scanf("%d",&n);
struct rata walao;
for (i=0;i<n;i++){
scanf("%d %d %d",&walao.in1,&walao.in2,&walao.in3);
hasil[i]=rata2(walao.in1,walao.in2,walao.in3);
}
for (i=0;i<n;i++){
printf("%.2f\n",hasil[i]);
}
}
答案 0 :(得分:0)
您的代码中有3个错误阻止您获得正确的答案。你能找到他们吗?这是一个提示,它们与类型有关。
以下是答案及其背后的原因。
来纠正
char hasil[100]
将hasil指定为大小为100的char数组。虽然可以为chars分配数值,但如果它们是,则将它们视为整数。 Floats = / =整数,这应该通过说float hasil[100]
scanf("%d %d %d",&walao.in1,&walao.in2,&walao.in3)
正在扫描3个数字。由于浮点数也可以赋予整数值,因此这是有效的。但是,该语言要求计算中使用的所有值都应该是相同的类型(提示为3!)。要解决这个问题,你可以做两件事中的一件,两件都是合法的,但完全取决于你。您可以将其写为scanf("%f %f %f",&walao.in1,&walao.in2,&walao.in3)
或保持原样。您的选择将在最终错误中发挥
输入
rata2
未指定。它是整数?浮动?字符?它不知道,但它试图使用整数,因为大多数C中的所有东西都可以用数字表示。由于它采用整数,因此计算返回的值也是一个int,并且没有后期转换为浮动将改变它。这些变量需要指定为某些,你如何处理错误2决定你在这里做什么。如果您更改了早期的scanf以获取浮点数而不是数字,请将rata重写为float rata2(float in1, float in2, float in3)
,删除强制转换然后您就完成了。如果保持原样,请将rata重写为float rata2(int in1, int in2, int in3)
,并将返回值重写为return ((float)in1 + (float)in2 + (float)in3)/3;
。这两种行动方式都是可以接受的,但它更容易,更快速地将它们指定为花车,然后尝试施放所有物品(加上它的清洁剂)。
这应该纠正你的代码(在我的机器上测试它)。此外,为了将来的注意,请
scanf("%d",&n);float hasil[n];
它更有意义,您不必遇到人们指定您无权访问的内存的问题。