2016-11-26 5 views
-1

私はこのコードを使用してみましたが、ユーザーがパーセント計算機をcで修正しましたか?

#include <stdio.h> 
#include <string.h> 

int main() { 
    int part, total; 
    int whole = 100; 
    printf("What is total score of the exam?\n"); 
    scanf("%d", part); 
    printf("Enter your score on the exam\n"); 
    scanf("%d", total); 
    printf(total/part * whole); 
    return 0; 
} 
+1

最後の 'printf()'のフォーマット文字列はどこですか? – Dmitri

+4

a)マニュアルの読込みを開始し、b)コンパイラの警告を有効にする必要があります。 –

+3

scanf()の2番目のパラメータは、変数の値だけでなく、値を読み取る変数*へのポインタでなければなりません。例えば ​​'のscanf( "%d個"、&part);'の代わりに 'のscanf( "%d個"、パート)の;。。' – Striezel

答えて

1

としては、@ Striezelさんのコメントで述べて合計スコアを入力し、コンソールがクラッシュした後、あなたはscanfで二番目のパラメータへのポインタを追加する必要があるので、あなた変数の値を取得するだけではなく、読み込みたい変数を指し示すだけです。

あなたscanfコードは次のようになります。

int main() { 
    ... 
    scanf("%d", &part); 
    ... 
    scanf("%d", &total); 
    ... 
} 

はまた、あなたの最後のprintfがいっぱいで、このようになります。これは、文字列コンポーネントが欠落しています。printf("%d", total/part * whole);

はまた、@ LudaOtakuのを見てみましょうこれらの非常に基本的なエラーを認識するためのヒントについては、answerをご覧ください。

+0

あなたはまた、壊れた 'printf'コールの修正を提供しなければならない – saeleko

+0

@LudaOtakuは内と付け加えました。頭を上げてくれてありがとう – Nik

3

短い答えですので、この質問は返答されません。コンパイラの警告を有効にして解釈することを忘れないでください。そうすれば、問題をより簡単に解決できます。 GCCでは、-Wallコンパイラオプションを追加して、このような問題を見るのに必要な通常の警告を表示することができます。

#include <stdio.h> 
#include <string.h> 

int main() 
{ 
    int part, total; 
    int whole = 100; 

    printf("What is total score of the exam?\n"); 
    scanf("%d", &part); /* address of part needed, not its value*/ 

    printf("Enter your score on the exam\n"); 
    scanf("%d", &total); /* address of total needed, not its value*/ 

    printf("%d", total/part * whole); /* printf expects a string as its first parameter */ 
    return 0; 
} 
関連する問題