- ベストアンサー
forの考え方(初級)
kupottiの回答
for (初期化式; 継続条件式; 再初期化式) なので、 for(int i = 0; i < 100; i++) であれば、 ・iに1を設定(初期化) ・iが100より小さい間ループ(継続条件) ・ループのたびに1加算(再初期化) ですし、 for(i=100; i < 1; i--) であれば、 ・iに100を設定(初期化) ・iが1より小さい間ループ(継続条件) ・ループのたびに1減算(再初期化) なので、最初のループに入る条件のところで、iは1より小さくないので、ぬけます。
関連するQ&A
- 二次元配列に関する質問です。
一次元配列はわかるのですが二次元配列になると、わからない時があります。 <ソース> #include<stdio.h> int main() { int dat[2][5]={1,2,3,4,5,6,7,8,9,10}; int i; int j; for(i=0;i<2;i++){ for(j=0;j<5;j++){ printf("dat[%d][%d] %d\n",i,j,dat[i][j]); } } return 0; } このプログラムでわからないのは、 int dat[2][5]={1,2,3,4,5,6,7,8,9,10};の部分です。 普段は、int dat[2][5]={{1,2,3,4,5}, {6,7,8,9,10}, }; という使い方をしているのですが・・・。 どうちがうのでしょうか?
- ベストアンサー
- C・C++・C#
- for文
整数を読み込んで、その値を0までカウントダウンしながら表示するプログラム作りたいのですが、 while文ではできたのですが、for文ではうまくいきません。 どこが間違っているのでしょうか? OS:Windows XP C++Builder X パーソナル #include <stdio.h> int main(void) { int i; int num; printf("整数を入力してください:"); scanf("%d", &num); for(i = num; i <= 0; --i) { printf("%d", i); } return 0; } 宜しくお願いします。
- ベストアンサー
- C・C++・C#
- for 3ループについて教えて
for 3ループについて教えて * ** *** **** * ** *** **** * ** *** **** と表示させたいのですが、 #include<stdio.h> int main(void) { int i,j,k; for(i=1; i<=4; i++) { for(j=1; j<=i; j++){ // for(k=1; k<=3; k+=i){ } printf("*"); } printf("\n"); } return 0; } * ** *** **** このように表示されてしまいます。//の所が違うなと思います。が、分かりそうで分かりません。 もし、分かるかたがいましたら、教えてください。 よろしくおねがいします。
- ベストアンサー
- C・C++・C#
- C言語で困っています
C言語で 100:1 99:2 98:3 .......ループ 1:100とやりたいんですが このやりかたがわかりません goto文などを使うのでしょうか? 一応コードは #include <stdio.h> int main(void) { int i,a; for(i=100; i>=1; i--){ for(a=1; a<=100; a++){ printf("%d:\n",i); break; printf("%d",a); } } return 0; } です まったくこれだと右側が出力されなくてだめみたいです どなたかお知恵をください お願いします
- 締切済み
- C・C++・C#
- for文
#include <stdio.h> int main(void) { int i; int sum=0; int num, tmp; printf("整数は何個かな:"); scanf("%d",&num); for(i=0; i<num; i++){ printf("No.%d:",i+1); scanf("%d",&tmp); sum+=tmp; } printf("合計値は:%d\n",sum); printf("平均値は:%.2f\n", (double)sum/num); return(0); } 上の文のforの箇所を for(i=1; i<=num; i++){ printf("No.%d:",i); scanf("%d",&tmp); sum+=tmp; } としても結果的に同じですよね? どっちでもいいかどうか迷ってます。教えて下さい。
- ベストアンサー
- C・C++・C#
- for文の継続条件について
----------------------------------------- #include<stdio.h> int main(void) { int i; printf("正の整数を入力してください: "); scanf("%d",&i); for( ; i ; i- -){ printf("%d ",i); } printf("\n"); return 0; } ----------------------------------------- 以上のプログラムで、継続条件の部分を入力した整数にし、例えば「5」を入力すると、 5 4 3 2 1 と表示されます。 例えば、「0<i」といった継続条件ならば、以上のような実行結果になるのはわかるのですが、何故「for( ; i ; i- -)」の「i」という継続条件だけで0より大きい値までを表示してくれるのか分かりません。 何故このようになるのか教えていただけると嬉しいです。
- ベストアンサー
- C・C++・C#
- for文~break
break文に達した時、for文から抜けますか?それとも、if { }から抜けるんですか? for文はどこまで影響下にありますか? if ( i==5 ) printf ("サーバーが見つかりません"); まででしょうか? また if ( i == 5 ) で5なら、実行としていますが、 6,や,8など5 以外でも、サーバーが見つかりません と if文が実行される見たいですが、なぜですか? 教えてください。 #include<stdio.h> int main(void) { int array[5][2]={ {1,14}, {2,28}, {3,19}, {4,8}, {5,15}, }; int sever; int i; printf("番号を入力してください"); scanf("%d",&sever); for( i=0 ; i<5 ; i++ ) if ( sever == array[i][0] ){ printf ( "%d 番には, %d 人います。\n",sever,array[i][1]); break; } if (i==5) printf("サーバーが見つかりません"); return 0; }
- ベストアンサー
- C・C++・C#
- FORの基礎
下記を実行すると"*"が3個表示されますが iが真(1から9)の間(1)~(4)の順序でループ するんですよね? そこで質問なんですが、 1回目の処理: 1+3は4になる為(真)で"*"表示 2回目の処理: 4+3は7(真)で"*"表示 3回目の処理: 7+3は10(偽)なのでスコープから外れ return 0;終了。 真が2つなのに、"*"が3つ表示されるのは何故なんでしょうか。 #include <stdio.h> int main() { int i; for((1)i=1; (2)i<=9;(4)i++){ (3)i=i+3; printf("*", i); } return 0; }
- ベストアンサー
- C・C++・C#
補足
回答頂いた方々にお詫び。 そもそも、 for(int i = 0; i > 100; i++)を for(int i = 0; i < 100; i++)と 記述してしまいました…。 よく確認してませんでした。申し訳ない…。