プログラミング for文
プログラミングの問題です。
「自然数nを入力し、以下のようなパターンが出力されるようなプログラムをfor文を使って作成せよ。」
(例:n=3のとき)
% ./a.out
n: 3
*
**
***
*__*
**_**
******
*__*__*
**_**_**
*********
(例:n=4のとき)
% ./a.out
n: 4
*
**
***
****
*___*
**__**
***_***
********
*___*___*
**__**__**
***_***_***
************
*___*___*___*
**__**__**__**
***_***_***_***
****************
(_で空白を表しましたが、上手く見られないかもしれません…。小さい直角三角形が下に行くにつれ1個ずつ増え、全体的にみると大きい直角三角形が見えるイメージです。)
つまり、n=3なら、
*
**
***
を単位として、1~3行目にはこれが1つ、4~6行目にはこれが2つ、7~9行目にはこれが3つあります。
一般に、
*
**
***
…
********(←n個)
を単位とし、n^2-2~n^2行目にこれがn個あるようなパターンです。
私はまず、単位パターンをプログラムしました。
#include <stdio.h>
main()
{
___int n, i, j;
___printf("n: ");
___scanf("%d", &n);
___for (i=1; i<=n; i++) {
______for (j=1; j<=i; j++) {
_________printf("*");
______}
______printf("\n");
___}
}
(_は空白です)
しかし、単位パターンを横に2個、3個と並べるプログラムが分かりません。
さらにfor文を使い、3重、4重にするのですか?どなたか教えてください。
No.3ベストアンサー
- 回答日時:
要素から考えたらこんな感じ
#include <stdio.h>
int main()
{
int n;
int i,j,k,m;
printf("n:");
scanf("%d", &n);
// 縦のnブロック分の繰り返し
for (i = 1; i <= n; i++) {
// 縦n行分の繰り返し
for (j = 1; j <= n; j++) {
// 横全体の繰り返し
for (k = 1; k <= i; k++) {
// 単位「*」の繰り返し
for (m = 1; m <= j; m++) {
putchar('*');
}
if (k == i) {
putchar('\n');
break;
}
// 「 」の繰り返し
for (m = n - j; m > 0; m--) {
putchar(' ');
}
}
}
}
}
No.1
- 回答日時:
できればn * nの正方形を「いくつ」積み重ねるのか、という発想まで来て欲しいかな。
#絵に描かずに、塊を何個表示しなきゃいけないか、いくつ*を連続させないといけないか、の数字のリストをつくるだけでもいい。
#ごちゃごちゃしているけどループは内側から考えてます。
http://ideone.com/Bx3Wa
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分 1 2022/07/19 17:03
- C言語・C++・C# このプログラミングの問題を教えて欲しいです。 キーボードから整数kを入力し、kが配列aの中に何個存在 2 2022/12/19 22:50
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 malloc関数を使ってください!お願いします! 最 1 2022/07/21 09:28
- C言語・C++・C# 至急お願いします。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分母 3 2022/07/19 17:09
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# LU分解法のピボッティングについて(C言語/gcc-9) 3 2022/07/11 23:10
- C言語・C++・C# 3×3のラテン方陣をつくるプログラムを作成したのですが、(↓) #include <stdio.h> 5 2023/07/10 01:53
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
構文エラー";"が型の前にあり...
-
C言語 エラー表示 break の位...
-
配列を使って魔方陣
-
教えてください
-
和を求める問題
-
c言語for文
-
scanfが実行されません
-
for文
-
getcの改行判定
-
for文の中にswitch文はいれられ...
-
プログラミング for文
-
行列をべき乗させるプログラム
-
Cプログラムの条件文 if,els...
-
プログラミングに関して
-
分散を求めるプログラム
-
c言語初心者なんですけど
-
C言語プログラムが理解できなくて…
-
最大値と最小値を表示したいの...
-
scanf関数を用いての加減乗除%...
-
while for/ if else/do while文...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
構文エラー";"が型の前にあり...
-
for文の中にswitch文はいれられ...
-
#if 1 #elseの意味について
-
プログラミングで二番目に大き...
-
getcの改行判定
-
C言語プログラムが理解できなくて…
-
C言語 数字以外を入力させない...
-
配列を関数に渡す方法
-
配列を使って魔方陣
-
初心者です。for文、if文を使っ...
-
c言語for文
-
c言語で平均をだす
-
while文について、c言語...
-
scanf関数を用いての加減乗除%...
-
行列をべき乗させるプログラム
-
c言語プログラミングで1から100...
-
C言語階乗の総和を求める
-
scanfが実行されません
-
階乗のプログラム!!
-
C言語の二分法のプログラムにつ...
おすすめ情報