c言語の問題を教えてください。 キーボードから正の整数 n (ただし 10 未満) を一つ入力し、1 から n までの整数を次のように n 行表示 するプログラムを作成せよ。ただし、各行の表示も for 文を用いて行うこと。という問題です。プログラムは書けてますが、再度見たらfor文のところが分からなくってしまい理解できていないので解説していただきたいです。また、この問題に限らず"n行表示させる"とか"文字で正三角形を表示させる"といったようなfor文を使う問題の考え方を教えていただきたいです。理解できなくて困ってます。
#include <stdio.h>
int main()
{
int i,j,n;
scanf("%d", &n);
for(i=0;i<n;i++) {
for(j=0;j<n;j++){
printf("%d",(i+j)%n+1);
} printf( "\n" );
}
return(0);
}
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
> 再度見たらfor文のところが分からなくってしまい理解できていないので解説していただきたいです。
困ったね。
何が分からんか分からん、ってカンジの質問だし・・・。
基礎的過ぎる、って言えば基礎的過ぎるんだよなぁ。
逆に考えましょう。
実は逆に
(i+j)%n+1
って式が先にあるんです。
「これが成立するが為に」for文があるんです。
従って、もし「理解してない」とすれば、そっちの式を理解出来てない、って事ですよ。
あと、forの性質としては、forを二重重ね(まぁ、別に三重でも四重でもいいんですが簡単の為)しても繰り返しは「並列」では起きない、と言う事です。
例えば
for(i=0;i<n;i++) {
for(j=0;j<n;j++){
何らかの処理
}
}
ってあった場合、iとjは「同時には」更新されません。
これの意味は外側のforのiに着目した時、
i = 0 の時:
for(j=0;j<n;j++){
何らかの処理
} が実行される
i = 1 の時:
for(j=0;j<n;j++){
何らかの処理
} が実行
i = 2 の時:
for(j=0;j<n;j++){
何らかの処理
} が実行
.
.
.
i = n の時:
for(j=0;j<n;j++){
何らかの処理
} が実行
と言うカンジで、iがある値で固定されてる最中に内側のforが実行されるようになっています。
そこさえ分かってればコードを読み解くのはそこまで難しくは無い筈なんですけどねぇ。
> この問題に限らず"n行表示させる"とか"文字で正三角形を表示させる"といったようなfor文を使う問題の考え方を教えていただきたい
特にねぇんじゃねぇかなぁ。
実際あんま必要ないし(苦笑)。
と言うかね。ぶっちゃけた話。
C言語の初心者用の問題って「☓☓と表示せよ」って問題ばっか多くて、結果どうやってprintfで表示させるか悩ませる問題だらけなの。
でも実際のプログラミングじゃそういうのってあんま意味ないんですよ。
っつーか、そういう問題ばっかやらせるから表示ばっかにこだわったおかしなクセが身につく。
実際では、大体のパターンでも配列扱って、行列的な二次元の配列操作でforが二重になります、とか割と当たり前のシチュの方が多いんじゃないかな。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分 1 2022/07/19 17:03
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# C言語でif文が予想と違う動きをする件について7 4 2023/03/20 00:26
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 malloc関数を使ってください!お願いします! 最 1 2022/07/21 09:28
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- C言語・C++・C# 至急お願いします。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分母 3 2022/07/19 17:09
- C言語・C++・C# このプログラミングの問題を教えて欲しいです。 キーボードから整数kを入力し、kが配列aの中に何個存在 2 2022/12/19 22:50
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
#if 1 #elseの意味について
-
構文エラー";"が型の前にあり...
-
while文について、c言語...
-
for文について
-
for文の中にswitch文はいれられ...
-
配列を関数に渡す方法
-
c言語プログラミングで1から100...
-
VHDLで、case文とwhen文のどち...
-
if文の中に
-
C言語階乗の総和を求める
-
C言語でのトランプシャッフルに...
-
c言語for文
-
xのy乗を求める問題で…(ただし...
-
C言語 偶数判定
-
C言語プログラムが理解できなくて…
-
for文
-
File Edit Options Buffers Too...
-
C言語:配列の最大値
-
配列を使って魔方陣
-
getcの改行判定
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
構文エラー";"が型の前にあり...
-
for文の中にswitch文はいれられ...
-
#if 1 #elseの意味について
-
プログラミングで二番目に大き...
-
getcの改行判定
-
C言語プログラムが理解できなくて…
-
C言語 数字以外を入力させない...
-
配列を関数に渡す方法
-
配列を使って魔方陣
-
初心者です。for文、if文を使っ...
-
c言語for文
-
c言語で平均をだす
-
while文について、c言語...
-
scanf関数を用いての加減乗除%...
-
行列をべき乗させるプログラム
-
c言語プログラミングで1から100...
-
C言語階乗の総和を求める
-
scanfが実行されません
-
階乗のプログラム!!
-
C言語の二分法のプログラムにつ...
おすすめ情報