1

我只是在学习 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;
}

非常感谢任何和所有帮助!谢谢!

4

3 回答 3

3

这是错误的

 scanf("%d %d %f\n", price, service, annual);

应该:

 scanf("%d %d %f\n", &price, &service, &annual);
于 2013-09-08T01:44:11.883 回答
2

你的程序有两个问题。首先,main()应该返回一个int,通常为零表示成功,其他一些值表示失败。更改float main ()int main()查看是否有所作为。

其次,正如其他两个答案所指出的那样,您的参数scanf()应该是保存输入值的变量的地址:

scanf("%d %d %f\n", &price, &service, &annual);
于 2013-09-08T01:51:46.693 回答
1

改变

scanf("%d %d %f\n", price, service, annual);

scanf("%d %d %f", &price, &service, &annual);

因为scanf总是期望一个指针作为它的参数。也从 也更改为int main()\n的格式说明符中删除。scanf()float main()

于 2013-09-08T01:44:26.850 回答