我需要为以下内容编写一个程序..我已经尝试但我不知道我哪里出错了..
定义结构dollarsQuartersDimes有三个简单的变量int dollars,int quarters和int dimes来声明美元,四分之一和硬币的货币。
添加两个DollarQuartersDimes货币并将结果存储在第三个DollarQuartersDimes货币中。
请记住从角钱和宿舍进行必要的转换。 注意:10美分= 1美元,4个季度= 1美元。
#include <stdio.h>
#include <stdlib.h>
typedef struct{
int dollars;
int quarters;
int dimes;
}dollarsQuartersDimes;
void main(){
dollarsQuartersDimes input1 , input2 , total;
printf ("Please enter the money in order dollars : quarters : dimes ! ");
scanf ("%d%d%d" , &input1.dollars, &input1.quarters, &input1.dimes);
printf ("Please enter again the money in order dollars : quarters : dimes ! ");
scanf ("%d%d%d" , &input2.dollars, &input2.quarters, &input2.dimes);
input1.dollars = input1.dollars + (input1.quarters/25) + (input1.dimes/10);
input2.dollars = input2.dollars + (input2.quarters/25) + (input2.dimes/10);
total.dollars = input1.dollars + input2.dollars;
printf ("The total value in dollars is : %d" , total.dollars);
}
}
错误:我收到错误的返回类型不是int的错误。请帮助!
答案 0 :(得分:4)
您需要将main
声明为int main
:
int main (int argc, char *argv[]) {
// ...
return 0;
}
答案 1 :(得分:3)
在你修复了压痕和明显的牙箍不平衡之后,你就会明白这个问题的核心。语句如
input1.dollars = input1.dollars + (input1.quarters/25) + (input1.dimes/10);
将在整数运算中执行,因为操作数都是整数类型。你会得到很多截断的数据。 (24个季度将以你写的方式评估为零美元)。
要补救,请将25替换为25.0。这迫使分裂以浮点进行。
并修复main
的原型:应为int main()
。如果您使用void main()
,则正式的程序行为未定义。
答案 2 :(得分:0)
这不是答案(可以随意向下投票)
你应该先加入你的作品:
total.dimes = input1.dimes + input2.dimes;
total.quarters = input1.quarters + input2.quarters;
total.dollars = input1.dollars + input2.dollars;
然后传播总结:
// NOTE: Assumes the user enter the number of quarters, not the value in quarters!
total.dollars += total.quarters / 4;
// NOTE: Assumes the user enter the number of dimes, not the value in dimes!
total.dollars += total.dimes / 10;
通过调整余数完成:
// NOTE: Assumes the user enter the number of quarters, not the value in quarters!
total.quarters = total.quarters % 4;
// NOTE: Assumes the user enter the number of dimes, not the value in dimes!
total.dimes = total.dimes % 10;
%运算符给出除法的其余部分。