\t
とは\n
、それぞれタブと改行のエスケープ シーケンスなので、変更します。
printf("%d\t", c);
に
printf("%d", c);
タブを取り除き、削除する
printf("\n");
すべて一緒に、新しい行を緩めるために...簡単
余談ですが、なぜ2番目を宣言しているのint c
ですか? コードは一連の int を宣言することから始まりますが、そのうちのいくつかは使用しません。
int i, j, k, y, z, x, c, b, a, C;
//last 3 aren't used
//c declared here, though
//I'd write:
int i, j, k, y, z, x, c;
そしてさらに下:
//inside second loop:
int c = 0;
//would be better if wou wrote:
c = 0;
最後のメモ:return
ステートメントがありませんが、main
関数のシグネチャは (正しく) メイン関数が void ではなく int を返す必要があることを示しています。最後
に a を追加return 0;
印刷を避けたいのが最後の\n (および \t) だけである場合は、次のように変更できます。
printf("\n");
と
if (i < x-1) printf("\n");
これにより、最後にループが実行されたときを除いて、毎回 \n が出力されます。ループが実行さi<x
れる条件が であり、改行が出力される条件が であるためですi<x-1
。
タブに関する限り、以下を置き換えます。
printf("%d\t", c);
と:
if (j < x - 1) printf("%d\t", c);
else printf("%d", c);
必要なことだけを行います。
とは言っても、は定数値であるため、未使用でまだ宣言されている int の 1 つx
に代入する方がよいでしょう。x-1
scanf("%d", &x);
a = x -1;
次に、次のコードで行の最後の番号をいつ出力するかを確認しているので:
if (j < a) printf("%d\t", c);//replaced x - 1 with a here
else printf("%d", c);
else
句は各行の最後の番号にのみ適用されると安全に想定できるので、そこに改行を追加してみませんか?
if (j < a) printf("%d\t", c);//replaced x - 1 with a here
else printf("%d\n", c);
全体として、これにより次のコードが残ります。
#include <stdio.h>
int main()
{
int i, j, k, y, z, x, c, a;
scanf("%d", &x);
a = x - 1;
i = 0;
for(i=0; i<x; i++){
for(j=0; j<x; j++){
c = 0;
for(k=0; k<x; k++){
y = (i+1)*(k+1);
z = (j+k);
c = (z*y)+c;
}
if (j < a) printf("%d\t", c);
else printf("%d\n", c);
}
}
return 0;//ADD A RETURN STATEMENT!!
}
これでも、出力の最後の行の後に新しい行が追加されます。それも削除するには、次のように記述します。
if (j < a) printf("%d\t", c);
else if (i < a) printf("%d\n", c);//check if we're in the last i-loop
else printf("%d", c);//if so, don't print new line
ジョブが完了しました...このコードを試してみましたが、このコードパッドで出力を確認できます