C语言实例 - 判断数字为几位数
这个C语言代码实例的目的是判断输入的数字为几位数。以下是代码的思路:
- 首先,定义一个整数变量
num
。 - 然后,使用
scanf
函数将用户输入的数字存储在num
变量中。 - 接下来,使用
if
语句来判断num
的位数。 - 如果
num
小于 10,则它只有一位数。 - 如果
num
大于等于 10 且小于 100,则它有两位数。 - 如果
num
大于等于 100 且小于 1000,则它有三位数。 - 如果
num
大于等于 1000,则它有四位数或更多位数。
以下是完整的代码实现:
#include <stdio.h>
int main() {
int num;
printf("请输入一个数字:");
scanf("%d", &num);
if (num < 10) {
printf("这个数字是一位数");
} else if (num >= 10 && num < 100) {
printf("这个数字是两位数");
} else if (num >= 100 && num < 1000) {
printf("这个数字是三位数");
} else {
printf("这个数字是四位数或更多位数");
}
return 0;
}
以下是 C 语言实例,用于计算一个数的 n 次方。
第一种方式:使用循环
#include <stdio.h>
int main() {
double base, result = 1;
int exponent;
printf("请输入一个底数: ");
scanf("%lf", &base);
printf("请输入一个指数: ");
scanf("%d", &exponent);
// 当 exponent 为负数时,将 base 变为倒数并使 exponent 为正数
if (exponent < 0) {
base = 1 / base;
exponent = -exponent;
}
// 循环计算 base 的 exponent 次方
for (int i = 0; i < exponent; i++) {
result *= base;
}
printf("%.2lf 的 %d 次方为 %.2lf", base, exponent, result);
return 0;
}
第二种方式:使用递归
#include <stdio.h>
double power(double base, int exponent);
int main() {
double base, result;
int exponent;
printf("请输入一个底数: ");
scanf("%lf", &base);
printf("请输入一个指数: ");
scanf("%d", &exponent);
result = power(base, exponent);
printf("%.2lf 的 %d 次方为 %.2lf", base, exponent, result);
return 0;
}
double power(double base, int exponent) {
if (exponent == 0) {
return 1;
} else if (exponent == 1) {
return base;
} else if (exponent < 0) {
return 1 / power(base, -exponent);
} else {
return base * power(base, exponent - 1);
}
}
思路
两种方式都是通过输入底数和指数,并计算出结果,其中第一种方式使用了循环,第二种方式使用了递归。
循环
- 首先,定义一个
result
变量并将其初始化为 1。 - 然后,使用
scanf
函数将用户输入的底数和指数存储在相应的变量中。 - 如果指数为负数,则将底数变为倒数并使指数为正数。
- 使用
for
循环计算底数的指数次方,将结果存储在result
变量中。 - 最后,输出计算结果。
递归
- 首先,定义一个
power
函数,该函数接受底数和指数作为参数,并返回计算结果。 - 在
power
函数中,如果指数为 0,则返回 1。 - 如果指数为 1,则返回底数。
- 如果指数为负数,则将底数变为倒数并使指数为正数,然后递归调用
power
函数。 - 如果指数为正数,则使用递归计算底数的指数次方,并返回结果。
- 最后,在
main
函数中,使用scanf
函数将用户输入的底数和指数存储在相应的变量中,并调用power
函数计算结果。 - 最后,输出计算结果。
C 语言实例 - 判断回文数
以下是三种 C 语言代码实例,用于判断一个数是否为回文数。
方法一:使用数组
#include <stdio.h>
int main() {
int num, reversed = 0, remainder, original;
printf("请输入一个整数: ");
scanf("%d", &num);
original = num;
// 将数字反转
while (num != 0) {
remainder = num % 10;
reversed = reversed * 10 + remainder;
num /= 10;
}
// 判断是否为回文数
if (original == reversed) {
printf("%d 是回文数", original);
} else {
printf("%d 不是回文数", original);
}
return 0;
}
方法二:使用指针
#include <stdio.h>
int main() {
int num, reversed = 0, remainder, original;
int *ptr_num = &num, *ptr_reversed = &reversed;
printf("请输入一个整数: ");
scanf("%d", ptr_num);
original = num;
// 将数字反转
while (num != 0) {
remainder = num % 10;
*ptr_reversed = *ptr_reversed * 10 + remainder;
num /= 10;
}
// 判断是否为回文数
if (original == reversed) {
printf("%d 是回文数", original);
} else {
printf("%d 不是回文数", original);
}
return 0;
}
方法三:使用递归
#include <stdio.h>
int is_palindrome(int num);
int main() {
int num;
printf("请输入一个整数: ");
scanf("%d", &num);
if (is_palindrome(num)) {
printf("%d 是回文数", num);
} else {
printf("%d 不是回文数", num);
}
return 0;
}
int is_palindrome(int num) {
static int reversed = 0;
// 将数字反转
if (num != 0) {
reversed = reversed * 10 + num % 10;
is_palindrome(num / 10);
}
// 判断是否为回文数
if (num == reversed) {
return 1;
} else {
return 0;
}
}
思路
三种方法都是通过将输入的数字反转,然后将反转后的数字与原始数字进行比较,来判断是否为回文数。
方法一:使用数组
- 首先,定义一个整数变量
num
和一个用于存储反转数字的整数变量reversed
。 - 然后,使用
scanf
函数将用户输入的数字存储在num
变量中,并将其保存在original
变量中备用。 - 使用
while
循环将数字反转,并将其存储在reversed
变量中。 - 最后,比较
original
和reversed
变量的值,以确定它们是否相等。
方法二:使用指针
- 首先,定义两个整数变量
num
和reversed
,以及两个指向这些变量的指针ptr_num
和ptr_reversed
。 - 然后,使用
scanf
函数将用户输入的数字存储在num
变量中,并将其保存在original
变量中备用。 - 使用
while
循环将数字反转,并将其存储在reversed
变量中。 - 最后,比较
original
和reversed
变量的值,以确定它们是否相等。
方法三:使用递归
- 首先,定义一个
is_palindrome
函数,该函数接受一个整数作为参数,并返回一个整数。此函数使用静态变量reversed
来存储反转数字。 - 在
is_palindrome
函数中,使用递归将数字反转,并将其存储在reversed
变量中。 - 如果数字为零,则比较原始数字和反转数字,以确定它们是否相等。
- 如果它们相等,则返回 1。否则,返回 0。
- 在
main
函数中,使用scanf
函数将用户输入的数字存储在num
变量中。 - 调用
is_palindrome
函数来判断num
是否为回文数。 - 最后,输出结果。
以上是三种方法来判断输入的数字是否为回文数。