ここから本文です

C言語の右上直角三角形を作るプログラムについて質問です。 下記のような表示をさ...

アバター

ID非公開さん

2019/7/1419:24:56

C言語の右上直角三角形を作るプログラムについて質問です。
下記のような表示をさせるためにネットで検索しながら
強引にプログラム1を作り表示内容同じ結果がでました。

<表示内容>
右上直角三角形を作ります。
短辺 : 5
*****
・****
・・***
・・・**
・・・・*

<プログラム1>
#include <stdio.h>
int main(void)
{
int i, j, l;

puts("右上直角三角形を作ります。");
printf("短辺 : "); scanf("%d", &l);

for (i = 1; i <= l; i++){
for(j = 2; j <= i; j++)
putchar('・');
for(; j <= l+1; j++)/*ここが理解できない*/
putchar('*');/*ここが理解できない*/
putchar('\n');

}
return 0;
}

ここから質問の本題に入ります。
はじめ * を表示させるために、下記のプログラム2を
作りましたが、うまく表示させれませんでした。
なぜ、プログラム2が表示できずに、プログラム3が表示できるのか
理由をおしえていただきたいです。

<プログラム2>
for(j = l; j >= 0; j--)
putchar('*');

<プログラム3>
or(; j <= l+1; j++)
putchar('*');

閲覧数:
60
回答数:
1
お礼:
250枚

違反報告

ベストアンサーに選ばれた回答

yi0********さん

2019/7/1421:33:37

実行される回数が間違ってるからですね。
プログラム2ではループの中での j の値は l から 0 まで変化します。
つまり、必ず ( l + 1) 回実行されます。
プログラム3では j の初期値はその前のループから抜けた時の値です。
その値は ( i + 1) です。実行される回数は ( l - i + 1) 回になります。
前のループの実行回数が ( i - 1) 回なので合わせて l 回になります。

この回答は投票によってベストアンサーに選ばれました!

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる