アプリ版:「スタンプのみでお礼する」機能のリリースについて

任意の正整数を入力して、その行数だけ '*' を表示するプログラムを作成したいです!。そして、
1行に表示する '*' の数は、画像のように1個、3個、5個・・・と増えていくようにしてください。

「C言語 for文をつかって記号を表示させ」の質問画像

質問者からの補足コメント

  • うれしい

    cametan_42さん回答ありがとうございます。

    追加で聞きたいのですが当方プログラミング初心者なのでstdlib.hのマクロを使わないような表し方はありますか?
    scanf("%9s%*[^\n]%*c", s);を他の言い方で表すことはできますか?

      補足日時:2021/05/22 23:06

A 回答 (2件)

> stdlib.hのマクロを使わないような表し方はありますか?



文字列->数値変換が必要(strtol)なので使った方が良いです。

> scanf("%9s%*[^\n]%*c", s);を他の言い方で表すことはできますか?

あるけど、そもそもscanfが安全じゃないです。
安全性で考えると、 scanf("%9s%*[^\n]%*c", s)として入力を文字列で受け取った方が良いです。

初心者なら尚更、scanfをそのまま使うような事は早い段階から避けた方が無難です。
    • good
    • 0
この回答へのお礼

参考になりました。ありがとうございます。

お礼日時:2021/05/22 23:20

#include <stdio.h>


#include <stdlib.h>

int main(void) {
 char s[10];
 int row;
 printf("表示する行数を入力してください ==> ");
 scanf("%9s%*[^\n]%*c", s);
 row = strtol(s, NULL, 10);
 for (int i = 0; i < row; i++) {
  for (int j = 0; j < 2 * i + 1; j++) {
   printf("*");
  }
  printf("\n");
 }
 return EXIT_SUCCESS;
}
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!