---5.1--- #include #include /* #include */ int main(void) { int h, w; scanf("%d%d", &h, &w); printf("長方形の対角線の長さ:%f", sqrt(h * h + w * w)); return EXIT_SUCCESS; } ---5.2--- #include #include #include /* double length(int h, int w); */ int main(void) { int h, w; scanf("%d%d", &h, &w); printf("長方形の対角線の長さ:%f", length(h, w)); return EXIT_SUCCESS; } double length(int h, int w) { return sqrt(h * h + w * w); } ---5.3--- #include #include double my_to_km(int mile, int yard); int main(void) { int m, y; printf("マイルとヤードを入力して下さい:"); scanf("%d%d", &m, &y); printf("%dマイル%dヤードは%.2fキロメートルです.\n", m, y, my_to_km(m, y)); return EXIT_SUCCESS; } double my_to_km(int mile, int yard) { return (mile + yard / 1760.0) * 1.6093; } ---5.4--- #include #include int isleap(int year); int main(void) { int y; printf("西暦年を入力して下さい:"); scanf("%d", &y); printf("西暦%d年は閏年", y); if (isleap(y)) printf("です.\n"); else printf("ではありません.\n"); return EXIT_SUCCESS; } int isleap(int year) { return (year % 400 == 0) || ((year % 100) && (year % 4 == 0)); } ---5.5--- #include #include int main(void) { int total(int year, int month, int day); int y, m, d; printf("西暦年月日を入力して下さい:"); scanf("%d%d%d", &y, &m, &d); printf("%d年%d月%d日の通算日数は%dです.\n", y, m, d, total(y, m, d)); return EXIT_SUCCESS; } int total(int year, int month, int day) { int isleap(int year); static char days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30}; int i; for (i = 1; i < month; i++) day += days[i - 1]; if (month > 2 && isleap(year)) day++; return day; } int isleap(int year) { return (year % 400 == 0) || ((year % 100) && (year % 4 == 0)); } ---5.6--- #include #include #include int maxval(int x[], int size); int main(void) { int a[100]; int i, n; printf("1以上100以下の整数を入力して下さい:"); scanf("%d", &n); assert(1 <= n && n <= 100); for (i = 0; i < n; i++) a[i] = rand(); for (i = 0; i < n; i++) { printf("%6d", a[i]); if ((i + 1) % 10 == 0) printf("\n"); } printf("最大値は%dです.\n", maxval(a, n)); return EXIT_SUCCESS; } int maxval(int x[], int size) { int i, m; m = x[0]; for (i = 1; i < size; i++) if (x[i] > m) m = x[i]; return m; } ---5.7--- #include #include #include void sort(int x[], int size); void display(int x[], int size); int main() { int a[100]; int n, i; printf("1以上100以下の整数を入力して下さい:"); scanf("%d", &n); assert(1 <= n && n <= 100); for (i = 0; i < n; i++) a[i] = rand(); printf("整列前:\n"); display(a, n); sort(a, n); printf("\n整列後:\n"); display(a, n); return EXIT_SUCCESS; } void sort(int x[], int size) { int i, j, min, w; for (i = 0; i < size; i++) { min = i; for (j = i + 1; j < size; j++) if (x[j] < x[min]) min = j; w = x[i]; x[i] = x[min]; x[min] = w; } } void display(int x[], int size) { int i; for (i = 0; i < size; i++) { printf("%6d", x[i]); if ((i + 1) % 10 == 0) printf("\n"); } if (size % 10) printf("\n"); } ---5.8--- #include #include #include long fib_a(int n); long fib_b(int n); int main() { int n; printf("0以上45以下の整数を入力して下さい:"); scanf("%d", &n); assert(0 <= n && n <= 45); printf("フィボナッチ数列の第%d項:%ld, %ld\n", n, fib_a(n), fib_b(n)); return EXIT_SUCCESS; } long fib_a(int n) { return n < 2 ? 1 : fib_a(n - 1) + fib_a(n - 2); } long fib_b(int n) { long e, f, w int i; e = 0; f = 1; for (i = 0; i < n; i++) { w = f; f += e; e = w; } return f; }