C++程序设计:字符串排序与整数计算实战
需积分: 10 72 浏览量
更新于2024-07-24
收藏 748KB DOC 举报
在提供的C++程序改错文档中,包含了两个练习题,旨在帮助学习者提高程序设计能力,特别是字符串处理和排序算法的理解。以下是每个题目及其关键知识点的详细解析:
1. 题目1 (满分10.0分) - 题号:353
**功能:字符串降序排列(除去首尾字符)**
```cpp
#include<stdio.h>
#include<ctype.h>
#include<conio.h>
// 定义函数 fun(),用于实现字符串内部的降序排列
void fun(char* s, int num);
// 主函数 main()
void main()
{
char s[10];
printf("输入7个字符的字符串:");
gets(s); // 注意:gets()已不再安全,推荐使用fgets()或getline()替换
fun(s, 7); // 调用排序函数
printf("\n%s", s); // 输出排序后的字符串
// 函数wwjt() 用于测试示例,不在题目要求范围内
}
// 实现排序函数
void fun(char* s, int num)
{
int i, j;
char t;
for (i = 1; i < num - 1; i++) // 遍历中间字符
for (j = i + 1; j < num - 1; j++)
if (s[i] < s[j]) // 比较字符,如果前一个字符小于后一个字符
{
t = s[i]; // 临时存储较小字符
s[i] = s[j]; // 将较大字符放到前面
s[j] = t; // 将临时存储的较小字符放到后面
}
}
// wwjt() 函数,这里主要用于提供测试数据,与题目无关,略去解析
```
2. 题目2 (满分10.0分) - 题号:310
**功能:计算并输出给定整数n的阶乘**
这部分代码没有直接给出,但我们可以推断它应该是要求编写一个计算阶乘的函数。阶乘是一个数的所有小于及等于它的正整数的积,例如5! = 5 * 4 * 3 * 2 * 1。
假设有一个名为`factorial`的函数,其结构可能如下:
```cpp
int factorial(int n)
{
if (n == 0 || n == 1) // 0和1的阶乘定义为1
return 1;
else
return n * factorial(n - 1); // 递归调用,计算n-1的阶乘然后乘以n
}
```
主函数中会调用这个函数,输出计算结果。由于具体代码未提供,这部分只能根据题目描述进行猜测。
总结来说,这份文档包含C++编程中的两个实践题,涉及到字符串排序和整数阶乘的计算。通过解决这些问题,学习者可以加深对C++语言基本操作的理解,尤其是字符串处理的函数如`strcmp()`、`strlen()`以及循环控制和条件语句的运用。同时,也展示了递归算法在阶乘计算中的应用。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2021-10-07 上传
2022-07-06 上传
2023-04-18 上传
411049860qq
- 粉丝: 0
- 资源: 1