#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\n", k, n, from, to);
if (k++ % 3 == 0)
printf("\n");
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("\n");
hanoi(n, 'A', 'B', 'C');
return 0;
}
#include <stdio.h>
int main() {
int i, j, k; // i,j,k分别代表百位,十位,个位
int count = 0; // 记录总共不重复的数字的个数
for (i = 1; i <= 5; i++) {
for (j = 1; j <= 5; j++) {
for (k = 1; k <= 5; k++) {
if (i != k && i != j && j != k) {
count++;
printf("%d%d%d ", i, j, k);
if (0 == count % 10) {
printf("\n");
}
}
}
}
}
printf("不重复的数字的个数为:%d", count);
}
#include <stdio.h>
void reverse(char* s)
{
// 获取字符串长度
int len = 0;
char* p = s;
while (*p != 0)
{
len++;
p++;
}
// 首尾交换字符
int i = 0;
char c;
while (i <= len / 2 - 1)
{
c = *(s + i);
*(s + i) = *(s + len - 1 - i);
*(s + len - 1 - i) = c;
i++;
}
}
int main()
{
char s[] = "chenPiJavaLib";
printf("翻转前:%s\n", s);
reverse(s);
printf("翻转后:%s", s);
return 0;
}
演示输出结果如下:
翻转前:chenPiJavaLib
翻转后:biLavaJiPnehc
数字排序 题目:输入三个整数 x,y,z,请把这三个数由小到大输出。 分析:先将 x 分别与 y,z 比较,将最小的值赋值到 x。然后 y 和 z 再进行比较,找出第二小的值赋值到 y。最后 x,y,z 就是从小到大的数。
#include <stdio.h>
int main() {
int x, y, z, t;
printf("请输入三个数字(逗号隔开):");
scanf("%d,%d,%d", &x, &y, &z);
if (x > y) {
t = x;
x = y;
y = t;
}
if (x > z) {
t = z;
z = x;
x = t;
}
if (y > z) {
t = y;
y = z;
z = t;
}
printf("从小到大排序: %d %d %d", x, y, z);
}
演示输出结果如下:
请输入三个数字(逗号隔开):10,2,6
从小到大排序: 2 6 10
九九乘法表 题目:输出九九乘法表。
#include <stdio.h>
int main() {
int i, j, result;
for (i = 1; i < 10; i++) {
for (j = 1; j <= i; j++) {
result = i * j;
printf("%d*%d=%-3d", i, j, result);
}
printf("\n");
}
}
#include <stdio.h>
int main() {
int f1 = 1, f2 = 1, i;
for (i = 1; i <= 15; i++) {
printf("%12d%12d", f1, f2);
if (i % 2 == 0) printf("\n");
f1 = f1 + f2;
f2 = f1 + f2;
}
return 0;
}
#include <stdio.h>
int main() {
int i, x, y, z;
for (i = 100; i <= 999; i++) {
x = i % 10;
y = i / 10 % 10;
z = i / 100 % 10;
if (i == (x * x * x + y * y * y + z * z * z))
printf("%d\n", i);
}
return 0;
}
#include <stdio.h>
int main() {
float h = 100, s = 100;
//第一次反弹高度
h = h / 2;
for (int i = 2; i <= 10; i++) {
s = s + 2 * h;
h = h / 2;
}
printf("第10次落地时,共经过%f米,第10次反弹高%f米", s, h);
return 0;
}
#include <stdio.h>
int main() {
double e = 1.0, n = 1.0;
int i = 1;
while (1 / n > 1e-10) {
e += 1 / n;
i++;
n = i * n;
}
printf("e=%f", e);
return 0;
}
演示输出结果如下:
e=2.718282
杨辉三角 题目:杨辉三角的两个腰边的数都是 1,其它位置的数都是上顶上两个数之和。
#include <stdio.h>
int main() {
int i, j, k, n = 0;
printf("输入要打印的行数:");
scanf("%d", &n);
int a[n+1][n+1];
printf("%d行杨辉三角如下:\n", n);
for (i = 1; i <= n; i++)
a[i][1] = a[i][i] = 1; // 两边的数令它为1
for (i = 3; i <= n; i++)
for (j = 2; j <= i - 1; j++)
a[i][j] = a[i - 1][j - 1] + a[i - 1][j]; // 除两边的数外都等于上两顶数之和
for (i = 1; i <= n; i++) {
for (k = 1; k <= n - i; k++)
printf(" "); // 让显示美观,在输出数之前打上合适的空格
for (j = 1; j <= i; j++)
printf("%6d", a[i][j]);
printf("\n"); // 当一行数字输出后换行
}
printf("\n");
}
#include <stdio.h>
int main() {
int a, b, temp, i;
printf("请输入两个数字,同空格隔开:");
scanf("%d %d", &a, &b);
// 保证 a >= b
if (a < b) {
temp = a;
a = b;
b = temp;
}
for (i = a; i > 0; i++) // 从大数开始查找满足条件的数
if (i % a == 0 && i % b == 0) {
printf("%d 和 %d 的最小公倍数是%d", a, b, i);
break;
}
return 0;
}
演示输出结果如下:
请输入两个数字,同空格隔开:12 8
12 和 8 的最小公倍数是24
亲密数 题目:一个整数 X 的全部因子(包括1,不包括 X 本身)之和等于 Y;并且整数 Y 的全部因子(包括1,不包括 Y 本身)之和等于 X ,则将整数 X 和 Y 称为亲密数。求3000以内的全部亲密数。
#include <stdio.h>
int main() {
int i, x, y, z;
for (i = 1; i < 3000; i++) {
for (y = 0, x = 1; x <= i / 2; x++)
// 计算x的所有因子之后,保存再y中
if (0 == (i % x))
y += x;
for (z = 0, x = 1; x <= y / 2; x++)
// 计算y的所有因子之后,保存再z中
if (0 == (y% x))
z+= x;
if (z== i && i < y)
printf("%4d 的亲密数是 %4d\n", i, y);
}
return 0;
}