2016-10-19 6 views
-4

私は答えを求めていないと言って始めたいと思いますが、構文で何を探しているべきかアドバイスしたいと思います。これは私の最初の数少ないC課題の一つです。私のコードは以下のような出力を持っています。私はCコードで何を修正すべきですか?

How many grade items would you like to enter? 4 

Enter the grade for grade item number 1: 67 
Enter the grade for grade item number 2: 79.4 
Enter the grade for grade item number 3: 90 
Enter the grade for grade item number 4: 83.5 

Average grade: 79.97% 
Letter grade: C 

私はしかし、私は私が最初の割り当てのために書いた以下のコードにこだわっていると私はループを作るために使用されている可能性があることを理解し、それは、入力された数の複製ようにする方法を把握しようとしていますこの短いLOTが、私は唯一のC.

#include <stdio.h> 

int main() { 
    int a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, sum, total = 1200; 
    float per; 

    printf("\nEnter the score for Assignment 1: "); // Assignment statements 
    scanf("%d", &a1); 
    printf("\nEnter the score for Assignment 2: "); 
    scanf("%d", &a2); 
    printf("\nEnter the score for Assignment 3: "); 
    scanf("%d", &a3); 
    printf("\nEnter the score for Assignment 4: "); 
    scanf("%d", &a4); 
    printf("\nEnter the score for Assignment 5: "); 
    scanf("%d", &a5); 
    printf("\nEnter the score for Assignment 6: "); 
    scanf("%d", &a6);  
    printf("\nEnter the score for Assignment 7: "); 
    scanf("%d", &a7); 
    printf("\nEnter the score for Assignment 8: "); 
    scanf("%d", &a8); 
    printf("\nEnter the score for Assignment 9: "); 
    scanf("%d", &a9); 
    printf("\nEnter the score for Assignment 10: "); 
    scanf("%d", &a10); 
    printf("\nEnter the score for Assignment 11: "); 
    scanf("%d", &a11); 
    printf("\nEnter the score for Assignment 12: "); 
    scanf("%d", &a12);  

    sum = a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9 + a10 + a11 + a12; 

    per = (sum * 100)/total; 
    printf("\nPercentage : %f", per); 

    return (0); 
} 

週間での使用経験について何かアドバイスは素晴らしいことだ(または私は見直すべきものにリンク?)している、私はシンプルなプリント/スキャンの文の後でかなり混乱してしまいます。あなたは平均を計算することができるしている合計値を持っている場合今

int a, sum = 0; 
int n; 
printf("\nHow many grade items would you like to enter? "); 
scanf("%d", &n); 
int i; 
for (i = 1; i <= n; ++i) { 
    printf("\nEnter the score for Assignment %d: ", i); 
    scanf("%d", &a); 
    sum = sum + a; 
} 
printf("\nsum: %d", sum); 

+1

インターネット上でCのループや配列について調べることはたくさんあります。そこから読み始めたいと思うかもしれません。 "Cチュートリアル"と "C introduction"も使える検索フレーズです。 – Evert

+0

http://codereview.stackexchange.com/に属しているため、この質問を議論の対象外とすることにしました。 – John3136

+0

forループを使用し、配列を使用して値を格納します。また、入力を整数に変換できない場合にsprintfの戻り値をチェックすることも忘れないでください。 [this](http://coliru.stacked-crooked.com/a/d51254d6db5cf117) –

答えて

1

あなたは入力した値の数をforループを使用することができます。グレードなど。

P.S. 「自分のコードを修正する」のような質問はここでは歓迎されないことに注意してください。私はCの学習の第一歩をするのは簡単ではないことを知っています。基本的なチュートリアルを読んで、それらからサンプルコードを実行します。さらに具体的な質問をしてみてください。

+0

を参照してくださいありがとう、それは多くの助けになります。あなたは、Cのための良いリソースサイトのすべての洞察力を持っていますか? – Ardowi

+0

@Erdowi、私は大学でC++を学び、Herbert Schildtの本は私を大いに助けました。彼はCについての本も持っています。また、私は実践のためにロシアのオンライン裁判官システム(informatics.mccme.ru)を使用しました。コーデックやSPOJのようなサイトを見てください。 – Pavel

+0

@エルドウィーも、あなたの問題を解決すれば私の答えをマークしてください。 – Pavel

1

私は何とかその初心者の気持ちを知っているので、私はあなたを助けています。最初のコードのすべてのフローの:

  1. したがって被験者の数(n)及びアレイ(arr[])を取得するために整数を取ります。
  2. 今度は、合計被験者(0 to n-1)のループ反復を開始してください。for
  3. ユーザーから値を入力し、配列(arr[i] = marks)に保存し、合計記号(totalMarks = totalMarks + marks)の変数(totalMarks)に同時に件名の値を追加します。 OR
  4. それらを印刷したくない場合は、直接変数を(totalMarks)に追加してください。
  5. 最後に、総計(totalMarks)を(n*100)として合計変数に割り、それに100を掛けて、それを1つごとに格納します。

    per = (totalMarks)/(n*100)

これは、プログラムの流れです。

これが役に立ちます。

+0

配列は便利ですが、この場合配列なしで行うことができます。私たちは各値を簡単に読んですぐに合計に加算することができます。 – Pavel

+0

ええ、あなたは正しいですか::) –

0

スキャンした値を割り当てる変数のデータ型(int、floatなど)を調べることをお勧めします。 「フォーマット指定子」を見てください。 最終グレードを表示するための要件として、条件文を使用する方法を学ぶことができます。

あなたの経験が比較的少ないことを見ても、まだ最適化がもっと進んでいるとは思えません。

Cを使い始めるには、現在の問題をすべて処理するLearning C the Hard Wayが必要です。

関連する問題