您现在的位置是:首页 >技术教程 >学习c语言中的几道习题(小有难度)!网站首页技术教程
学习c语言中的几道习题(小有难度)!
简介学习c语言中的几道习题(小有难度)!
有兴趣的朋友可以看着题目自己做做,最后在和答案对比!相信能力会有所提升的。我现在只是刚刚开始学习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
", a, b);
jiaohuan(&a, &b);
printf("交换后 a=%d b=%d
", 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("请输入你要打印的乘法口诀表的行数?
");
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("
");
}
}
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;
}
6、求阶乘
递归和非递归分别实现求n的阶乘
/*
求阶乘
递归和非递归分别实现求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 != '