コンピュータ3Aの履修者の皆様 浅川です。遅くなりましたが本日分の課題をお送りします。いつものとおり、解答は asakawa_comp3a@cis.twcu.ac.jp に送ってください。その際メールの件名は 「20081222-自分の学生番号」とし、必ず自分宛に Cc: してください。課題提出 の締め切りは、冬休み中は情報処理教室が閉まるため、新年の第2週目の終わり 2009年1月10日23:59とします。 では課題です。2つあります。 1. 次のプログラムは、キーボードから 1,2,3,4 の数字を入力し 1 であればかけ算を 2 であれば足し算を、3 であれば引き算を、4 であれば剰余を計算するプログラムである。 このプログラムには一ヶ所だけ抜けている部分がある。この一ヶ所コメント文になっている 部分を補ってプログラムを完成させよ。 #include int f_mult(const int a, const int b); int f_add(const int a, const int b); int f_sub(const int a, const int b); int f_mod(const int a, const int b); int f_mult(const int a, const int b) { return a * b; } int f_add(const int a, const int b) { return a + b; } int f_sub(const int a, const int b) { return a - b; } int f_mod(const int a, const int b) { return a % b; } int main(void) { int a, b, func_num; int (*f_calc[4])(const int a, const int b) = {f_mult, f_add, f_sub, f_mod}; printf("かけ算の場合は 1\n"); printf("足し算の場合は 2\n"); printf("引き算の場合は 3\n"); printf("余りを計算する場合には 4 を入力して下さい:"); scanf("%d", &func_num); printf("2 つ整数をカンマで区切って入力してください: "); scanf("%d,%d", &a, &b); printf("答えは %d です\n", (*//ここにある関数名が入る[func_num-1])(a, b)); return 0; } 2. 次のプログラムは、二つの文字列をキーボードから入力し、strlen, strcmp, strcat のいずれかを使って文字列を操作するプログラムである。コメント文に 従って適切な関数を補ってプログラムを完成させよ。 #include #include #define NMAX 1024 int main(void) { int i; char str1[NMAX], str2[NMAX]; printf("文字列 1 を入力してください:"); fgets(str1, NMAX, stdin); for(i=0; str1[i] != '\n'; i++) ; str1[i]='\0'; printf("文字列 2 を入力してください:"); fgets(str2, NMAX, stdin); for(i=0; str2[i] != '\n'; i++) ; str2[i]='\0'; if ( //ここに文字列を比較する関数を入れよ(str1, str2) == 0 ) { printf("二つの文字列は同じです。\n"); } else { printf("二つの文字列は異なります。\n"); } printf("str1 の文字数は %d です。\n", //ここに文字列の長さを返す関数を入れよ(str1)); printf("str2 の文字数は %d です。\n", //ここに文字列の長さを返す関数を入れよ(str2)); //ここに文字列を連結する関数を入れよ(str1, str2); printf("二つの文字列を連結すると %s となります。\n", str1); return 0; }