C++基础问题,对一个char型数组排序。看看我这个程序哪里错了。3q

2025-03-26 00:19:15
推荐回答(2个)
回答(1):

看一下运行结果:

程序如下:

#include

using namespace std;

void mySort(char* a,int n);

int main()

{

    int m ;

    cout << "请输出字符串的长度:" << endl;

    cin >> m;

    char* t = new char[m];

    cout << "请输入字符串:" << endl;

 //   while(cin >> *t){

for(int j=0;j

        cin>> t[j];

    }

    mySort(t,m);

cout<<"冒泡降序排序:"<

    for (size_t i = 0 ; i != m ; i ++){

         cout << t[i];

    }

cout <

return 0;

}


void mySort(char* a,int n)

{

for( int i = 0; i < n; i ++ )                 // 遍历数组  

    {  

        for( int j  = 0; j < n - i - 1; j ++ )    // 遍历  

        {  

            if( a[j] < a[j+1] )  

            {  

                int temp = a[j];              // 交换两个数  

                a[j] = a[j+1];   

                a[j+1] = temp;  

            }  

        }  

    }

}

这个问题主要在于指针和数组操作方面,下来也需要多学习一下动态内存分配方面的,包括new运算符等方面。多看看这方面的blog

参考链接:

http://www.cnblogs.com/zhoug2020/archive/2012/04/06/2434139.html

http://blog.sina.com.cn/s/blog_76b0cde40100pdsc.html

回答(2):

while(cin>>*t)出错了,你没有为输入开辟内存,你读入的数据程序不知道存在哪里,所以会出错。

假设输入的字符不超过512个(包括字符串的结束字符)
必须先申请空间
t=new char[512];