【问题标题】:Beginner's program keeps crashing初学者的程序不断崩溃
【发布时间】:2016-11-20 15:16:38
【问题描述】:

我是 C 新手,写了一个小程序来生成兴趣表。但是,该程序不断崩溃。不幸的是,我并没有真正找到任何匹配的答案,而且我没有解决它的想法。如何修复程序崩溃?

#include <stdio.h>
#include <stdlib.h>
float kapital;
float zins(int jahr, int prozent);


void tabelle()
{
    printf("\n    |1%    2%    3%    4%    5%    6%    7%    8%    9%    10%");
    printf("\n----+---------------------------------------------------------\n");

    int jahr,prozent;

    for(jahr=1; jahr<=10; jahr++)
    {
        printf("%3d |", jahr);
        for(prozent=1; prozent<=10; prozent++)
        {
            printf("%5d", zins(jahr, prozent));
        }
        printf("\n");
    }
}//tabelle()

float zins(jahr,prozent)
{
  float zinssatz = prozent/100;
  int i;
  float kapitalneu;
  float zwischenkapital=kapital;

  for(i=1;i<=jahr;i++)
  {
      kapitalneu = kapital*zinssatz;
      zwischenkapital = zwischenkapital + kapitalneu + 0.005; //+0.005 um zu     runden, um die Tabelle im Rahmen zu halten
  }
  return zwischenkapital;

}//zins(p,j)

int main()
{
    printf("Kapital :");
    scanf("%i", kapital);
    tabelle();

}//main()

【问题讨论】:

  • 谢谢,但还是奇怪的值
  • 谢谢大家,一切都按计划修好了♥
  • 然后将答案标记为已接受。

标签: c crash


【解决方案1】:

在您的 zins() 函数的定义中,您应该编写与前向声明中相同的类型,因此将 float zins(jahr, prozent) 更改为 float zins(int jahr, int prozent) 它将编译。此外,在您的主函数中,您应该将scanf("%i", kapital); 更改为scanf("%f", &amp;kapital);,因为您需要为scanf 函数提供一个地址,以存储您使用%f 的浮点输入。此外,通常最好不要使用全局变量。

【讨论】:

  • 感谢您的快速回答,帮助修复了崩溃。但是现在表中的值很奇怪,可能是类型问题?
  • 我不会说德语,所以我不知道你期望什么输出。我建议尝试@user3121023 的建议,而不是浮动zinssatz = prozent/100; 尝试float zinssatz = prozent/100.0;
猜你喜欢
  • 1970-01-01
  • 2015-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多