21xrx.com
2025-04-14 16:29:59 Monday
文章检索 我的文章 写文章
C++实验三的完整答案
2023-07-04 20:06:48 深夜i     10     0
C++ 实验三 完整答案

C++是一种高级编程语言,常被用于系统软件、驱动程序、游戏等领域。实验三是C++课程的重要实验环节,需要掌握基本的编程语法和算法。

以下是C++实验三的完整答案:

1. 字符串的反转

题目描述:

将输入的字符串反转输出。

解题思路:

使用for循环对字符串进行倒序遍历,将字符倒序输出。可以使用swap函数交换字符串首尾的字符,也可以直接使用数组下标访问。

代码实现:

#include <iostream>
#include <cstring>
using namespace std;
int main() {
  char str[100];
  cin.getline(str, 100);
  int len = strlen(str);
  for (int i = 0; i < len / 2; i++) {
    swap(str[i], str[len - i - 1]);
  }
  cout << str << endl;
  return 0;
}

2. 不用库函数实现字符串查找

题目描述:

不使用库函数,在一个字符串中查找另一个字符串是否存在。

解题思路:

使用双重循环遍历原字符串和目标字符串,比较每个字符是否匹配。如果匹配成功,则返回匹配位置。如果遍历完整个字符串仍没有匹配成功,则返回-1。

代码实现:

#include <iostream>
#include <cstring>
using namespace std;
int match(char* str1, char* str2) {
  int len1 = strlen(str1);
  int len2 = strlen(str2);
  for (int i = 0; i <= len1 - len2; i++) {
    for (int j = 0; j < len2; j++) {
      if (str1[i + j] != str2[j])
        break;
      
      if (j == len2 - 1)
        return i;
      
    }
  }
  return -1;
}
int main() {
  char str1[100], str2[100];
  cin >> str1 >> str2;
  int pos = match(str1, str2);
  if (pos >= 0)
    cout << "Match at position " << pos << endl;
   else
    cout << "No match" << endl;
  
  return 0;
}

3. 最长公共前缀

题目描述:

输入一组字符串,返回这些字符串的最长公共前缀。

解题思路:

将第一个字符串设为目标前缀,从第二个字符串开始,依次比较目标前缀和该字符串的前缀是否匹配,不匹配则从目标前缀的末尾删除一个字符,然后继续比较,直到所有字符串都匹配成功或者目标前缀为空。

代码实现:

#include <iostream>
#include <cstring>
using namespace std;
int main() {
  int n;
  cin >> n;
  char strs[100][100];
  for (int i = 0; i < n; i++) {
    cin >> strs[i];
  }
  char prefix[100];
  strcpy(prefix, strs[0]);
  for (int i = 1; i < n; i++) {
    int j = 0;
    while (prefix[j] && strs[i][j] && prefix[j] == strs[i][j]) {
      j++;
    }
    prefix[j] = '\0';
  }
  cout << "The longest common prefix is " << prefix << endl;
  return 0;
}

以上就是C++实验三的完整答案,希望能对大家的学习和实践有所帮助。

  
  

评论区

请求出错了