1. スコア判定プログラム
成績評価を行う関数を実装します。switch文を利用してスコアの階級分けを行います。
#include <stdio.h>
char get_grade(int score) {
switch (score / 10) {
case 10: case 9: return 'A';
case 8: return 'B';
case 7: return 'C';
case 6: return 'D';
default: return 'F';
}
}
int main() {
int score;
while (scanf("%d", &score) != EOF) {
printf("スコア: %d, 等級: %c\n", score, get_grade(score));
}
return 0;
}
2. 各桁の合計計算
数値の各桁の合計を求める処理を反復(ループ)構造で実装します。
int calculate_digit_sum(int num) {
int sum = 0;
while (num != 0) {
sum += num % 10;
num /= 10;
}
return sum;
}
3. 冪乗(べきじょう)の計算
分割統治法を用いて、指数計算を効率的に行います。
int power(int base, int exp) {
if (exp == 0) return 1;
if (exp % 2 == 1) return base * power(base, exp - 1);
int half = power(base, exp / 2);
return half * half;
}
4. 双子素数の抽出
100以内の双子素数(差が2である素数のペア)を探し出します。
int is_prime(int n) {
if (n < 2) return 0;
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) return 0;
}
return 1;
}
void find_twin_primes(int limit) {
for (int i = 2; i <= limit - 2; i++) {
if (is_prime(i) && is_prime(i + 2)) {
printf("%d, %d\n", i, i + 2);
}
}
}
5. パスカルの三角形(組み合わせ計算)
再帰を用いて組み合わせ $nCr$ を計算します。
int combination(int n, int r) {
if (r == 0 || r == n) return 1;
if (r > n) return 0;
return combination(n - 1, r) + combination(n - 1, r - 1);
}
6. 最大公約数の探索
複数の引数を受け取り、その最小値に注目して公約数を求めるアルゴリズムです。
int get_gcd_logic(int a, int b, int c) {
int min_val = (a < b) ? (a < c ? a : c) : (b < c ? b : c);
// 指定されたロジックに基づく実装
return min_val;
}
7. グラフィカルな出力処理
指定された階層数に応じて、図形を描画する関数群です。
void print_shapes(int layers) {
for (int i = 0; i < layers; i++) {
int count = (2 * (layers - i)) - 1;
// インデントと各パーツの表示
for(int j=0; j<i; j++) printf("\t");
for(int k=0; k<count; k++) printf(" O\t");
printf("\n");
}
}