文字列内の英小文字を英大文字に変換する関数を作成せよ。ただし「main」は以下をそのまま使用することとし、ctype.hで定義されている関数を用いてはならないものとする。文字コードはASCIIコードであるものとしてよい。(教科書にあるTable 8-2 JISコード表をそのまま用いて良い。)
注: 英小文字以外は変更されない事に気をつけてください。
#include <stdio.h>
int main(void){
char s[100] = "";
scanf("%99s", s);
str_toupper(s);
printf("%s\n", s);
return 0;
}
締切: 10/25 23:59
参考: 8-5
「complex_number」構造体は、複素数を表現する構造体であり、そのメンバとして実部を示す実数値realと虚部を示す実数値imaginaryを持つ。複素数同士の加算を行う関数「complex_number_add」及び乗算を行う関数「complex_number_multiply」を実装せよ。ただし、「main」及び構造体の定義は以下をそのまま使用せよ。
#include <stdio.h>
struct complex_number{
double real;
double imaginary;
};
int main(void){
struct complex_number a, b, c, d;
scanf("%lf %lf", &a.real, &a.imaginary);
scanf("%lf %lf", &b.real, &b.imaginary);
c = complex_number_add(a, b);
d = complex_number_multiply(a, b);
printf("%lf %lf\n", c.real, c.imaginary);
printf("%lf %lf\n", d.real, d.imaginary);
return 0;
}
締切: 10/25 23:59
参考:12章
以下のコードを実行しても、出力は入力と変わらない。関数の定義と適用の部分を修正し、意図通りに動く(mpを減らしてhpを増やす)プログラムを作成せよ。
#include <stdio.h>
struct wizard{
int hp;
int mp;
};
/* 関数の定義を修正 */
struct healing(struct wizard x){
if(x.hp <= 10){
x.hp += 100;
x.mp -= 10;
}
}
int main(void){
struct wizard x;
scanf("%d %d", &x.hp, &x.mp);
/* この行も書き換える */
healing(x);
printf("%d %d\n", x.hp, x.mp);
return 0;
}
注1) x = healing(x) とはしないこと。
締切: 10/25 23:59
参考: 10章、12章
5つの文字列を受け取って、それらを逆順に表示するプログラムを完成させよ。すなわち、"ab", "cd", "ef", "gh", "ij"という5つの文字列が入力が与えられたならば、"ij", "gh", "ef", "cd", "ab"の順番で出力されるようなプログラムを作成せよ。ただし、「main」は以下をそのまま使用することとし、各文字列は9文字以下であるとしてよい。
#include <stdio.h>
int main(void){
char a[5][10] = {"", "", "", "", ""};
int i;
for (i = 0; i < 5; i++)
scanf("%9s", a[i]);
reverse(a, 5);
for (i = 0; i < 5; i++)
printf("%s\n", a[i]);
return 0;
}
締切: 10/25 23:59
参考: 10-11章
まず、下記のような形式で保存されている、整数値が各行に一つずつ書かれているファイル"test.txt"を作成せよ(数字はこの通りでなくても良い)。作成したファイルを読み込んでファイル内の数字の平均値を計算し、得られた結果を異なるファイルに出力するプログラムを作成せよ。ただし、出力ファイル名はキーボードから入力できるようにするものとする(入力ファイル名はコード内に書いておくこと)。課題はコードのファイルのみ提出すること。
注: 平均値が整数であるとは限らない。数字が8個であるとも限らない。
1
23
85
11
10
5
37
64
締切: 10/25 23:59
参考: 13章