if 文 (a と b の大きい方を表示 ) C 言語 Ⅰ の復習 条件判定 (if, 条件式 ) ループ (for[ 二重まで ], while, do) 配列 ( 次元 次元 ) トレース int a, b; printf( 整数 a: ); scanf( %d, &a); printf( 整数 b: ); scanf( %d, &b); //つのif 文で表現する場合間違えやすい どっちに = をつける? if( a>=b ) printf( 大きい方は %d n, a); if( b > a ) printf( 大きい方は %d n, b); //つのif 文で表現する場合 if( a>=b ) printf( 大きい方は %d n, a); else printf( 大きい方は %d n, b); if 文と else if 文による条件分岐 n が 0 以上 00 以下の値をとる整数とするとき n を入力すると 90 以上の場合 S と表示する 80 以上 90 未満の場合 A と表示する 0 以上 80 未満の場合 B と表示する 0 以上 0 未満の場合 C と表示するその他の場合 X と表示する と表示するプログラムを次の 通りで作成せよ (a) if 文だけでプログラミング (else 文を使わない ) (b) else if 文を使ってプログラミング条件式では 以上という表現のみ使う ( 未満は使わない ) 解答例 :if 文と else if 文による条件分岐 printf( 0 以上 00 以下の整数値を入力してください : ); // ここに異なる解答 (a) や (b) が入る (a) if 文だけでプログラミング (else 文を使わない ) if( n>= 90 ) printf( S n ); if( n>= 80 && n <90 ) printf( A n ); if( n>= 0 && n <80 ) printf( B n ); if( n>= 0 && n <0 ) printf( C n ); if( n <0 ) printf( X n ); 解答例 :if 文と else if 文による条件分岐 printf( 0 以上 00 以下の整数値を入力してください : ); // ここに異なる解答 (a) や (b) が入る (b) else if 文を使ってプログラミング条件式では 以上という表現のみ使う ( 未満は使わない ) if( n>= 90 ) printf( S n ); else if( n>= 80 ) printf( A n ); else if( n>= 0 ) printf( B n ); else if( n>= 0 ) printf( C n ); else printf( X n ); switch 文による条件分岐 整数 n をキーボードから入力し n が のとき おはよう と表示して終了 n が のとき こんにちは と表示して終了 n が のとき こんばんは と表示して終了それ以外のとき おやすみなさい と表示して終了 するプログラムを作成せよ
解答例 : switch 文による条件分岐 printf( 整数値を入力してください : ); switch( n ){ case : printf( おはよう n ); break; case : printf( こんにちは n ); break; case : printf( こんばんは n ); break; default: printf( おやすみなさい n ); for 文による繰り返し (a) 0 から 0 までの整数値をすべて表示 (b-) 0 から 0 までの偶数の中で の倍数以外の値をすべて表示 ( ただし 条件式を つ使うこと ) (b-) 0 から 0 までの偶数の中で の倍数以外の値をすべて表示 ( ただし 条件式は つだけ使うこと :for 文を工夫する ) 8 解答例 :for 文による繰り返し 解答例 :for 文による繰り返し (a) 0 から 0 までの整数値をすべて表示 for( n=0; n<=0; n++ ){ printf( %d n, n); 9 (b-) 0 から 0 までの偶数の中で の倍数以外の値をすべて表示 ( ただし 条件式を つ使うこと ) for( n=0; n<=0; n++ ){ if( (n%)==0 && (n%)!=0 ) printf( %d n, n); 0 解答例 :for 文による繰り返し for 文の特殊な使い方 () (b-) 0 から 0 までの偶数の中で の倍数以外の値をすべて表示 ( ただし 条件式は つだけ使うこと :for 文を工夫!) int x=0, s=0; int y=0, s=0; for( n=0; n<=0; n+= ){ if( n%!=0 ) printf( %d n, n); printf("test n"); for( ; s!=; x+= ){ s+=x; printf(" s=%d n", s); printf("test n"); for( ; s< ; y+= ){ s+=y; printf(" s=%d n", s);
for 文の特殊な使い方 () int z=; printf(" を入力し Enter キーを押す これを繰り返してください n"); printf(" 他の整数値を入力しても良いですが 記号や文字は入力しないでください n"); for( ; z== ; ){ scanf("%d",&z); printf(" 入力した数値は [%d] です n",z); for 文の特殊な使い方 (: 文字列の知識が必要 ) #include <conio.h> //getch() 用 char ch='y'; printf("yだけ押し続けてください n"); for( ; ch==' y' ; ){ ch=getch(); //scanf("%c",&ch); getchar(); printf(" 入力文字は [%c] です n",ch); C 言語 while 文による繰り返し (a) 0 以下の値がキーボード入力される間は 負 と表示するプログラム (b) 0 以下 または 以上が入力される間は を表示するプログラム (c) (b) を用い switch 文の例題において n=,,, 以外の数値が入力されている間は繰り返しキーボード入力を要求するプログラム 解答例 : while 文による繰り返し (a) 0 以下の値がキーボード入力される間は 負 と表示するプログラム while( n<=0 ){ printf( 負 n ); 解答例 : while 文による繰り返し (b) 0 以下 または 以上が入力される間は を表示するプログラム while( n<=0 n>= ){ printf( n ); int n = -; 解答例 : while 文による繰り返し while( n<=0 n>= ){ //!(n>0 && n<=) でもよい printf( 整数値を入力してください : ); switch( n ){ case : printf( おはよう n ); break; case : printf( こんにちは n ); break; case : printf( こんばんは n ); break; default: printf( おやすみなさい n ); (c) n に ~ 以外の整数値が入力されている間は繰り返しキーボード入力を要求するプログラム 8
do 文と while 文の違い while 文のプログラム (a) を do 文に書き換えて実行 ( 負の値と正の値を入力してみる ) すると? while( n<=0 ){ printf( 負 n ); do { printf( 負 n ); while( n<=0 ); 9 do 文と while 文による繰り返し ( 検討 ) 以下の つのプログラム ( から読み込んだ整数値までを加算し その結果を表示 ) について次の値を入力実行し do 文と while 文の違いを考えよ 入力値 :, 0, - int i=, sum=0, x; printf(" 整数値を入力してください :"); scanf("%d",&x); while( i <= x ){ do{ while( i<=x ); printf("0 から %d までの合計は %d です n", x, sum ); 0 x に - を代入した場合をトレース while 文の場合 start loop i なし sum 0 なし x - なし int i=, sum=0, x; printf(" 整数値を入力してください :"); scanf("%d",&x); while( i <= x ){ do{ while( i<=x ); printf("0 から %d までの合計は %d です n", x, sum ); do 文の場合 start loop loop i なし sum 0 なし x - - なし for, do, while 文の確認練習 (c-) while 文を使って の n 乗を求めるプログラム for, do, while 文の確認練習 (c-) while 文を使って の n 乗を求めるプログラム for 文による 重ループの練習 int i=0, n, x=; printf(" の何乗を求めますか?:"); scanf("%d",&n); while( i<n ){ x*=; printf(" の n 乗は %d です n", x); ( 問 ) 九九を以下のようにすべて表示する 例 : 8 9 8 0 8 9 8 9 8 8
for 文による 重ループの練習 ( 問 ) 九九をすべて表示する int y, x, ans; for( y=; y<0; y++ ){ for( x=; x<0; x++ ){ ans = y*x; printf("%d", ans ); 次元配列の確認練習 以下の気温を temp[] 変数に入力し 日月火水木金土 0 8 (a) 8 度以上の気温をすべて表示する (while 文 ) (b) 日間の平均気温を求める (for 文 ) (c) 気温の最小値を求める 変数の型は適当と思われるものを考えること 右上の数値 : 日付 次元配列の確認練習 以下の気温を temp[] 変数に入力し (a) 8 度以上の気温をすべて表示する (while 文 ) int i, temp[]; for( i=0; i<; i++){ printf("%d 日の気温 :",i+); scanf("%d", &temp[i] ); i=0; printf("8 以上の気温 :"); while( i< ){ if( temp[i]>=8 ) printf(" %d", temp[i]); 次元配列の確認練習 以下の気温を temp[] 変数に入力し (b) 日間の平均気温を求める (for 文 ) int i, temp[], sum=0; for( i=0; i<; i++ ){ printf("%d 日の気温 :", i+); scanf("%d", &temp[i]); for( i=0; i<; i++ ){ sum+=temp[i]; // ここは sum=sum+temp[i]; でも良い printf(" 平均気温は %f です n", (double)sum/ ); 8 次元配列の確認練習 以下の気温を temp[] 変数に入力し (c) 気温の最小値を求める int i, temp[], min=99; //99 でなくとも良い for( i=0; i<; i++ ){ printf("%d 日の気温 :", i+); scanf("%d", &temp[i]); for( i=0; i<; i++ ){ if( min > temp[i] ) min=temp[i]; printf(" 最も低い気温は %d です n", min ); 9 次元配列の確認練習 以下のカレンダーについて 最初の 日の気温を変数 temp[][] の宣言時に初期設定し のこりの 日の気温を手入力する その後 曜日毎の平均気温を変数 week[] に格納 表示せよ 日月火水木金土 8 0 9 8 0 0 9 右上の数値 : 日付 変数の型は適当と思われるものを考えること 0
次元配列の確認練習最初の 日の気温を変数 temp[][] に初期設定し のこり 日を手入力する 曜日毎の平均気温を変数 week[] に格納 表示 int i, temp[][]={,0,8,,,,; double week[]; for( i=0; i<; i++ ){ printf("%d 日の気温 :", i+8); scanf("%d", &temp[][i]); printf(" 平均気温は :"); for( i=0; i<; i++ ){ week[i] = (double) ( temp[0][i] + temp[][i] ) / ; printf(" %.f ", week[i] ); 関数の練習 ( 引数なし 戻り値なし ) ( 問 ) func() 関数を作成し 次の main 関数内を func() 関数の呼び出しと のみにせよ for( i=; i<0; i++ ){ printf("%d", i ); func( ); 関数の練習 ( 引数なし 戻り値なし ) ( 問 ) func() 関数を作成し 次の main 関数内を func() 関数の呼び出しと のみにせよ void func( void ); func( ); void func( void ){ for( i=; i<0; i++ ){ printf("%d", i ); 関数の練習 ( 引数あり 戻り値なし ) ( 問 ) 次の赤文字部分を func() 関数として作成せよ int i, j; printf( -9の整数を入力してください : ); for( i=; i<0; i++ ){ printf("%d", j*i ); C 言語 関数の練習 ( 引数あり 戻り値なし ) ( 問 ) 次の赤文字部分を func() 関数として作成せよ void func( int k ); int j; printf( -9 の : ); func( j ); void func( int k ) { C 言語 for( i=; i<0; i++ ){ printf("%d", k*i ); 関数の練習 ( 引数あり 戻り値あり ) ( 問 ) 次の赤文字部分を func() 関数として作成せよ int i, j, sum=0; printf( -9の整数を入力してください : ); for( i=; i<0; i++ ){ printf("%d", j*i ); sum+=j*i; printf( sum=%d n,sum); C 言語
関数の練習 ( 引数あり 戻り値あり ) ( 問 ) 次の赤文字部分を func() 関数として作成せよ int func( int k ); int j, sum; printf( -9 の : ); sum = func( j ); printf( sum=%d n,sum); int func( int k ){ int i, sum = 0; for( i=; i<0; i++ ){ printf("%d", k*i ); sum += k*i ; return sum; C 言語 関数の練習 ( 次元配列の受け渡し 引数戻り値不要 ) ( 問 ) 次の赤文字部分を func() 関数として作成せよ double a[]={.0,.0,.0,.0,.0 ; for( i=0; i<; i++ ){ a[i] = a[i]*; for( i=0; i<; i++){ printf( a[%d]=%.f n, i, a[i]); C 言語 8 関数の練習 ( 次元配列の受け渡し 引数戻り値不要 ) ( 問 ) 次の赤文字部分を func() 関数として作成せよ void func( double x[] ); double a[] = {.0,.0,.0,.0,.0 ; func( a ); for( i=0; i<; i++ ){ printf( a[%d]=%.f n, i, a[i]); void func( double x[] ){ for( i=; i<; i++ ){ x[i] = x[i] * ; C 言語 9 関数の練習 ( 次元配列の受け渡し 引数戻り値不要 ) ( 問 ) 次の赤文字部分を func() 関数として作成せよ int a[][] = { {,,, {,,, y, x; for( y=0; y<; y++ ){ for( x=0; x<; x++ ){ a[y][x] = a[y][x] * ; for( y=0; y<; y++ ){ for( x=0; x<; x++ ){ printf( %d, a[y][x]); printf( n ); C 言語 0 関数の練習 ( 次元配列の受け渡し 引数戻り値不要 ) ( 問 ) 次の赤文字部分を func() 関数として作成せよ void func( int b[][] ); C 言語 int a[][]={ {,,, {,,, y, x; func( a ); for( y=0; y<; y++ ){ for( x=0; x<; x++ ){ printf( %d, a[y][x]); printf( n ); void func( int b[][] ){ int y, x; for( y=0; y<; y++ ){ for( x=0; x<; x++ ){ b[y][x] = b[y][x] * ;