字符串排序-该段程序是字符串冒泡排序,请大神找bug,做了好久了

问题描述

该段程序是字符串冒泡排序,请大神找bug,做了好久了

#include
#include
using namespace std;
int c;

cin >> c;
char b[100][100];
for (int m = 0; m<c; m++){
    cin >> b[m];
}
int n;
    for (int j = 0; j < c; j++){
        for (int m = 0; m<c ; m++){
            if (strlen(b[j])>strlen(b[m]))
                n = strlen(b[j]);
            else
                n = strlen(b[m]);
            for (int d = 0; d <n; d++){
                if ((b[m][d] == ''&&b[j][d] != '') || (int(b[m][d])<int(b[j][d])))
                {
                    char w[20];
                    for (unsigned int a = 0; a < strlen(b[j]); a++)
                    {
                        w[a] = b[j][a];
                    }
                    w[strlen(b[j]) ]= '';
                    for (unsigned int a = 0; a< strlen(b[m]); a++)
                    {
                        b[j][a] = b[m][a];
                    }
                    b[j][strlen(b[m])] = '';
                    for (unsigned int a = 0; a < strlen(w); a++)
                    {
                        b[m][a] = w[a];
                    }
                    b[m][strlen(w)] = '';
                    break;
                }
            }

        }
    }

for (int m = 0; m<c; m++){
    cout << b[m] << " ";
}
    return 0;

}

解决方案

你的输入只输入了二维数组的第一行吧。用二维数组干什么。

解决方案二:

#include
using namespace std;

int main()
{
int c;
cin >> c;
char b[100][100];
for (int m = 0; m
cin >> b[m];
}
int n;
for (int j = 0; j < c-1; j++){
for (int m = j+1; m
if (strlen(b[j])>strlen(b[m]))
n = strlen(b[j]);
else
n = strlen(b[m]);
for (int d = 0; d <n; d++){
if (b[m][d]<b[j][d])
{
char tmp[100];
strcpy(tmp,b[m]);
strcpy(b[m],b[j]);
strcpy(b[j],tmp);
break;
}
}

        }
    }

for (int m = 0; m<c; m++){
    cout << b[m] << " ";
}
getchar();
getchar();
    return 0;

}

解决方案三:

if (strlen(b[j])<strlen(b[m]))
                n = strlen(b[j]);
            else
                n = strlen(b[m]);

时间: 2024-10-26 14:06:46

字符串排序-该段程序是字符串冒泡排序,请大神找bug,做了好久了的相关文章

java程序报错,求大神找bug

问题描述 java程序报错,求大神找bug package arraysofobjects; import java.util.Scanner; public class arraysofobjects { public static void main(String[] args) { Scanner input=new Scanner(System.in); students[] stu=new students[4]; String name; int grade; for(int i=0

c语言-刚学C,编了个小程序出错了,请大神帮忙看一下。

问题描述 刚学C,编了个小程序出错了,请大神帮忙看一下. 知道长方形的长和宽,求面积和周长 #include main() { float x,y,a,b; printf ("请输入长和宽且用逗号分隔:); scanf ("%f,%f,&x,&y); a=x*y; b=(x+y)*2; printf ("面积=%f,周长=%fn",a,b); } 解决方案 错误一:include后面缺少头文件包含 错误二:printf中没有右半边的引号 错误三:sc

c++里如何重定向一个字符串 使string变成int型 请大神指导啊

问题描述 c++里如何重定向一个字符串 使string变成int型 请大神指导啊 c++里如何重定向一个字符串 使string变成int型 请大神指导啊 解决方案 用atoi就 可以了 比如: string s="534"; int f=atoi(s.c_str()); cout<<f; //printf("f=%d",f); 解决方案二: include 使用atoi就行 解决方案三: 包含一下stdlib.h 解决方案四: vs2008以上好像昂要用

xml-WCF 向客户端返回XML数据格式报错,请大神赐教“”超出最大字符串内容长度配额(8192)“”

问题描述 WCF 向客户端返回XML数据格式报错,请大神赐教""超出最大字符串内容长度配额(8192)"" !服务端配置 客户端配置 服务端返回客户端XML数据报错提示 解决方案 http://blog.csdn.net/yang_5/article/details/11775819

xml-XSLT 实现字符串的连接,请大神看下

问题描述 XSLT 实现字符串的连接,请大神看下 <data> <field name='id'>123</field> <field name='id'>abc</field> </data> <data> <field name='id'>123|abc</field> </data> 需求:就是把相同节点,相同属性的值,连接成一个字符串,并用|分隔符隔开. 解决方案 <?xm

java中输出一个日期排序,输出格式怎么变成Date@2c905b34类似的了。。请大神指点

问题描述 java中输出一个日期排序,输出格式怎么变成Date@2c905b34类似的了..请大神指点 java中输出一个日期排序,输出格式怎么变成Date@2c905b34. Date@3953c9c7类似的格式了..请大神指点 : Date[] days = new Date[5]; days[0] = new Date(2012123); days[1] = new Date(201515); days[2] = new Date(2008123); days[3] = new Date(

无法输入-请大神们帮帮忙,程序中折半算法怎么不可以输入,直接跳到最后了

问题描述 请大神们帮帮忙,程序中折半算法怎么不可以输入,直接跳到最后了 #include "stdafx.h" #include #define MIX_SIZE 20 using namespace std; typedef struct _Data { int *elem; int lengh; }Data; void Creat(Data &data) { data.elem=(int *)malloc(MIX_SIZE*sizeof(int)); data.lengh=

编程c语言-计算输入字符串的空格数有错,希望大神不吝赐教

问题描述 计算输入字符串的空格数有错,希望大神不吝赐教 #include int main() { int i,t=0; char a[100]; printf("please enter 字母:n"); gets(a); for(i=0;a[i]!='';i++) { if(a[i]=='32') //32是空格的ascall码 t++; } printf("空格个数为:%dn",t); return 0; } 解决方案 既然是用ascii码判断,直接判断a[i]

请大神帮忙做一个matlab的三次样条插值程序,小弟是小白啊,谢过了!急急急

问题描述 请大神帮忙做一个matlab的三次样条插值程序,小弟是小白啊,谢过了!急急急 已知: X=[1 3 6 8 10 14 16 20 23] Y=[0.345 0.343 0.616 0.900 0.581 0.302 0.250 0.101 0.104] 求: X=[1 2 3 ...... 23]对应的Y值 解决方案 x=[1 3 6 8 10 14 16 20 23]; y=[0.345 0.343 0.616 0.900 0.581 0.302 0.250 0.101 0.104