もっとも短い C のプログラム(コンパイラでワーニングのでない)を作成せよ。
答えは asakawa.comp2a@gmail.com 宛に、件名「20080512-null-自分の学生番号」
として送信せよ。かならず自分宛に Cc: すること。
解答例
答えは asakawa.comp2a@gmail.com 宛に、件名は「20080512-digit-自分の学生番号」
とし、必ず自分宛に Cc: すること。
解答は各自異なるため省略
本日の課題をお送りします。
本日のハンドアウト3ページ目の問題をすべて解答せよ。すなわち
次の16進数の引き算を2の補数を使って足し算に直して計算せよ。
そしてその答えが10進数に直した場合の引き算と一致しているこ
とを確かめよ。
提出先は asakawa-comp2a@ml.twcu.ac.jp メールの件名は「20080519-自分の学生番号」とすること 提出を確認するため、必ず自分宛に Cc: しておくこと 提出期限は 5 月 25 日 23:59
本日(5月26日)の課題をお送りします。
次の二つのプログラムをコンパイルするとワーニングが出る。このプログ
ラムをワーニングが出ないように修正せよ。なお、修正の仕方は一通りで
はない。複数の修正方法が存在する。修正したプログラムを提出せよ。
複数の正解が存在するが、提出する修正したプログラムはそのうちの一つ
で良い。
提出先は asakawa-comp2a@ml.twcu.ac.jp、 件名は「20080526-自分の学生番号」とし、必ず @cis.twcu.ac.jp から送信 し、自分宛に Cc: しておくこと。
------------------------ ここから ----------------------------- #include <stdio.h> int main(void) { int hennakazu; printf("10進数を入力してください"); scanf("%lx", &hennakazu); printf("入力された数は %12lld です。\n", hennakazu); return 0; } ------------------------ ここまで -----------------------------
------------------------ ここから ----------------------------- #include <stdio.h> int main(void) { char char_var; short short_var; int int_var; long lint_var; long long int llint_var; printf("char 型の10進数を入力してください :"); scanf("%d", &char_var); printf("入力された数は %12d です。\n", char_var); printf("short 型の10進数を入力してください :"); scanf("%d", &short_var); printf("入力された数は %12d です。\n", short_var); printf("int 型の10進数を入力してください :"); scanf("%d", &int_var); printf("入力された数は %12d です。\n", int_var); printf("long int 型の10進数を入力してください :"); scanf("%d", &lint_var); printf("入力された数は %12d です。\n", lint_var); printf("long long int 型の10進数を入力してください :"); scanf("%d", &llint_var); printf("入力された数は %12d です。\n", llint_var); return 0; } ------------------- ここまで ----------------------------------
本日の課題をお送りします。今回の課題は正解が一つのため、メーリングリスト には解答を流さないでください。解答は asakawa.comp2a@gmail.com まで送っ てください。件名は「20080602-自分の学生番号」として、かならず自分宛に Cc: してください。提出期限は6月8日23:59までとします。
ーーーーーーーーーーここからーーーーーーーーーーーーーーーー #include <stdio.h> #include <float.h> int main(void) { float f; double x; long double ld; printf("\nTesting the precision of float, double, and long double : \n"); f = 1.0f + 1.0e-7; printf(" 1.0 + 1.0e-7 = %.10f\n", f); f = 1.0f + 1.0e-8; printf(" 1.0 + 1.0e-8 = %.10f\n", f); x = 1.0l + 1.0e-15; printf(" 1.0 + 1.0e-15 = %.20lf\n", x); x = 1.0l + 1.0e-16; printf(" 1.0 + 1.0e-16 = %.20lf\n", x); ld = 1.0L + 1.0e-19; printf(" 1.0 + 1.0e-19 = %.30Lf\n", ld); ld = 1.0L + 1.0e-20; printf(" 1.0 + 1.0e-20 = %.30Lf\n", ld); printf("\nThe experiment above is explained by constants from float.h :\n"); printf(" precision of float : %e\n", FLT_EPSILON); printf(" precision of double : %.15le\n", DBL_EPSILON); printf(" precision of long double : %.30Le\n", LDBL_EPSILON); return 0; } ーーーーーーーーーーここまでーーーーーーーーーーーーーーーー 表示された結果のうち、 1.0 + 1.0e-7 が 1.0000001 にならず、同様に 1.0 + 1.0e-15 が 1.000000000000001 にならず、 1.0 + 1.0e-19 が 1.0000000000000000001 という、きれいな数にならない理由を、FLT_EPSILON, DBL_EPSILON, LDBL_EPSILON との関係から考察せよ。解答例
ーーーーーーーーーここからーーーーーーーーーーーーーーーーー $ ./fixed_double doulbe 型の数を入力してください : 0.12345678 入力された数は 0.12346 です。 ーーーーーーーーーここまでーーーーーーーーーーーーーーーーー ここで 0.12345678 はキーボードから入力するものとする。解答例
ハンドアウト p.35 の演習 4.8 の tax.c, 演習 4.9 の triangle.c, 演習 4.10 の fahr2cel.c を作成せよ。
今回の課題も正解が一つのため、メーリングリストには解答を流さないでくだ さい。解答は浅川個人宛 asakawa.comp2a@gmail.com まで送ってください。 件名は「20080609-自分の学生番号」として、かならず自分宛にCc: してくだ さい。期限は 6 月 15 日 23:59 とします。
浅川です
本日 6 月 16 日分の課題をお送りします。例によって、課題の宛先は、 asakawa.comp2a@gmail.com です。件名は「20080616-自分の学生番号」 としてください。提出期限は 6 月 22 日 23:59 とします。
今回はやさしいなー(^_^)
#include <stdio.h> int main(void) { int a=2, b=3, c=4; ++a; b++; --c; c = a++ + ++b; printf("a=%d\n", a); printf("b=%d\n", b); printf("c=%d\n", c); c = ++a*b++; printf("a=%d\n", ++a); printf("b=%d\n", b++); printf("c=%d\n", --c); c = --a-(--b); return 0; }解答例
#include <stdio.h> int main(void) { int p, q, r, s; p = 0; p = (p && p); q = p || !p; r = (3.14 && 2.718) || ( p || q ); s = (r || s) && (p && q); return 0; }解答
/* 排他的論理和を解くプログラム xor.c */ #include <stdio.h> int main(void) { int p, q, x; printf("排他的論理和を解くプログラム\n"); printf("p の値を 0 か 1 かで入力してください:"); scanf("%d", &p); printf("q の値を 0 か 1 かで入力してください:"); scanf("%d", &q); x = printf("答えは %d です。\n", x); return 0; } サンプルオペレーションは以下の通りである。 $ ./xor 排他的論理和を解くプログラム p の値を 0 か 1 かで入力してください:0 q の値を 0 か 1 かで入力してください:0 答えは 0 です。 $ ./xor 排他的論理和を解くプログラム p の値を 0 か 1 かで入力してください:0 q の値を 0 か 1 かで入力してください:1 答えは 1 です。 $ ./xor 排他的論理和を解くプログラム p の値を 0 か 1 かで入力してください:1 q の値を 0 か 1 かで入力してください:0 答えは 1 です。 $ ./xor 排他的論理和を解くプログラム p の値を 0 か 1 かで入力してください:1 q の値を 0 か 1 かで入力してください:1 答えは 0 です。
浅川です
本日の課題をお送りします。
本日の課題以下の通りです。例によって asakawa.comp2a@gmail.com に送って下さい。件名は「20080623-自分の学生番号」とし、必ず自分 宛に Cc: してください。期限はいつものとおりで、6 月 29 日 23:59 で す。
浅川です
本日分の課題をお送りします。頑張って解いてください。質問はいつでも歓 迎します。授業中にも言いましたが、最低限コンパイルエラーが出ないプロ グラムを提出してください。自分の頭の中で考えただけのプログラムではい けません。
例によって課題の提出先は asakawa.comp2a@gmail.com です。 件名は「20080630-自分の学生番号」とし、必ず自分宛に Cc: してください。 期限はいつものとおりで、7 月 06 日 23:59 です。
ただし 3 番の余力のある人向けのプログラムだけは、メーリングリストに流
してください。asakawa-comp2a@ml.twcu.ac.jp です。件名は
「20080630-factorial-自分の学生番号」とし、かならず自分宛に Cc: してく
ださい。
このプログラムだけメーリングリストに流してもらう意図ですが、追加ポイ
ントとして評価します。プログラムの独創性や完成度を評価します。つまり
早く提出すれば独創性が認められやすいことになります。加えて、自分より
先に提出されたプログラムを参考にして作っても良く、この場合まったく同
じプログラムを提出しても評価されません。より良いプログラムを作ってみ
てください。一度提出した人も再提出を認めます。
以下が実際の課題です。
#include <stdio.h> int main(void) { int i,j; printf(" 1 2 3 4 5 6 7 8 9\n"); printf("------------------------------\n"); for(i=2;i<=ここを書く printf("%1d:", i); for(j=1;j<=ここを書く printf("ここも書く } printf("ここも書く } return 0; }解答例
浅川です
本日分の課題をお送りします。例によって、課題は asakawa.comp2a@gmail.com 宛に送ってください。メールの件名は「20080707-自分の学生番号」としてくださ い。提出期限は 7 月 13 日 23:59 とします。
$ cc -o divisor divisor.c -Wall $ ./divisor 正の整数を入力してください:10 1 2 5 $ ./divisor 正の整数を入力してください:100 1 2 4 5 10 20 25 50 $ ./divisor 正の整数を入力してください:12 1 2 3 4 6
#include <stdio.h> #include <time.h> #include <stdlib.h> int main(void) { int i, face, one=0, two=0, three=0, four=0, five=0, six=0; time_t loadingtime; srand((unsigned)time(&loadingtime)); for ( i=0; i<6000; i++) { face = rand() % 6 + 1; switch(face) { case 1: ++one; break; case 2: ++two; break; case 3: ++three; break; case 4: ++four; break; case 5: ++five; case 6: break; } } printf("さいころの目 出現回数\n"); printf(" 1 %8d\n", one); printf(" 2 %8d\n", two); printf(" 3 %8d\n", three); printf(" 4 %8d\n", four); printf(" 5 %8d\n", five); printf(" 6 %8d\n", six); return 0; }
浅川です
本日分の課題をお送りします。いつものとおり課題は asakawa.comp2a@gmail.com まで送ってください。締め切りは 3 週間先の 8 月 3 日 23:59 とします。 件名は「20080714-自分の学生番号」 3 週間分あるのでちょっと多めです(^_^;)
#include <stdio.h> double cube(double x); int main(void) { double x; printf("double 型の変数を一つ入力してください:"); scanf("%lf", &x); printf("3 乗は %lg です。\n", cube(x)); return 0; } int cube(double x) { return x * x * x; }
double square(double num) { double num; return num * num; }
**** **** **** ****