2016-10-10 6 views
-2

プログラムは無限ループで停止しています。私はkの値を取得しようとしましたが、それは854としてそれを示しています。私はchecktrue()関数でエラーをコミットしたようです。試した時間と時間。問題が発生していない。kの無関係な値

#include <stdio.h> 
#include <conio.h> 
int checktrue(int *p); 
int k; 
long long int m; 
void main() 
{ 
long long int fir=1; 
long long int pfir=0,n=0; 
long long int sec=2; 
long long int sum=fir; 
clrscr(); 
while (n!=5) 
{ 
sum=sum+sec; 
pfir=fir; 
fir=sec; 
sec=sec+pfir; 
n=checktrue(&sec); 

} 
printf("The sum is %llu",sum); 
getch(); 
} 
int checktrue(int *p) 
{ 
k=0; 
m=*p; 
while(m!=0) 
{ 
m=m/10; 
k++; 
} 
return(k); 
} 
+0

(1) 'void main()'は 'int main(void)'でなければなりません。 'void main()'を使うよう指示する教科書は捨ててください。 (2)コードをインデントしてください。 –

+0

期待される実際の出力は何ですか?実際に行うべきこのコードは何ですか? – dbush

+2

kは初期化されていません。 –

答えて

1

あなたは機能checktrue()が入力を操作することができますsecへのポインタを渡します。あなたがそれを取り除くと、私は出力を得る15

#include <stdio.h> 
#include <stdlib.h> 

unsigned long long checktrue(unsigned long long p); 
int main() 
{ 
    unsigned long long fir = 1, n = 0; 
    unsigned long long sec = 2; 
    unsigned long long sum = fir; 
    while (n != 2) { 
    sum = sum + sec; 
    fir = sec; 
    sec = sec + fir; 
    n = checktrue(sec); 
    } 
    printf("The sum is %llu\n", sum); 
    exit(EXIT_SUCCESS); 
} 

unsigned long long checktrue(unsigned long long p) 
{ 
    unsigned long long k = 0; 
    while (p != 0) { 
    p /= 10; 
    k++; 
    } 
    printf("Exited Succesfully %llu\n", k); 
    return k; 
} 
関連する問題