1

私は自分が書かなければならないプログラムで立ち往生しています。

基本的には、ユーザーに文字と、その文字を何回表示するかを尋ねます。1行あたりわずか10文字。10で停止して、次の行に進む方法がわかりません。

出力例:

Enter a character: *
Enter the number of characters to display: 36
**********
**********

現在、Forループを使用しています。

編集**私のコード

main () {
    int num = 0,i;
    char get_char;

    printf("Enter a character: ");
    scanf("%c", &get_char);

    printf("Enter the number of characters to display: ");
    scanf("%d", &num);


    for (i = 0;i < num; i++) {
        printf("%.10c",get_char);
        i++;
    }
}
4

2 に答える 2

5

文字を印刷した後の現在のforループに、条件を追加します。

 for (i = 0;i < num; i++) {
      printf("%c",get_char);
      if((i+1)%10==0) 
          printf("\n");
    }
 }
于 2012-09-20T20:46:02.263 に答える
2

次の行に進むには、文字を印刷する必要があります。これは、Cスタイルの文字列でlinefeedエスケープシーケンスを使用して示されます。\nコンパイラがこのシーケンスを確認すると、改行文字(16進値は0a)を使用します。端末はこの文字を認識すると、カーソルを次の行に移動します。

行の終わりを検出するには、ネストされたforループを使用するか、モジュラス(%)演算子を使用できます。

ネストされたforループを使用すると、印刷する文字数を単純にカウントし、時間をループする外側のループに、文字を最大10回印刷するループを作成できますtotal/10

ただし、モジュラス演算子はコードでは少しクリーンです。オペランドを除算した後の余りを計算します。たとえば、4 % 2結果は0(4 = 2 * 2 + 0)に5 % 2なり、結果は1(5 = 2 * 2 + 1)になります。あなたの例では、をチェックしたいと思うでしょう(i % 10 == 0)

于 2012-09-20T20:45:52.133 に答える