/* pro06031.c n以下の整数の 2乗 */#include <stdio.h> int main(void){ int n, i, k; printf(" 整数nを入力 :"); scanf("%d", &n); for (i=1; i<=n; i++){ k = i * i; printf("%d\n", k); } return 0;}
pro-06031 解答例
printf() の中に直接計算式を書いてもよい
/* pro06031.c n以下の整数の 2乗 */#include <stdio.h> int main(void){ int n, i; printf(" 整数nを入力 :"); scanf("%d", &n); for (i=1; i<=n; i++){ printf("%d\n", i*i); } return 0;}
pro-06031 解答例 2
/* pro06032.c 整数の約数 */#include <stdio.h>
int main(void){ int n, i;
printf(" 整数を入力 :"); scanf("%d", &n);
printf(" 約数は \n"); for (i=1; i<=n; i++){ if(n%i == 0){ printf("%d\n",i); } } return 0;}
pro-06032 解答例
while (継続条件) { 文}
制御文 while (処理をループさせる)
継続条件 NO
YES文
while 文( ) 内の条件が真であるかぎり{ } 内を反復実行(ループ)
dt[i] が -1 と等しくないかぎりループを続ける
/* ex030.c */#include <stdio.h>
int main(void){ int i, dt[ ] = {100, 200, 300, -1, 400}; i = 0; while (dt[i] != -1) { printf("%d\n", dt[i]); i++; } return 0;}
while 文の使用例 1 (p.108) (ex030.c)
配列の初期化 (3章 p.67)配列を宣言すると同時に初期値を設定
配列のサイズが空白の場合初期値の個数で自動的に決定(この場合は 5)
/* ex030.c */#include <stdio.h>
int main(void){ int i, dt[ ] = {100, 200, 300, -1, 400}; i = 0; while (dt[i] != -1) { printf("%d\n", dt[i]); i++; } return 0;}
while 文の使用例 1 (p.108) (ex030.c)
/* ex031.c */#include <stdio.h>
int main(void){ int nn, sum = 0; scanf("%d", &nn); /* 最初のデータ入力 */
while (nn != 0) { /* nn が 0 と等しくなければループを続行 */
printf(" 入力値 =%d\n", nn); sum = sum + nn; scanf("%d", &nn); /* 2 回目以降のデータ入力 */
} printf(" 合計値 =%d\n", sum); return 0;}
while 文の使用例 2 (p.110) (ex031.c)
do { 文} while (継続条件);
制御文 do-while (処理をループさせる)
継続条件 NO
YES文
do-while 文doの後の文を実行した後でwhile の後の ( ) の中の条件を調べる
ss[n] がナル文字以外のときループを継続ss[n] を出力した後で、それがナル文字かどうかを調べている
/* ex032.c */#include <stdio.h>
int main(void){ int n; char ss[ ] = "ABCDE"; printf("%s\n", ss); n = -1; do { ++n; printf("%d ", ss[n]); } while(ss[n] != '\0'); printf("\n"); return 0;}
do-while 文の使用例 (p.112) (ex032.c)
文字列配列の初期化 (3章 p.68)配列のサイズが空白の場合初期値の文字数+1が自動的に配列のサイズになる(初期値の文字数の後にナル文字 (¥0) が付加されるため)この場合の配列のサイズは 6
/* ex032.c */#include <stdio.h>
int main(void){ int n; char ss[ ] = "ABCDE"; printf("%s\n", ss); n = -1; do { ++n; printf("%d ", ss[n]); } while(ss[n] != '\0'); printf("\n"); return 0;}
do-while 文の使用例 (p.112) (ex032.c)
++nnに 1を加える (第 4章 p.81)( この場合は n++でも同じ )
%s文字列を入出力するための変換仕様
C言語の文字コードについては教科書の表紙裏を参照
/* ex032.c */#include <stdio.h>
int main(void){ int n; char ss[ ] = "ABCDE"; printf("%s\n", ss); n = -1; do { ++n; printf("%d ", ss[n]); } while(ss[n] != '\0'); printf("\n"); return 0;}
do-while 文の使用例 (p.112) (ex032.c)
do-while 文doの後の文を実行した後でwhile の後の ( ) の中の条件を調べる
while 文( ) の中の条件を調べたあとで文を実行
/* ex033.c */#include <stdio.h>
int main(void){ int m, k; printf("k の値を入力 \n"); scanf("%d", &k); m = k; printf("100 以下の kの倍数は \n"); while(m < 100){ printf("%d\n", m); m += k; } m = k; printf("100 以下の kの倍数は \n"); do{ printf("%d\n", m); m += k; } while(m < 100); return 0;}
while 文と do-while 文の違い
switch 文( ) の中の整数値と一致した case から実行するbreak に出会うと switch 文を終了どの case とも一致しない場合はdefault を実行
/* ex033.c */#include <stdio.h>
int main(void){ int a; for (a=1; a<=5; a++) { printf("--------%d\n", a); switch (a) { case 1: printf("a=1\n"); break; case 3: printf("a=3\n"); break; case 5: printf("a=5\n"); break; default: printf(" その他 \n"); } } return 0;}
switch 文で分岐する (p.114) (ex033.c)
本日の課題前回の課題をwhile文を用いて書き換える。
pro-06041キーボードから整数 n を読み込み、n以下の整数の2乗を表示させる。
pro-06042キーボードから整数を読み込み、その約数を小さい順に表示させる。