1.编写一个函数,将参数中的字符反向排列,并打印。
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<string.h> reverse_string(char arr[],int right,int left) { if (left <= right) { char i = arr[left]; arr[left] = arr[right]; arr[right] = i; reverse_string(arr, right - 1, left + 1); } } int main() { char arr[] = "abcdef"; int right = strlen(arr) - 1; int left = 0; reverse_string(arr,right,left); printf("%s", arr); return 0; }
2.计算一个数的每位之和(递归实现)
例如:写一个递归函数DigitSum(1729),则应该返回1+7+2+9它的和为19.
#include<stdio.h> int DisgitSum(int i) { if (i >9 ) { return DisgitSum(i / 10) + i % 10; } else { return i; } } int main() { int i = 10; scanf("%d", &i); //调用函数 int sum = DisgitSum(i); printf("%d", sum); }
3.编写一个函数实现n的k次方,使用递归实现
#include<stdio.h> int pow(int n, int k) { if (k > 0) { return n * pow(n, k-1); } else { return 1; } } int main() { int n = 0; int k = 0; scanf("%d%d", &n, &k); int ret = pow(n, k); printf("%d", ret); return 0; }
运行结果:
4.创建一个整型数组,完成对数组的操作
1.实现函数的init() 初始化数组为0;
2.实现print() 打印数组的每个元素;
3.实现reverser() 函数完成数组的逆置
#include<stdio.h> void init(int arr[], int sz) { int i; for (i = 0; i < sz; i++) { arr[i] = 0; } } void print(int arr[], int sz) { int i; for (i = 0; i < sz; i++) { printf(" %d ", arr[i]); } printf("\n"); } void reverse(int arr[], int right,int left) { if (left <= right) { int emp = arr[left]; arr[left] = arr[right]; arr[right] = emp; reverse(arr, right - 1, left + 1); } } int main() { int arr[] = { 1,2,3,4,5,6,7,8,9,0,11 }; int sz = sizeof(arr) / sizeof(int); //数组打印 print(arr, sz); //元素逆置 reverse(arr, sz-1,0); //数组打印 print(arr, sz); //数组初始化 init(arr,sz); //数组打印 print(arr,sz); return 0; }