专升本c语言编程例题
时间: 2025-06-04 13:45:33 浏览: 13
### 关于专升本 C语言 编程例题
以下是几个常见的专升本 C语言编程练习题及其解答:
---
#### 题目一:求数字长度
题目描述:随机输入一个整数,求该整数的位数。
解决方案可以通过循环除法实现。每次将数字除以10并计数,直到商为零为止[^1]。
```c
#include <stdio.h>
int main() {
int a;
scanf("%d", &a);
// 处理负数情况
if (a < 0) {
a = -a;
}
int b = 10, c = 1;
for (int i = 0;; i++) {
if (a / b != 0) {
b *= 10;
c++; // 计算位数
} else {
break;
}
}
printf("变量a位数为:%d\n", c);
return 0;
}
```
此程序通过不断增大分母 `b` 的值来判断当前数字还有多少位未被处理完毕[^1]。
---
#### 题目二:阶乘计算
题目描述:给定正整数 `n`,分别用递归和非递归的方式计算其阶乘。
递归方法利用函数调用来完成任务;而非递归则采用简单的累乘逻辑[^2]。
```c
#include <stdio.h>
// 方法一:递归方式
int factorialOne(int n) {
if (n == 1 || n == 0) return 1;
return factorialOne(n - 1) * n;
}
// 方法二:非递归方式
int factorialTwo(int n) {
int result = 1;
for (int i = 1; i <= n; ++i) {
result *= i;
}
return result;
}
int main() {
int n;
printf("请输入一个正整数:");
scanf("%d", &n);
int res_one = factorialOne(n);
int res_two = factorialTwo(n);
printf("递归结果:%d\t非递归结果:%d\n", res_one, res_two);
return 0;
}
```
上述代码展示了两种不同的思路解决同一个问题——如何高效地得到某个自然数的阶乘值。
---
#### 题目三:回文数检测
题目描述:编写一段程序验证用户输入的一个五位数是否属于“回文数”。
所谓“回文数”,是指从左向右读与从右往左完全相同的数值形式。
```c
#include <stdio.h>
#define LENGTH 5
bool isPalindrome(int number) {
char strNumber[LENGTH + 1];
sprintf(strNumber, "%d", number);
int start = 0;
int end = strlen(strNumber)-1;
while(start<end){
if( strNumber[start]!=strNumber[end]){
return false;
}
start++;
end--;
}
return true;
}
int main(){
int inputNum ;
printf("Enter five-digit integer:\n");
scanf("%d",&inputNum );
if(isPalindrome(inputNum)){
printf("%d 是回文数。\n",inputNum );
}else{
printf("%d 不是回文数。\n",inputNum );
}
return 0;
}
```
这里定义了一个辅助布尔型函数用于判定字符串两端字符逐一匹配的情况[^3]。
---
问题
阅读全文
相关推荐

















