Try   HackMD

C 語言自學經典 - 解答篇

開發環境

$ gcc --version gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0

課後練習1

#include <stdio.h> int main(int argc, const char *argv[]) { int year; scanf("%d", &year); if (year % 4 == 0 && year % 100 != 0) printf("yes\n"); else if (year % 400 == 0) printf("yes\n"); else printf("no\n"); return 0; }

課後練習2

#include <stdio.h> int main(int argc, const char *argv[]) { int size; while (1) { scanf("%d", &size); if (size % 2 != 1) printf("not odd number!\n"); else break; } int spaceCount = 0; while (size >= 1) { for (int i = 0; i <= spaceCount; i++) printf(" "); for (int i = 0; i < size; i++) printf("*"); putchar('\n'); size -= 2; spaceCount += 1; } return 0; }

課後練習3

#include <stdio.h> int main(int argc, const char *argv[]) { const int size = 10; int arr[size]; for (int i = 0; i < size; i++) { scanf("%d", &arr[i]); } for (int i = 0; i < size; i++) { if (i % 2) printf("%d ", arr[i] / 2); else printf("%d ", arr[i] * 2); } putchar('\n'); return 0; }

課後練習4

#include <stdio.h> int main(int argc, const char *argv[]) { char input[1010]; char result[1010]; int testcase; scanf("%d", &testcase); for (int t = 0; t < testcase; t++) { scanf("%s", input); int resultCounter = 0; int i = 0; while (input[i] != '\0') { if ((input[i] >= 65 && input[i] <= 90) || (input[i] >= 97 && input[i] <= 122)) { result[resultCounter++] = input[i]; } i += 1; } result[resultCounter] = '\0'; printf("Test case %d: %s\n", t + 1, result); } return 0; }

課後練習5

#include <stdio.h> #include <string.h> int arr[20][20]; void echo(int n) { for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { printf("%6d ", arr[i][j]); } putchar('\n'); } return; } int main(int argc, const char *argv[]) { int n; int map[4][2] = { {0, 1}, {1, 0}, {0, -1}, {-1, 0} }; memset(arr, 0, sizeof(int) * 20 * 20); scanf("%d", &n); if (n > 20) { printf("max size is 20. exit\n"); return 0; } int mapCounter = 0; int rwalk = 0, cwalk = 0; int counter = 1; while (counter <= n * n) { while ( (rwalk >= 0 && rwalk <= n - 1) && (cwalk >= 0 && cwalk <= n - 1) && arr[rwalk][cwalk] == 0) { arr[rwalk][cwalk] = counter++; rwalk += map[mapCounter][0]; cwalk += map[mapCounter][1]; } rwalk -= map[mapCounter][0]; cwalk -= map[mapCounter][1]; mapCounter = (mapCounter + 1) % 4; rwalk += map[mapCounter][0]; cwalk += map[mapCounter][1]; if (rwalk < 0) rwalk = 0; if (rwalk >= n) rwalk = n - 1; if (cwalk < 0) cwalk = 0; if (cwalk >= n) cwalk = n - 1; } echo(n); return 0; }

課後練習6

#include <stdio.h> int main(int argc, const char *argv[]) { int num; scanf("%d", &num); printf("0x%08x\n", num); printf("0x%08x\n", num >> 16 | num << 16); return 0; }
tags: clang