我只是在学习C而我正在尝试编写一个简单的程序来进行简单的计算。程序编译得很好,但是当我输入值并尝试运行它时,我得到“分段错误”。有人可以帮我理解为什么会发生这种情况以及究竟什么是分段错误?
代码:
#include <stdio.h>
float main()
{
int price, service;
float annual, value;
printf("Enter the purchase price, years of service, annual depreciation:\n");
scanf("%d %d %f\n", price, service, annual);
value = (annual * service) - price;
printf("The salvage value of the item is %f", value);
return 0;
}
非常感谢任何和所有帮助!谢谢!
答案 0 :(得分:3)
这是错误的
scanf("%d %d %f\n", price, service, annual);
应该是:
scanf("%d %d %f\n", &price, &service, &annual);
答案 1 :(得分:2)
您的程序存在两个问题。首先,main()
应返回int
,通常为零,表示成功,其他值为失败。将float main ()
更改为int main()
,看看是否有所作为。
其次,正如其他两个答案所指出的那样,你对scanf()
的参数应该是保存输入值的变量的地址:
scanf("%d %d %f\n", &price, &service, &annual);
答案 2 :(得分:1)
更改
scanf("%d %d %f\n", price, service, annual);
到
scanf("%d %d %f", &price, &service, &annual);
因为scanf
总是期望指针作为其参数。同时从\n
的格式说明符中删除scanf()
同时将float main()
更改为int main()。