Camellia.332 2023-06-22 20:18 采纳率: 92.3%
浏览 15
已结题

二维数组对名字实现冒泡排序,只有三个名字排对了顺序

22222后面是经过冒泡排序输出的,为什们有的是正确的,有的不正确?
帮我改一下吧谢谢


#include<iostream>
#include<cstring>
#include<cstring>
using namespace std; 
void sortName(char (*a)[10]){
    char t[6][10];
    int i,j;
for(i=0;i<5;i++)
for(j=0;j<5-i;j++){
    if(strcmp(a[j],a[j+1])) {strcpy(t[j],a[j]);strcpy(a[j],a[j+1]);strcpy(a[j+1],t[j]);}
}     
    cout<<"22222"<<endl;
    for(i=0;i<6;i++)
    cout<<a[i]<<endl;
}
void print(char a[6][10]){
    int i; 
    for(i=0;i<6;i++)
    cout<<a[i]<<endl;//把二维数组看作特殊的一维数组,每一行相当于一维数组的一个元素 
}
int main(){
    char m[6][10]={"Tom","Mary","Jack","Rose","Harry","Alice"};
    cout<<"11111"<<endl;
    print(m);
    sortName(m);
    cout<<"33333"<<endl;
    print(m);
}

img

  • 写回答

2条回答 默认 最新

  • 全栈若城 全栈领域优质创作者 2023-06-22 20:31
    关注

    效果如下 :

    img

    修改代码如下 :

    #include <iostream>
    #include <cstring>
    using namespace std;
    
    void sortName(char (*a)[10]) {
        char t[10];
        int i, j;
        for (i = 0; i < 5; i++)
            for (j = 0; j < 5 - i; j++) {
                if (strcmp(a[j], a[j + 1]) > 0) {
                    strcpy(t, a[j]);
                    strcpy(a[j], a[j + 1]);
                    strcpy(a[j + 1], t);
                }
            }
    }
    
    void print(char a[][10]) {
        for (int i = 0; i < 6; i++)
            cout << a[i] << endl;
    }
    
    int main() {
        char m[6][10] = { "Tom", "Mary", "Jack", "Rose", "Harry", "Alice" };
        cout << "11111" << endl;
        print(m);
        sortName(m);
        cout << "33333" << endl;
        print(m);
        return 0;
    }
    
    
    

    原因: 冒泡排序出错的原因在于你在比较字符串时使用了strcmp函数,这个东西返回的结果是两个字符串的大小关系而不是布尔值 , 理解了不 , 如有帮助给个 大大的采纳 加关注 , 不行的话给我的置顶博客 评论几下去 . 谢谢谢

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

报告相同问题?

问题事件

  • 系统已结题 7月1日
  • 已采纳回答 6月23日
  • 请采纳用户回复 6月22日
  • 创建了问题 6月22日

悬赏问题

  • ¥15 kotlin multiplaform 的共享模块支持蓝牙吗还是说安卓和ios的蓝牙都要自己配
  • ¥15 为什么我的查询总是显示无数据,该怎么修改呢(语言-java)
  • ¥15 IDDPM采样结果异常
  • ¥100 求一个,王者荣耀查询隐藏战绩的教材,爬虫代码
  • ¥60 Cocos creator缓动问题
  • ¥15 专业问题提问,7月5号2点之前
  • ¥25 使用cube ai 导入onnx模型时报错
  • ¥15 关于#微信小程序#的问题:用一个网页显示所有关联的微信小程序数据,包括每个小程序的用户访问量
  • ¥15 root的安卓12系统上,如何使apk获得root或者高级别的系统权限?
  • ¥20 关于#matlab#的问题:如果用MATLAB函数delayseq可以对分数延时,但是延时后波形较原波形有幅度上的改变