for 文道場 (問題編)


目次

「その他」のページへ

はじめに

目次へ

「問題」編


「for 文の意味」編


次へ  前へ  解答へ

「for 文の意味: その 1」

for 文は、for 文内で実行する文が 1 つの場合は、

for ( [初期値] ; [条件] ; [増分式] )
  [実行文];
の形に書きます。 ここで、[初期値]、[条件]、[増分式]、[実行文] は適当な C の文です。 では、これをフローチャートにすると下のどれになるでしょうか。

[1] 条件、増分式、実行文の順のフローチャート  [2] 条件、実行文、増分式の順のフローチャート  [3] 増分式、条件、実行文の順のフローチャート  [4] 実行文、条件、増分式の順のフローチャート  [5] 増分式、実行文、条件の順のフローチャート  [6] 実行文、増分式、条件の順のフローチャート 

(03/08 2011)
目次へ
次へ  前へ  解答へ

「for 文の意味: その 2」

for 文は、for 文内で実行する文が 1 つの場合は、

for ( [初期値] ; [条件] ; [増分式] )
  [実行文];
複数ある場合は、
for ( [初期値] ; [条件] ; [増分式] ) {
    [実行文 1];
    [実行文 2];
    ....
}
のように書きます。 ここで、[初期値]、[条件]、[増分式]、[実行文] は適当な C の文です。

では、次は間違いでしょうか。

  1. 実行文が 1 つなのにカッコ { } でくくっている:
    for ( [初期値] ; [条件] ; [増分式] ) {
        [実行文];
    }
  2. 実行文が複数あるのにカッコ { } でくくっていない:
    for ( [初期値] ; [条件] ; [増分式] )
      [実行文 1];
      [実行文 2];
      [実行文 3];
  3. 改行を入れていない
    for ( [初期値] ; [条件] ; [増分式] ) [実行文];
  4. スペースも入れていない
    for([初期値];[条件];[増分式])[実行文];
  5. 変なところに改行を入れている
    for (
      [初期値] ;
      [条件] ;
      [増分式] )
        [実行文];
  6. for 文のカッコの中に [初期値]、[条件]、[増分式] を書いてない
    for ( ; ; ) [実行文];
  7. for 文のカッコの中に何も書いてない
    for ( ) [実行文];
  8. for 文のカッコを別なカッコにしている
    for { [初期値] ; [条件] ; [増分式] }
      [実行文];

(02/25 2011)
目次へ
次へ  前へ  解答へ

「for 文の意味: その 3」

次の文の内容を for 文を使わずに (他のループも使わずに) 書くとどうなるでしょうか。

int j;
for (j=1; j<=3; j=j+1)
  printf("[%d]\n", j);

(02/25 2011)
目次へ
次へ  前へ  解答へ

「for 文の意味: その 4」

次の文の内容を for 文を使わずに (他のループも使わずに) 書くとどうなるでしょうか。 また、for 文が終わった後では longname の値は何になっているでしょうか。

int longname;
for (longname=4; longname<7; longname++)
  printf("[%d]\n", longname);

(02/25 2011)
目次へ
次へ  前へ  解答へ

「for 文の意味: その 5」

次の文の内容を for 文を使わずに (他のループも使わずに) 書くとどうなるでしょうか。 また、for 文が終わった後では k の値は何になっているでしょうか。

(02/28 2011)
目次へ
次へ  前へ  解答へ

「for 文の意味: その 6」

次の for 文を [a] とします:

int k;
for (k=2; k<=8; k+=2) {
    printf("[%d]\n", k);
}
また、次の for 文を [b] とします:
int j;
(ア) for ( ; j<=8; j=j+2) {
     (イ)
    printf("[%d]\n", j);
     (ウ)
}
(エ)
[a] と [b] の結果が同じになるようにするには、 (ア)-(エ) のいずれかの場所に式を 1 行入れれば済みます。 どこにどんな式を入れればいいでしょうか。


目次へ
次へ  前へ  解答へ

「for 文の意味: その 7」

次の文の内容を for 文も n も使わずに (他のループも使わずに) 書くとどうなるでしょうか。

int n;
for (n=0; n<=4; n+=2) {
    printf("[%d]\n", n);
    printf("[%d]\n", n+1);
}

(03/10 2011)
目次へ
次へ  前へ  解答へ

「for 文の意味: その 8」

次の文の内容を for 文も x も使わずに (他のループも使わずに) 書くとどうなるでしょうか。

int x, y;
y = 0;
for (x=1; x<=4; x++)
  y = y+x;
  printf("[%d]\n", y);

(03/10 2011)
目次へ
次へ  前へ  解答へ

「for 文の意味: その 9」

次の文の内容を for 文も x も使わずに (他のループも使わずに) 書くとどうなるでしょうか。

int x, Total;
Total = 1;
for (x=5; x>0; x--)
  Total *= x;
printf("[%d]\n", Total);

(03/10 2011)
目次へ
次へ  前へ  解答へ

「for 文の意味: その 10」

for 文の「初期値」の部分、「増分式」の部分には、 「,」(カンマ演算子) を用いて複数の式を書くことができます。 では、次の for 文を使わずに (他のループも使わずに)、 ただし p, q, N は残して書くとどうなるでしょうか。

int p, q, N;
N = 0;
for (p=1, q=5; p<=5; p++, q--)
  N += p*q;
printf("[%d]\n", N);

(03/10 2011)
目次へ
次へ  前へ  解答へ

「for 文の意味: その 11」

次の for 文は初期値、増分式に複数の式が入っています:

int p, q, N;
N = 0;
for (p=1, q=5; p<=5; p++, q--)
  N += p*q;
printf("[%d]\n", N);
この for 文の初期値、増分式の q に関する式を for 文の初期値、増分式から出すには、 次の (ア) - (エ) のどこに、どのような q の式を書けばいいでしょうか。
int p, q, N;
N = 0;
(ア)
for (p=1; p<=5; p++) {
    (イ)
    N += p*q;
    (ウ)
}
(エ)
printf("[%d]\n", N);

(03/10 2011)
目次へ
次へ  前へ  解答へ

「for 文の意味: その 12」

次の for 文は、どのような j に対して実行されるかを答えなさい。

  1. int j;
    for (j=1; j<=10; j+=2)
       printf("j=%d\n", j);
  2. int j;
    for (j=3; 2*j<10; j++)
       printf("j=%d\n", j);
  3. int j;
    for (j=1; j%5 != 0; j++)
       printf("j=%d\n", j);
  4. int j;
    for (j=0; (j+4)%7 != 0; j+=2)
       printf("j=%d\n", j);
  5. int j;
    for (j=1; j<1; j+=2)
       printf("j=%d\n", j);

(03/14 2011)
目次へ

「for 文にする」編


次へ  前へ  解答へ

「for 文にする: その 1」

次の繰り返しの実行文を for 文を使って書き直しなさい。

printf("3× %d = %d\n", 1, 3*1);
printf("3× %d = %d\n", 2, 3*2);
printf("3× %d = %d\n", 3, 3*3);
printf("3× %d = %d\n", 4, 3*4);
printf("3× %d = %d\n", 5, 3*5);

(03/14 2011)
目次へ
次へ  前へ  解答へ

「for 文にする: その 2」

次の繰り返しの実行文を for 文を使って書き直しなさい。

printf("5× %d = %d\n", 1, 5*1);
printf("5× %d = %d\n", 3, 5*3);
printf("5× %d = %d\n", 5, 5*5);
printf("5× %d = %d\n", 7, 5*7);
printf("5× %d = %d\n", 9, 5*9);

(03/14 2011)
目次へ
「その他」のページへ
更新日: 03/16 2011
竹野茂治@新潟工科大学 (shige@iee.niit.ac.jp)