スコア変換と数値操作の実験

実験タスク1


#include <stdio.h>

char grade_converter(int score);  

int main() {
    int score;
    char grade;

    while(scanf("%d", &score) != EOF) {
        grade = grade_converter(score);  
        printf("Score: %d, Grade: %c\n\n", score, grade);
    }

    return 0;
}

char grade_converter(int score) {
    char result;

    switch(score/10) {
        case 10:
        case 9:   result = 'A'; break;
        case 8:   result = 'B'; break;
        case 7:   result = 'C'; break;
        case 6:   result = 'D'; break;
        default:  result = 'E';
    }

    return result;
}
問題1: - 関数は整数スコアを文字グレードに変換する。 - 引数タイプ:int - 戻り値タイプ:char 問題2: - 文字型不一致 - caseブランチでbreakがない場合、デフォルトへ進む。

実験タスク2


#include <stdio.h>

int digit_sum(int num);

int main() {
    int num;
    int total;

    while(printf("Enter num: "), scanf("%d", &num) != EOF) {
        total = digit_sum(num);    
        printf("num = %d, total = %d\n\n", num, total);
    }

    return 0;
}

int digit_sum(int num) {
    int total = 0;

    while(num != 0) {
        total += num % 10;
        num /= 10;
    }

    return total;
}
問題1: - 関数は入力された整数の各桁の合計を計算する。 問題2: - はい。元は反復思考、修正後は再帰思考。

実験タスク3


#include <stdio.h>

int exponentiation(int base, int exp);

int main() {
    int base, exp;
    int ans;

    while(printf("Enter base and exp: "), scanf("%d%d", &base, &exp) != EOF) {
        ans = exponentiation(base, exp);  
        printf("exp = %d, ans = %d\n\n", exp, ans);
    }
    
    return 0;
}

int exponentiation(int base, int exp) {
    if(exp == 0)
        return 1;
    else if(exp % 2)
        return base * exponentiation(base, exp-1);
    else {
        int temp = exponentiation(base, exp/2);
        return temp*temp;
    }
}
問題1: - 関数はxのn乗を計算する。 問題2: - はい。

実験タスク4


#include<stdio.h>
int is_prime_number(int n);
int main(){int n;
int count=0;
printf("Twin primes under 100:\n");
for(n=1;n<=100;n++)
{if(is_prime_number(n)&&is_prime_number(n+2)){
printf("%d %d\n",n,n+2);
count++;}}
printf("Total twin primes under 100: %d\n",count);
getchar();
return 0;}
int is_prime_number(int n){int i;
if(n<=1)return 0;
if(n==2)return 1;
if(n>=3)for(i=2;i

実験タスク5


#include <stdio.h>
int combination(int x, int y);

int main() {
    int x, y;
    int result;

    while(scanf("%d%d", &x, &y) != EOF) {
        result = combination(x, y);   
        printf("x = %d, y = %d, result = %d\n\n", x, y, result);
    }
        
    return 0;
}

int combination(int x, int y){
    if(y<0||y>x)return 0;
    if(y==0||y==x)return 1;
    return combination(x-1,y)+combination(x-1,y-1);
}

実験タスク6


#include <stdio.h>
int greatest_common_divisor(int a,int b,int c);

int main() {
    int a, b, c;
    int ans;

    while(scanf("%d%d%d", &a, &b, &c) != EOF) {
        ans = greatest_common_divisor(a, b, c);     
        printf("GCD: %d\n\n", ans);
    }

    return 0;
}

int greatest_common_divisor(int a,int b,int c){int i;
if(a=1;--i) if (a%i==0&&b%i==0&&c%i==0)return i;}

実験タスク7


#include <stdio.h>
#include <stdlib.h>
void print_pattern(int rows);

int main() {
    int rows;

    printf("Enter rows: ");
    scanf("%d", &rows);
    print_pattern(rows); 
    system("pause");
    return 0;
}

void print_pattern(int rows){int i,k,j;
for(i=0;i

タグ: C言語 関数 数学計算 素数判定 組み合わせ計算

7月23日 01:50 投稿