华东师大2023程序设计基础代码

发布时间 2023-11-07 22:20:58作者: Duancf

Lab07 递归与函数

1. 正整数的各位数字之和

#include <stdio.h>
#include <math.h>
int sum(int a);
int main() {
    int a = 0;
    scanf("%d", &a);
    printf("%d", sum(a));
    return 0;
}
int sum(int a) {
    if (a < 10) {
        return a;
    }
    return sum(a / 10) + a % 10;
}

2. 逆序输出

#include <stdio.h>
#include <math.h>

void scan();

int main() {
    scan();
    return 0;
}

void scan() {
    int a = 0;
    scanf("%d", &a);
    if (a > 0) {
        scan();
        printf("%d ", a);
        return;
    }
    return;

}

3. 十进制转二进制

#include <stdio.h>
#include <math.h>

void print(int a);

int main() {
    int a = 0;
    scanf("%d", &a);
    print(a);
    return 0;
}

void print(int a) {
    if (a == 0){
        return;
    }
    if (a > 0) {
        print(a / 2);
        printf("%d",a%2);
    }
}


6. *号构成的菱形图案

#include <stdio.h>
#include <stdlib.h>

void print(int a);

int main(void) {
    int n = 0, a = 0;
    scanf("%d", &n);

    for (int i = 0; i < n; i++) {
        scanf("%d", &a);
        print(a);
    }

    return 0;
}

void print(int a) {

    int b = a - 1;
    int c = 1;
    for (int i = 1; i <= a; i++) {

        for (int j = 1; j <= b; j++) {
            printf("  ");
        }
        b -= 1;
        for (int j = 1; j <= c; j++) {
            printf("* ");
        }
        c += 2;
        printf("\n");
    }

    b = 1;
    c = 2*a-3;;
    for (int i = 1; i <= a - 1; i++) {
        for (int j = 1; j <= b; j++) {
            printf("  ");
        }
        b += 1;
        for (int j = 1; j <= c; j++) {
            printf("* ");
        }
        c -= 2;
        printf("\n");
    }

}