今までの練習問題の復習.

Slides:



Advertisements
Similar presentations
オブジェクト指向言語・ オブジェクト指向言語演習 中間試験回答例. Jan. 12, 2005 情報処理技術基礎演習 II 2 オブジェクト指向言語 中間試験解説 1  (1) 円柱の体積(円柱の体積 = 底面の円の面積 x 高さ) を求めるプログラムを作成しなさい。ただし、出力結果は、入 力した底面の円の半径.
Advertisements

復習 配列変数の要素 5は配列の要素数 これらの変数をそれぞれ配列の要素と呼ぶ この数字を配列の添え字,またはインデックスと呼ぶ
配列(2) 第10回[平成15年6月26日(木)]:PN03-10.ppt 今日の内容 1 素数を求める(教科書の例):復習
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
基礎プログラミングおよび演習 第9回
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
C言語講座 第4回 ポインタ.
第8回 プログラミングⅡ 第8回
理由:文字数より要素数の多い配列を用いた時に,文字列の最後を示すため
理由:文字数より要素数の多い配列を用いた時に,文字列の最後を示すため
問題 1 キーボードから入力した数の合計を計算するプログラムを 作成せよ。最初に、何個の数を入力するかその数を入力 するようにする。
精密工学科プログラミング基礎 第9回資料 (12/11 実施)
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
プログラミング入門2 第2回 型と演算 条件分岐 篠埜 功.
C言語講座 第3回 ポインタ、配列.
プログラミング演習 バージョン1 担当教員:綴木 馴.
ちょっとした練習問題① 配列iroを['R', 'W', 'R', 'R', 'W' , 'W' , 'W']を宣言して、「W」のときの配列の番号をprintfで表示するようなプログラムを記述しなさい。
プログラミング2 関数
岩村雅一 知能情報工学演習I 第11回(後半第5回) 岩村雅一
プログラミング応用 printfと変数.
プログラミング論 II 2008年10月30日 文字列
第10章 これはかなり大変な事項!! ~ポインタ~
プログラミング入門2 第2回 型と演算 条件分岐 篠埜 功.
知能情報工学演習I 第9回( C言語第3回) 課題の回答
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
高度プログラミング演習 (03).
前回の練習問題.
知能情報工学演習I 第9回(後半第3回) 課題の回答
第7回 プログラミングⅡ 第7回
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
知能情報工学演習I 第8回( C言語第2回) 課題の回答
地域情報学 C言語プログラミング 第5回 ポインタ、関数、ファイル入出力 2017年11月17日
復習 2次元配列 4列 j = 0 j = 1 j = 2 j = 3 i = 0 i = 1 i = 2 3行
プログラミング基礎B 文字列の扱い.
岩村雅一 知能情報工学演習I 第11回(後半第5回) 岩村雅一
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
精密工学科プログラミング基礎Ⅱ 第4回資料 今回の授業で習得してほしいこと: 文字列の扱い ファイル入出力の方法 コマンドライン引数の使い方
整数データと浮動小数データ.
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
岩村雅一 知能情報工学演習I 第12回(C言語第6回) 岩村雅一
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
疑似乱数, モンテカルロ法によるシミュレーション
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
プログラミング序論演習.
IF文 START もしも宝くじが当たったら 就職活動する 就職活動しない YES END NO.
復習 breakとcontinueの違い int i; for (i = 1; i <= 100; i++) { ・・・処理1・・・・
復習 Cにおけるループからの脱出と制御 break ループを強制終了する.if文と組み合わせて利用するのが一般的. continue
復習 breakとcontinueの違い int i; for (i = 1; i <= 100; i++) { ・・・処理1・・・・
プログラミング入門2 第5回 配列 for文 変数宣言 初期化
地域情報学 C言語プログラミング 第3回 入力、if文、for文 2016年11月25日
ループだよ!難しいよ! 第5章 while(ループ);.
知能情報工学演習I 第8回(後半第2回) 課題の回答
cp-15. 疑似乱数とシミュレーション (C プログラミング演習,Visual Studio 2019 対応)
岩村雅一 知能情報工学演習I 第12回(後半第6回) 岩村雅一
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
地域情報学 C言語プログラミング 第3回 入力、if文、for文 2017年11月1日
四則演算,変数 入力文,出力文,代入文, ライブラリ関数
プログラミング入門2 第5回 配列 変数宣言、初期化について
第2章 数値の入力と変数 scanfと変数をやります.
知能情報工学演習I 第11回(後半第5回) 課題の回答
知能情報工学演習I 第9回(後半第3回) 課題の回答
岩村雅一 知能情報工学演習I 第13回(後半第7回) 岩村雅一
分岐(If-Else, Else if, Switch) ループ(While, For, Do-while)
知能情報工学演習I 第10回( C言語第4回) 課題の回答
プログラミング演習I 補講用課題
第1章 文字の表示と計算 printfと演算子をやります 第1章 文字の表示と計算.
第1章 文字の表示と計算 printfと演算子をやります.
= 55 課題6-1 #define _CRT_SECURE_NO_WARNINGS
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
Presentation transcript:

今までの練習問題の復習

第3回

ちょっとした練習問題① 整数の変数a=123と実数の変数b=0.456を加算した結果a+bをprintfで表示しなさい。小数点以下は6桁まで表示すること。

#include <stdio.h> int main(void){ int a = 123; double b = 0.345; printf("%.6f \n", a+b); return 0; }

ちょっとした練習問題② BMI = w ÷ h2 sd = 22 × h2 f = (w - sd) ÷ sd ×100 身長h(m)と体重w(kg)を変数に代入して、BMIと肥満度f(%)を計算し、身長、体重、BMIそして肥満度を表示する。 BMI = w ÷ h2 sd = 22 × h2 f = (w - sd) ÷ sd ×100

#include <stdio.h> int main(void) { double h = 1.7; double w = 65.0; double BMI = w / (h * h); double sd = 22 * h * h; double f = ((w - sd) / sd) * 100; printf("%f m, %fkg\n", h, w); printf("BMI = %f \n", BMI); printf("肥満度 = %f \n", f); return 0; }

第4回

ちょっとした練習問題① ( a + b ) * c / b を計算するプログラムを作りなさい。ただし、a = 5.36、b = 8.47、c = 5.789 とする。 また、計算結果は、 printf( "結果 = %f\n", 「計算結果が格納されている変 数」 ); を用いて画面出力しなさい。

練習問題①の解答 #include <stdio.h> int main(void){ double a=5.36, b = 8.47, c = 5.789; printf("答え%lf \n", ( a + b ) * c / b); return 0; }

ちょっとした練習問題② 468円の買い物をして1万円札を出したときのお釣りの札と硬貨の枚数をもとめなさい。 また、計算結果は、 printf( "○円礼の枚数 = %d\n", 「計算結果が格納さ れている変数」 ); を用いてそれぞれ画面出力しなさい。

#include <stdio.h> int main(void) { int turi = 10000; turi -= 468; printf("おつり = %d\n", turi); printf("五千円礼の枚数 = %d\n", turi / 5000); turi %= 5000; printf("千円礼の枚数 = %d\n", turi / 1000); turi %= 1000; printf("五百円玉の枚数 = %d\n", turi / 500); turi %= 500; printf("百円玉の枚数 = %d\n", turi / 100); turi %= 100; printf("五十円玉の枚数 = %d\n", turi / 50); turi %= 50; printf("十円玉の枚数 = %d\n", turi / 10); turi %= 10; printf("一円玉の枚数 = %d\n", turi); return 0; }

ちょっとした練習問題③ 1個 3000円の品物Aを 1200個と、1個 5000円の品物Bを800個購入したときの合計金額、および、品物Aを800個と品物Bを1200個購入したときの合計金額をもとめなさい。 また、計算結果は、 printf( "結果 = %ld\n", 「計算結果が格納されている変 数」 ); を用いてそれぞれ画面出力しなさい。

練習問題③の解答 #include <stdio.h> int main(void){ int a = 3000, b = 5000; a *= 1200; b *= 800; printf("結果 = %ld\n", a+b); return 0; }

第5回

ちょっとした練習問題① for文の二重ループを使って「1×1=答え」から「9 × 9=答え」となるような九九の計算を表示させるようなプログラムを記述せよ。

#include <stdio.h> int main(void) { for (int i = 1; i <= 9; i++) for (int j = 1; j <= 9; j++) printf(" %d × %d = %d\n", i, j, i*j); return 0; }

ちょっとした練習問題② Aさん、Bさん、Cさん、Dさん、Eさんの5人が同時にじゃんけんをします。(リーグ戦やトーナメント戦ではない)その5人の出した手をそれぞれ入力とし、それぞれの勝敗を判定するプログラムを作成してください。出力はprintfで「○さんの勝ち」、「○さんの負け」、「あいこです」と表示するプログラムとします。

//ビット演算(グー0x01、チョキ0x02、パー0x04) int a = 0x01, b = 0x02, c = 0x01, d = 0x01, e = 0x02; int ans = a | b | c | d | e; if (ans == 0x01 || ans == 0x02 || ans == 0x04 || ans == 0x07) { printf("あいこ\n"); } else if (ans == 0x03) { if (a == 0x01) { printf("Aさんの勝ち\n"); else { printf("Aさんの負け\n"); if (b == 0x01) { printf("Bさんの勝ち\n"); printf("Bさんの負け\n"); if (c == 0x01) { printf("Cさんの勝ち\n"); printf("Cさんの負け\n"); if (d == 0x01) { printf("Dさんの勝ち\n"); printf("Dさんの負け\n"); if (e == 0x01) { printf("Eさんの勝ち\n"); printf("Eさんの負け\n"); else if (ans == 0x06) { if (a == 0x02) { printf("Aさんの勝ち\n"); } else { printf("Aさんの負け\n"); if (b == 0x02) { printf("Bさんの勝ち\n"); printf("Bさんの負け\n"); if (c == 0x02) { printf("Cさんの勝ち\n"); printf("Cさんの負け\n"); if (d == 0x02) { printf("Dさんの勝ち\n"); printf("Dさんの負け\n"); if (e == 0x02) { printf("Eさんの勝ち\n"); printf("Eさんの負け\n"); else if (ans == 0x05) { if (a == 0x04) { printf("Aさんの勝ち\n"); } else { printf("Aさんの負け\n"); if (b == 0x04) { printf("Bさんの勝ち\n"); printf("Bさんの負け\n"); if (c == 0x04) { printf("Cさんの勝ち\n"); printf("Cさんの負け\n"); if (d == 0x04) { printf("Dさんの勝ち\n"); printf("Dさんの負け\n"); if (e == 0x04) { printf("Eさんの勝ち\n"); printf("Eさんの負け\n");

ちょっとした練習問題③ モンテカルロ法を使って円の面積を計算して円周率を求めます。円の面積はπ×半径×半径です。半径を1としたときの円の面積はπとなります。またその円に内接するような正方形は1辺が円の直径となり、縦×横、2×2で面積は4となります。となると近似でπ = 4と考えることもできます。 続く

モンテカルロ法はランダム(乱数)を用いたシミュレーションです。本問題ではx座標、y座標にランダムで点を打ち、下のグラフのように「x モンテカルロ法はランダム(乱数)を用いたシミュレーションです。本問題ではx座標、y座標にランダムで点を打ち、下のグラフのように「x*x + y*y <= 1」のときの点が円の面積の内側にある点として、円の面積を4×(円の内側の点)/(正方形にあるすべての点)で近似することができます。以上のようにしてモンテカルロ法で点すべての数を10000、10000、100000で増加させて円周率の値を求めるようなプログラムを作成してください。

モンテカルロ法の図

srand(time(NULL)); double x, y; int max = 1000000, cnt = 0; for (int i = 0; i < max; i++) { x = rand() / 32767.0; y = rand() / 32767.0; if (x * x + y * y <= 1.0) cnt++; } printf("答え = %lf \n", 4.0 * (double)cnt / (double)max); return 0;

第6回

ちょっとした練習問題① 配列iroを['R', 'W', 'R', 'R', 'W' , 'W' , 'W']を宣言して、「W」のときの配列の番号をprintfで表示するようなプログラムを記述しなさい。

#include <stdio.h> int main(void){ char iro[] = {'R', 'W', 'R', 'R', 'W' , 'W' , 'W'}; for(int i = 0; i < 7; i++) if(iro[i] == 'W') printf("Wは配列の%d番目です \n", i); return 0; }

ちょっとした練習問題② 二次元配列を使って以下に示す' '(1文字空白)と'#'(シャープ)でつくられた図をprintfで表示するプログラムを記述しなさい。

#include <stdio.h> int main(void) { char a[10][10]; int x, y; for (x = 0; x < 10; x++) for (y = 0; y < 10; y++) a[x][y] = ' '; for (x = 0; x < 10; x++) { a[x][0] = '#'; a[x][8] = '#'; } for (y = 0; y < 9; y++) { a[0][y] = '#'; a[9][y] = '#'; for (y = 2; y < 4; y++) { a[2][y] = '#'; a[3][y] = '#'; a[6][y] = '#'; a[7][y] = '#'; } for (x = 3; x < 7; x++) a[x][6] = '#'; a[3][5] = '#'; a[6][5] = '#'; for (y = 0; y < 10; y++) { for (x = 0; x < 10; x++) { printf("%c", a[x][y]); printf("\n"); return 0;

ちょっとした練習問題③ 配列animの0番目が"ぞう"、1番目が"きりん"、2番目が"わに"、3番目が"ぱんだ"、4番目が"チンパンジー"となるように宣言をし、animで宣言した動物のすべてをprintfで表示となるプログラムを記述しなさい。

#include <stdio.h> int main(void) { char anim[5][15] = { "ぞう", "きりん", "わに", "ぱんだ", "チンパンジー" }; for (int i = 0; i < 5; i++) printf("%s \n", anim[i]); return 0; }

ちょっとした練習問題④ 0~99の範囲の10個の整数をランダムに生成して、小さい順に並び替えるプログラムを作成しなさい。このとき、C言語のライブラリ関数(qsort()など)を使わないこと。

#include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { srand(time(NULL)); int a[10]; int i, j, temp; for (i = 0; i < 10; i++) a[i] = rand() % 100 + 1; for (i = 0; i < (10 - 1); i++) { for (j = (10 - 1); j > i; j--) { if (a[j - 1] > a[j]) { temp = a[j - 1]; a[j - 1] = a[j]; a[j] = temp; } for (int i = 0; i < 10; i++) printf("%d \n", a[i]); return 0;

ちょっとした練習問題⑤ 4人の学生の3科目のテスト2回の合計を求めて表示するプログラムを作成しなさい。点数を格納するのは3次元配列tensuとする。 int tensu[2][4][3] ={ { {91, 63, 78}, {67, 72, 46}, {89, 34, 53}, {32, 54, 34} }, { {97, 67, 82}, {73, 43, 46}, {97, 56, 21}, {85, 46, 35} }, };

#include <stdio.h> int main(void) { int tensu[2][4][3] = { { { 91, 63, 78 },{ 67, 72, 46 },{ 89, 34, 53 },{ 32, 54, 34 } }, { { 97, 67, 82 },{ 73, 43, 46 },{ 97, 56, 21 },{ 85, 46, 35 } }, }; int i, j, k, sum = 0; for (i = 0; i < 2; i++) { for (j = 0; j < 4; j++) { for (k = 0; k < 3; k++) { sum += tensu[i][j][k]; } printf("sum = %d \n", sum); return 0;

ちょっとした練習問題⑥ 文字列s内のすべての数字文字を削除するプログラムを作成しなさい。格納された文字列は"AB1C93D"とする

#include <stdio.h> #include <string.h> int main(void) { char s[] = "AB1C93D"; char a[10]; int i, cnt = 0; for (i = 0; i < 10; i++) { if ('0' <= s[i] && s[i] <= '9') { continue; } else { a[cnt] = s[i]; cnt++; printf("%s \n", a); return 0;

第7回

ちょっとした練習問題① 関数seki( x, y)を「x * y」を戻り値として宣言し、25と10を実引数とした関数sekiを実行して結果をmainにおけるprintf()で表示するプログラムを記述しなさい。

#include <stdio.h> int seki(int x, int y) { return x * y; } int main(void) { printf("%d \n", seki(25, 10)); return 0;

ちょっとした練習問題② 以下のプログラムの赤字の部分のみを関数とするようなプログラムを記述しなさい。 #include <stdio.h> int main( void ){ int a, b, c; puts( "二つの整数値を入力 " ); scanf( "%d %d", &a, &b ); if ( a <= b ) { c = a; }else { c = b; } printf( "小さい方 = %d\n", c ); return 0;

#include <stdio.h> int min2(int, int); int main(void) { int a, b; puts("二つの整数値を入力 "); scanf("%d %d", &a, &b); printf("小さい方 = %d\n", min2(a, b)); return 0; } int min2(int a, int b) { int c; if (a <= b) { c = a; }else { c = b; return c;

ちょっとした練習問題③ 1文字を引数として、その文字がアルファベット小文字であれば大文字に変換して返す関数を作成しなさい。(小文字でなければそのままを返す) その関数を使用して、入力された文字列を大文字に変換して表示しなさい。

#include <stdio.h> char ToUpper(char ch) { if ('a' <= ch && ch <= 'z') { return ch - ('a' - 'A'); }else { return ch; } int main(void) { char str[100]; scanf("%s", str); for (int i = 0; str[i]; i++) str[i] = ToUpper(str[i]); printf("%s\n", str); return 0;