21xrx.com
2024-12-23 01:45:25 Monday
登录
文章检索 我的文章 写文章
C++实验三的完整答案
2023-07-04 20:06:48 深夜i     --     --
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++实验三的完整答案,希望能对大家的学习和实践有所帮助。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复