1
int main()
{
int marks[3];
int counter=0;
for (i in marks){
     printf(marks[i];
         counter=counter+1;
}
return 0

}

私はPythonを知っていますが、Cは非常に新しいです。構文はわかりませんが、配列を作成して配列を作成し、配列内の各変数を出力しようとしています。私は何が間違っているのですか?

4

4 に答える 4

5
#include <stdio.h>
#define NUM_MARKS 3
int main()
{
    int marks[NUM_MARKS];
    /* marks contains all undefined data */
    int counter=0;
    int i;
    for (i = 0; i < NUM_MARKS; i++){
         printf("%d\n", marks[i]);
         counter++;
    }
    return 0;
}
于 2012-11-01T23:49:16.630 に答える
2
  1. forこれは、Cでループを実行する方法ではありません。私の例を参照してください。そして、グーグルまたはSOを検索します。
  2. 行の閉じ括弧を見逃しましたprintf
  3. ;の後にセミコロンを逃しましたreturn 0
  4. 配列にデータを定義していません。
  5. printf最初の引数としてintではなく文字列を取ります。

    int main()
    {
        int marks[] = {1, 2, 3};
        int i;
        for (i = 0; i < 3; i++){
            printf("%d", marks[i]);
        }
        return 0;
    }
    
于 2012-11-01T23:48:57.637 に答える
1
for (int i = 0; i < 3; i++)

C99サポートを前提としています。C99のサポートがない場合、

int i;
for (i =0; i < 3; i++)

NUM_MARKS3の代わりに使用することもできます。

enum { NUM_MARKS = 3 };
int marks[NUM_MARKS];

また:

enum { NUM_MARKS = sizeof(marks) / sizeof(marks[0]) };

最終的な結果は同じです。

于 2012-11-01T23:49:42.287 に答える
1

Cには、Pythonのようにforeachタイプのループはありません。言語Aが言語Bのように機能すると仮定することはできません。必要なもの:

for(int i = 0; i < sizeof(marks) / sizeof(marks[0]); ++i) {
    printf("%d\n", marks[i]);
}

VSで作業している(そして実際にはCとしてコンパイルしている)場合は、関数の先頭ですべての変数を宣言する必要があります。C99はこれを変更しましたが、残念ながらMSはC99をサポートしません。

于 2012-11-01T23:50:25.447 に答える