九九の表右上半分だけを残して表示したいです。
九九の表自体は出来たのですが、その後どうすればよいのか見当もつきません。
#include <stdio.h>
int main(void)
{
int i, j;
for(i = 1; i <= 9; i++) {
for(j = 1; j <= 9; j++) {
printf("%3d", i * j);
}
printf("\n"); } return 0;
}
ご協力よろしくお願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答5件
0
ちょっとばかしヒネたやりかた:
C
1#include <stdio.h> 2 3int main() { 4 int i, j; 5 for ( i = 1; i <= 9; i++ ) { 6 for( j = 1; j <= 9; j++) { 7 printf( i <= j ? "%3d":" ", i * j); 8 } 9 printf("\n"); 10 } 11 return 0; 12}
投稿2020/06/29 10:36
総合スコア16612
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/06/29 11:32
0
ベストアンサー
右上半分がどういう意味かによりますが...
三角形だと解釈して書いてみましたが、ちょうど半分にはできませんが一応。
C
1#include <stdio.h> 2int main(void) 3{ 4 for (int i = 1; i <= 9; i++) { 5 6 for (int j = 1; j < i; j++) { 7 printf(" "); 8 } 9 10 for (int j = i; j <= 9; j++) { 11 printf("%3d", i * j); 12 } 13 14 printf("\n"); 15 } 16 return 0; 17}
text
1 1 2 3 4 5 6 7 8 9 2 4 6 8 10 12 14 16 18 3 9 12 15 18 21 24 27 4 16 20 24 28 32 36 5 25 30 35 40 45 6 36 42 48 54 7 49 56 63 8 64 72 9 81
投稿2020/06/29 10:30
総合スコア698
0
iとjの関係を考えると,i < j
という条件が右上に相当することがわかります.
c
1#include <stdio.h> 2#include <math.h> 3 4int main(){ 5 for(int i=1;i<=9;i++){ 6 for(int j=1;j<=9;j++){ 7 if(i<j)printf("%3d",i*j); 8 else printf(" "); 9 } 10 printf("\n"); 11 } 12}
txt
1 2 3 4 5 6 7 8 9 2 6 8 10 12 14 16 18 3 12 15 18 21 24 27 4 20 24 28 32 36 5 30 35 40 45 6 42 48 54 7 56 63 8 72
投稿2020/06/29 10:28
総合スコア14
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/06/29 11:32
0
例えば、次のようにすると右上半分だけになります:
c
1#include <stdio.h> 2 3int main(void) 4{ 5 int i, j; 6// for(i = 1; i <= 9; i++) { 7 for(i = 1; i <= 5; i++) { 8 // for(j = 1; j <= 9; j++) { 9 for(j = 5; j <= 9; j++) { 10 printf("%3d", i * j); 11 } 12 13 printf("\n"); 14 } 15 return 0; 16}
実行結果:
console
1$ gcc test.c && ./a.out 2 5 6 7 8 9 3 10 12 14 16 18 4 15 18 21 24 27 5 20 24 28 32 36 6 25 30 35 40 45
投稿2020/06/29 10:26
編集2020/06/29 11:06総合スコア3272
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/06/29 11:32
0
printf("%3d", i * j);
を,
if( iとjの値から,右上だと判断できたら ) { printf("%3d", i * j); } else { 必要なら適切な余白を出力 }
みたくすれば良いでは.
投稿2020/06/29 10:19
編集2020/06/29 10:20総合スコア11996
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/06/29 11:32
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。