C++编程实践:字符串逆置与矩阵转置

需积分: 4 2 下载量 130 浏览量 更新于2024-07-30 收藏 164KB DOC 举报
"C++编程练习题" 这两道题目都是关于C++编程的基础练习,主要涉及字符串操作和二维数组(矩阵)的处理。 首先,第一道题目的目标是编写一个名为`fun`的函数,该函数接受一个字符指针`char *s`作为参数,其功能是将输入的字符串进行逆置。实现这个功能的关键在于理解字符串的基本操作和指针的使用。在C++中,字符串实际上是一串字符以`\0`作为结束符的字符数组。题目提供的算法采用了双指针的方法,一个指针从字符串头部开始,另一个从尾部开始,它们同时向中间移动并在交换位置,直到两个指针相遇。这个过程保证了所有字符都被交换过一次,实现了字符串的逆置。在函数内部,使用`strlen`函数获取字符串长度,然后通过两个嵌套的`for`循环实现字符的交换。注意,在交换过程中,需要先保存一个字符的值,因为交换过程中`*(s+i)`会改变。 第二道题目要求编写一个程序,实现一个3x3矩阵的转置。矩阵转置就是将矩阵的行变为列,列变为行。在这个问题中,关键在于理解如何在二维数组中正确地交换元素。提供的算法通过两个嵌套的`for`循环实现,外层循环遍历矩阵的行,内层循环从当前行的下一个元素开始遍历到矩阵的末尾,这样可以确保只遍历矩阵的左上三角部分,因为矩阵的右下三角与左上三角是对称的。在每次内层循环中,交换当前位置的元素和对应的对角线元素,即`array[i][j]`与`array[j][i]`。这个程序使用了一个辅助变量`t`来暂存交换的值。 在主函数`main`中,这两个函数被调用来处理用户输入的字符串和矩阵,并打印出结果。`clrscr()`函数通常用于清屏,`gets`函数用于读取一整行的用户输入,`puts`函数则用于打印字符串。对于矩阵的展示,也使用了两个嵌套的`for`循环来遍历并打印矩阵的所有元素。 通过这些练习,学习者可以巩固C++中的基本语法,如指针操作、数组处理、字符串操作以及基本的算法设计。同时,这也涉及到C++中的内存管理和数据结构基础,对于初学者来说是非常重要的实践练习。