超爱~ 2024-05-02 17:26 采纳率: 93.6%
浏览 5
已结题

5.5.6字符数组应用举例

img

img


C++,大家好,请问哪里出错了,我找不出来,有些许的不懂,求指教。

  • 写回答

4条回答 默认 最新

  • 檀越@新空间 2024-05-06 13:07
    关注

    下午好🌅🌅🌅
    本答案参考ChatGPT-3.5

    问题描述:给定一个二维字符数组,要求找出按字母顺序排在最前面的字符串,并用函数调用实现。

    解决方案:

    1. 定义一个函数smallest_string,它需要接受两个参数,第一个参数为二维字符数组,第二个参数为字符数组的行数。该函数的作用是找到按照字母顺序排在最前面的字符串,并将其输出。

    2. 在main函数中声明一个二维字符数组,用来存储输入的字符串。

    3. 用cin读取三个字符串,分别存储到这个二维字符数组的每一行中。

    4. 调用smallest_string函数,把二维字符数组和它的行数传递给函数,获取到最小的字符串。

    5. 在smallest_string函数中,用strcmp函数来比较每个字符串,找到按照字母顺序排在最前面的字符串,并将其输出。

    6. 在main函数中,将smallest_string函数返回的最小字符串输出。

    代码实现和修改:

    #include <iostream>
    #include <string>
    using namespace std;
    
    void smallest_string(char str[][30], int n); //函数声明
    
    int main() {
        char country_name[3][30]; //定义二维字符数组
    
        for(int i = 0; i < 3; i++) //输入3个国家名
            cin >> country_name[i]; 
    
        smallest_string(country_name, 3); //调用smallest_string函数
    
        return 0;
    }
    
    void smallest_string(char str[][30], int n) {
        char smallest[30];
        strcpy(smallest, str[0]); //将第一个字符串复制到smallest数组中
    
        for(int i = 1; i < n; i++) { //遍历字符数组
            if(strcmp(str[i], smallest) < 0) //如果当前字符串比smallest字符串小
                strcpy(smallest, str[i]); //将当前字符串复制到smallest数组中
        }
        cout << "The smallest string is: " << smallest << endl; //输出最小字符串
    }
    

    主要修改:

    1. 函数smallest_string中,将string数组改为smallest数组。

    2. 在函数smallest_string中,将smallest数组初始化为str[0]。

    3. 在main函数中,修改输出语句,输出smallest_string函数返回的最小字符串。

    注意:在调用strcpy函数时,建议将目标字符串数组作为第一个参数,源字符串作为第二个参数,避免因为长度不够而导致内存溢出。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 5月23日
  • 已采纳回答 5月15日
  • 创建了问题 5月2日