有兴趣的朋友可以看着题目自己做做,最后在和答案对比!相信能力会有所提升的。我现在只是刚刚开始学习c语言,如果有什么说的不对的地方,网路过的大佬,及时予以指正。多谢!
1、函数判断闰年
实现函数判断year是不是闰年。
- 函数判断闰年
- 实现函数判断year是不是闰年。
- #include"stdio.h"
-
- int panduan(int x) {
- if (x % 4 == 0 && x % 100 != 0 || x % 400 == 0) {
- return 1;
- }
- else
- return 0;
- }
-
- int main() {
- int year = 2000;
- if (panduan(year)) {
- printf("%d年是闰年", year);
- }
- return 0;
- }
2、交换两个整数
实现一个函数来交换两个整数的内容。
- /*
- 交换两个整数
- 实现一个函数来交换两个整数的内容。
- */
-
- #include"stdio.h"
-
- void jiaohuan(int *x, int *y) {
- int z = 0;
- z = *x;
- *x = *y;
- *y = z;
- }
-
- int main() {
- int a = 9, b = 5;
- printf("交换前 a=%d b=%d\n", a, b);
- jiaohuan(&a, &b);
- printf("交换后 a=%d b=%d\n", a, b);
- return 0;
- }
3、乘法口诀表
实现一个函数,打印乘法口诀表,口诀表的函数和列数自己制定
如:输入9,输出9*9口诀表,输入12,输出12*12乘法口诀表
- /*
- 乘法口诀表
- 实现一个函数,打印乘法口诀表,口诀表的函数和列数自己制定
- 如:输入9,输出9*9口诀表,输入12,输出12*12乘法口诀表
-
- */
-
-
- #include"stdio.h"
-
- void print(int); // 声明函数
-
- int main() {
- int input = 0;
- printf("请输入你要打印的乘法口诀表的行数?\n");
- scanf("%d", &input);
- print(input);
- return 0;
- }
-
-
- void print(int x) { // 此函数在主函数的调用之后,所以在前面要有声明。
- int i = 0, j = 0;
- for (i = 1; i <= x; i++) {
- for (j = 1; j <= i; j++) {
- printf("%2dX%2d = %3d ", j, i, j * i);
- }
- printf("\n");
- }
-
- }
4、调用fun(2)返回值是多少?
int fun(int n) {
if (n == 5) {
return 2;
}
else
return 2 * fun(n + 1);
}
- int fun(int n) {
- if (n == 5) {
- return 2;
- }
- else
- return 2 * fun(n + 1);
-
- }
5、打印一个数的每一位
递归的方式实现?
- /*
- 打印一个数的每一位
- 递归的方式实现?
- */
-
-
- #include"stdio.h"
-
- void print(int a) {
- if (a > 9) {
- print(a / 10);
- }
- printf("%d ", a%10);
- }
-
- int main() {
- int a = 122456;
- print(a);
- return 0;
- }
- /*
- 求阶乘
- 递归和非递归分别实现求n的阶乘
- */
-
- #include"stdio.h"
-
- int jiecheng(int n) {
- int a = 1;
- int i = 1;
- for (i = 1; i <= n; i++) {
- a *= i;
- }
- return a;
- }
-
- int main() {
- int n = 0;
- scanf("%d", &n);
- int ret = jiecheng(n);
- printf("%d", ret);
- return 0;
- }
-
-
下面是递归的方式实现阶乘:
- #include"stdio.h"
-
- int jiecheng(int n) {
- if (n <= 1)
- return 1;
- return n * jiecheng(n - 1);
- }
-
- int main() {
- int n = 0;
- scanf("%d", &n);
- int ret = jiecheng(n);
- printf("%d", ret);
- return 0;
- }
7、字符串逆序(递归实现)
编写一个函数reverse_string(char * string)(递归实现)
实现:
将参数字符串中的字符反向排列,不是逆序打印。
要求:
不能使用c函数库中的字符串操作函数。
比如:
char arr[]="abcdef";
逆序之后的数组内容变成fedcba。
- #include"stdio.h"
- // 下面是循环的方式实现功能
- int my_strled(char* str) { // 计算传入的字符串中的字符个数
- int count = 0;
- while (*str != '\0') {
- count++;
- str++;
- }
- return count;
- }
-
- //void reverse_string(char *pa){
- // int left = 0;
- // int right = my_strled(pa) - 1; // 字符个数减1也就是最右边的下标
- // while(left
- // char tmp = pa[left];
- // pa[left] = pa[right];
- // pa[right] = tmp;
- // left++;
- // right--;
- // }
- // }
-
- void reverse_string(char* pa) {
- int left = 0;
- int right = my_strled(pa) - 1; // 字符个数减1也就是最右边的下标
- while (left < right) {
- char tmp = *(pa+left);
- *(pa+left) = *(pa+right);
- *(pa+right) = tmp;
- left++;
- right--;
- }
- }
-
-
- int main() {
- char arr[] = "abcdefg";
- printf("调整之前的数组是:%s\n", arr);
- reverse_string(arr); // 数组名arr是数组首元素的地址
- printf("调整之后的数组是:%s\n", arr);
- return 0;
- }
下面是递归的方式实现:
- #include"stdio.h"
-
- int my_strlen(char* arr) {
- int count = 0;
- while (*arr != '\0') {
- count++;
- arr++;
- }
- return count;
- }
-
- void diandao(char* arr) {
- int tem = *arr; // 第一步
- int len = my_strlen(arr);
- *arr = *(arr + len - 1); // 第二步
- *(arr + len - 1) = '\0'; // 第三步
- if (my_strlen(arr+1) >= 2) {
- diandao(arr + 1); // 第四步
- }
- *(arr + len - 1) = tem; // 第五步
- }
-
- int main() {
- char arr[] = "abcdef";
- diandao(arr);
- printf("%s\n", arr);
- return 0;
- }
8、计算一个数的每位之和(递归实现)
写一个递归函数DigitSum(n),输入一个非负整数,返回组成他的数字之和。
例如,调用Digit(1729),则应该返回1+7+2+9,他的和是19
输入:1729,输出:19
- ///*
- //计算一个数的每位之和(递归实现)
- //写一个递归函数DigitSum(n),输入一个非负整数,返回组成他的数字之和。
- //例如,调用Digit(1729),则应该返回1+7+2+9,他的和是19
- //输入:1729,输出:19
- //*/
- #include"stdio.h"
-
- int DigitSum(int n) {
- if (n > 9) {
- return n%10 + DigitSum(n / 10);
- }
- else
- return n;
- }
-
- int main() {
- int n = 1729;
- int ret = DigitSum(n);
- printf("%d", ret);
- return 0;
- }
9、 递归实现n的k次方
题目内容:
编写一个函数实现n的k次方,使用递归实现
- #include"stdio.h"
-
- double Fang(int n, int k) {
- if (k > 0) {
- return n * Fang(n, k - 1);
- }
- else if (k == 0)
- return 1;
- else
- return 1.0 / Fang(n, -k);
- }
-
- int main() {
- int n = 0;
- int k = 0;
- scanf("%d%d", &n,&k);
- double ret = Fang(n, k);
- printf("%lf", ret);
- return 0;
- }
以上就是今天早晨起来做的 9道题,主要是为了自己不忘记,或是忘记的时候看自己的代码熟悉的速度会更快,特此记录。