もっとも短い 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;
}
**** **** **** ****