知能情報工学演習I 第9回(後半第3回) 課題の回答

Slides:



Advertisements
Similar presentations
知能情報工学演習 I 第 12 回( C 言語第6 回) 課題の回答 岩村雅一
Advertisements

プログラミング論 第八回数字の計算,整数の入出力. 本日の内容 前回の課題(続き) 前回の課題(続き) 数字の計算をする 数字の計算をする – 加減乗除を行う – インクリメント演算子とデクリメン ト演算子.
コンピュータープログラミング(C言語)(2) 1.文字列出力と四則演算 (復習) 2.関数と分割コンパイル
コンピュータープログラミング(C言語)(3) 1.関数と分割コンパイル (復習) 2.キーボード入力
情報基礎演習B 後半第5回 担当 岩村 TA 谷本君.
第2章 数値の入力と変数 scanfと変数をやります.
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
12: コマンドライン引数 C プログラミング入門 総機1 (月1) Linux にログインし、以下の講義ページ を開いておくこと
12: コマンドライン引数 C プログラミング入門 基幹7 (水5) Linux にログインし、以下の講義ページ を開いておくこと
プログラミング演習Ⅰ 課題2 10進数と2進数 2回目.
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
第2回 Microsoft Visual Studio C++ を使ってみよう
C言語講座 第3回 ポインタ、配列.
ちょっとした練習問題① 配列iroを['R', 'W', 'R', 'R', 'W' , 'W' , 'W']を宣言して、「W」のときの配列の番号をprintfで表示するようなプログラムを記述しなさい。
岩村雅一 知能情報工学演習I 第11回(後半第5回) 岩村雅一
プログラミング応用 printfと変数.
知能情報工学演習I 第9回( C言語第3回) 課題の回答
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
岩村雅一 知能情報工学演習I 第8回(C言語第2回) 岩村雅一
知能情報工学演習I 第12回(後半第6回) 課題の回答
今までの練習問題の復習.
第13章 文字の取り扱い方 13.1 文字と文字型変数 13.2 文字列 13.3 文字型配列への文字列の代入
第13章 文字の取り扱い方 13.1 文字と文字型関数 13.2 文字列 13.3 文字型配列への文字列の代入
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
知能情報工学演習I 第8回( C言語第2回) 課題の回答
四則演算,変数 入力文,出力文,代入文, ライブラリ関数
プログラミング基礎B 文字列の扱い.
岩村雅一 知能情報工学演習I 第11回(後半第5回) 岩村雅一
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
2013年度 プログラミングⅡ ~ 計算してみよう ~.
2015年度 プログラミングⅡ ~ 計算してみよう ~.
整数データと浮動小数データ.
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
岩村雅一 知能情報工学演習I 第12回(C言語第6回) 岩村雅一
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
C言語 はじめに 2016年 吉田研究室.
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
プログラミング序論演習.
地域情報学 C言語プログラミング 第2回 変数・配列、型変換、入力 2017年10月20日
知能情報工学演習I 第7回(後半第1回) 課題の回答
知能情報工学演習I 第11回( C言語第5回) 課題の回答
高度プログラミング演習 (09).
復習 Cにおけるループからの脱出と制御 break ループを強制終了する.if文と組み合わせて利用するのが一般的. continue
第13章 文字の取り扱い方 13.1 文字と文字型変数 13.2 文字列 13.3 文字型配列への文字列の代入
ファイルの読み込み, ファイルからのデータの取り出し, ファイルの書き出し
高度プログラミング演習 (11).
C言語講座 制御(選択) 2006年 計算技術研究会.
標準入出力、変数、演算子、エスケープシーケンス
知能情報工学演習I 第8回(後半第2回) 課題の回答
cp-3. 計算 (C プログラミング演習,Visual Studio 2019 対応)
第4章 double 小数型の変数;.
プログラミング 4 文字列.
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
岩村雅一 知能情報工学演習I 第8回(C言語第2回) 岩村雅一
岩村雅一 知能情報工学演習I 第12回(後半第6回) 岩村雅一
知能情報工学演習I 第12回( C言語第6回) 課題の回答
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
第7章 そろそろ int 以外も使ってみよう! ~データ型 double , bool~
第3回簡単なデータの入出力.
四則演算,変数 入力文,出力文,代入文, ライブラリ関数
printf・scanf・変数・四則演算
知能情報工学演習I 第11回(後半第5回) 課題の回答
知能情報工学演習I 第9回(後半第3回) 課題の回答
岩村雅一 知能情報工学演習I 第13回(後半第7回) 岩村雅一
知能情報工学演習I 第10回( C言語第4回) 課題の回答
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
12: コマンドライン引数 C プログラミング入門 基幹2 (月4) Linux にログインし、以下の講義ページ を開いておくこと
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
Presentation transcript:

知能情報工学演習I 第9回(後半第3回) 課題の回答 岩村雅一 masa@cs.osakafu-u.ac.jp

課題1 10進数の整数を入力し、8進数と16進数を出力するプログラムを作りなさい。 #include<stdio.h> int main(void){ int a; printf(“10進数を入力: "); scanf("%d",&a); printf("8進数: %o\n",a); printf("16進数: %x\n",a); return 0; } 10進数の整数を入力し、8進数と16進数を出力するプログラムを作りなさい。

課題2 double型なので 角度を入力させ、その余弦(cosine)を返すプログラムを作りなさい。 #include<stdio.h> #include<math.h> int main(void){ double deg, rad; printf("角度を入力してください\n"); scanf("%lf", &deg); rad=deg*M_PI/180.0; printf("cos(%f°)=%fです。\n",deg, cos(rad)); return(0); } 角度を入力させ、その余弦(cosine)を返すプログラムを作りなさい。 #include <math.h>のM_PIを使うことができる。

課題2:実際にあった間違い ラジアンへの変換に失敗している。 printfでdouble型の変数を表示するときに%lfと指定している。 float a; printf("角度を入力して下さい。:"); scanf("%f",&a); a=a*M_PI; printfでdouble型の変数を表示するときに%lfと指定している。 double theta, thetarad; … printf("cos %lf = %lf\n", theta, cos(thetarad)); gccではちゃんと動いたが、printfのときはdouble型もfloat型も%fを使う。

課題3 身長、体重、名前を入力し、名前とBMIを返すプログラムを作りなさい。 出力例:「◯◯さんのBMIは◯◯です。」 #include<stdio.h> int main(void) { float h, w; char name[100]; printf("名前: "); scanf("%s", name); printf("身長(m): "); scanf("%f", &h); printf("体重(kg): "); scanf("%f", &w); printf("%sさんのBMIは%fです。\n", name, w/(h*h)); return 0; } 身長、体重、名前を入力し、名前とBMIを返すプログラムを作りなさい。 出力例:「◯◯さんのBMIは◯◯です。」

課題3:実際にあった間違い(その1) scanfで文字列を入力するときに、&をつける。 char name[100]; scanf("%s",&name); gccだと、何故か動く(サービス?)けど、本来は間違い。他のコンパイラで動く保証がない(はずな)ので注意。 scanfで文字列を入力するときに、int型の配列を使う。 int n[80]; scanf("%s",n); コンパイルが通ったし、動いたけど、初めて見た。 「man scanf」をしてもらえばわかるけど(現時点ではわからないか^^)、scanfはchar型の配列を扱うものなので、間違い。

課題3:実際にあった間違い(その2) 文字列をscanfで読み込むときにfloat型(int型)の変数(配列ではない)を使っている。 printfで文字列を表示するときにfloat型の変数のアドレスを渡している。 float a; printf("名前は?:",&a); scanf("%s",&a); printf("%sさんのBMIは",&a); char a; printf("%sさんのBMI値は%fです\n", &a,c/b/b); ?

課題3:実際にあった間違い(その3) 間違いではないが、文字列の入力にgetsという関数を使っている人がいたが、なるべく使わない方がいい。 参考:man getsより gets() は絶対に使用してはならない。前もってデータを知 る こ と な し にgets() が何文字読むかを知ることはできず、 gets() がバッファの終わりを越えて書き込み続けるため、 gets() を使うのは極めて危険である。これを利 用してコンピュータのセキュリティが破られてきた。代わりに fgets() を使うこと。

課題4 float int 整数を入力し、10の位を四捨五入するプログラムを作りなさい。 例:123を入力すると、100を返す。789を入力すると、800を返す。 回答例1: float型で入力 回答例2: int型で入力 #include<stdio.h> int main(void) { float a; printf("Input: "); scanf("%f",&a); printf("%dの四捨五入は%d\n", (int)a, (int)(a/100.0+0.5)*100); return 0; } #include<stdio.h> int main(void) { int a; printf("Input: "); scanf("%d",&a); printf("%dの四捨五入は%d\n", a, (a+50)/100*100); return 0; } float int 123.0 / 100.0 + 0.5  1.73 123 + 50  173 173 / 100  1 1.73  1