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");
}
}