我是陈皮,一个在互联网 Coding 的 ITer,微信搜索「」第一时间阅读最新文章,回复【资料】,即可获得我精心整理的技术资料,电子书籍,一线大厂面试资料和优秀简历模板。
文章目录
引言
在大学期间,C语言几乎是每个计算机专业必学的课程,在学习掌握基础知识之后,通过大量的C语言练习题,手写代码,是巩固基础知识,锻炼编程思维的重要手段之一。下面介绍C语言练习实例50例,题目+解决方法。
回文数
题目:输入一个数,判断它是不是回文数。一个数从左边读和从右边读的结果是一模一样的话就是回文数,例如12321是回文数,12531不是回文数。
分析:判断从左边读和右边读,结果是不是一样。
#include <stdio.h>
int main( ) {
int num, x, y = 0;
printf("请输入一位数:");
scanf("%d", &num);
x = num;
while (x > 0) {
y = y * 10 + x % 10;
x = x / 10;
}
if (num == y) {
printf("%d是一个回文数", num);
} else {
printf("%d不是一个回文数", num);
}
}
请输入一位数:12321
12321是一个回文数
汉诺塔
题目:假设一块板上有三根针 A、B、C。A 针上套有 64 个大小不等的圆盘,按照大的在下、小的在上的顺序排列,要把这 64 个圆盘从 A 针移动到 C 针上,每次只能移动一个圆盘,移动过程可以借助 B 针。但在任何时候,任何针上的圆盘都必须保持大盘在下,小盘在上。从键盘输入需移动的圆盘个数,给出移动的过程。
分析:利用递归实现圆盘的整个移动过程;当只移动一个圆盘时,直接将圆盘从 A 针移动到 C 针。若移动的圆盘为 n(n>1),则分成几步走:把 (n-1) 个圆盘从 A 针移动到 B 针(借助 C 针);A 针上的最后一个圆盘移动到 C 针;B 针上的 (n-1) 个圆盘移动到 C 针(借助 A 针)。每做一遍,移动的圆盘少一个,逐次递减,最后当 n 为 1 时,完成整个移动过程。
#include <stdio.h>
int move(char from, int n, char to) {
static int k = 1;
printf("%2d:%3d # %c---%c
", k, n, from, to);
if (k++ % 3 == 0)
printf("
");
return 0;
}
int hanoi(int n, char x, char y, char z) {
if (n == 1)
move(x, 1, z);
else {
hanoi(n - 1, x, z, y);
move(x, n, z);
hanoi(n - 1, y, x, z);
}
return 0;
}
int main() {
int n;
printf("请输入盘子的数量:");
scanf("%d", &n);
printf("
");
hanoi(n, 'A', 'B', 'C');
return 0;
}
演示输出结果如下:
请输入盘子的数量:3
1: 1 # A---C
2: 2 # A---B
3: 1 # C---B
4: 3 # A---C
5: 1 # B-