2016-11-20 97 views
2

我是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() 
+0

謝謝,但仍然奇怪的價值 –

+0

謝謝你們,讓一切像計劃一樣修復♥ –

+1

標記答案被接受然後。 –

回答

2

在你zins的定義()函數,你應該寫在同一類型中向前聲明,所以更改float zins(jahr, prozent)float zins(int jahr, int prozent)它將編譯。另外,在主函數中,您應該將scanf("%i", kapital);更改爲scanf("%f", &kapital);,因爲您需要爲地址提供scanf函數,以存儲使用%f的輸入(它是float)。另外,不使用全局變量通常是個好主意。

+0

感謝您的快速回答,幫助解決了崩潰問題。但是現在表格中的值是奇怪的,可以提出類型問題? –

+0

我不會說德語,所以我不知道你期望的輸出。我建議嘗試@ user3121023建議,而不是浮動'zinssatz = prozent/100;'嘗試'浮動zinssatz = prozent/100.0;'。 –