巨兔12138 发表于 2020-7-11 09:06:56

无法成功调用函数

题目要求:在主函数中输入10个等长字符串。用另一函数对其进行排序。

#include<iostream>
#include<string>

using namespace std;

void sort(string* a);

int main()
{
        string a;
        int i;
        cout << "初始化数组:";
        for (i = 0; i < 10; i++)
                cin >> a;

        string* p;
        p = &a;

        sort(p);
        return 0;
}

void sort(string* a)
{
        int i, j;
        for (i = 0; i < 10; i++)
        {
                for (j = 0; j < 10-i; j++)
                {
                        if (*(a + j) > * (a + j + 1))
                        {
                                string temp;
                                temp = *(a + j + 1);
                                *(a + j + 1) = *(a + j);
                                *(a + j) = temp;
                        }
                }
        }

        cout << "排序后得:";
        for (i = 0; i < 10; i++)
                cout << a << " ";
}


上述是我写的代码,生成解决方法的时候没有报错,就是调试的时候,输入10个等长字符串以后,不显示重新排序后的结果

小甲鱼的铁粉 发表于 2020-7-11 10:35:34

楼主,你发一下你输入的内容吧

小甲鱼的铁粉 发表于 2020-7-11 10:52:29

你看 这个行不行,我也是刚学c++,不太理解字符串的排序,不知道字符串的大小是怎么比较的,改了一下
#include<iostream>
#include<string>
#include<stdlib.h>
using namespace std;

void sort(string* a);

int main()
{
      string a;
      int i;
      cout << "start new array:" << endl;
      for (i = 0; i < 10; i++)
      {
                  cout << "a[" << i <<"]" << "is : ";
                  cin >> a;
      }         

      string* p;
      p = &a;

      sort(p);
      system("pause");
      return 0;
}

void sort(string* a)
{
      int i, j;
      for (i = 0; i < 10; i++)
      {
                for (j = 0; j < 10-i; j++)
                {
                        if (*(a + j) > * (a + j + 1))
                        {
                              //cout << *(a +j) << endl;
                              string temp;
                              temp = *(a + j + 1);
                              *(a + j + 1) = *(a + j);
                              *(a + j) = temp;
                        }
                }
      }

      cout << "the result is:" << endl;
      for (i = 0; i < 10; i++)
                cout << "a[" << i << ']' << ":"<< a << endl;
}

巨兔12138 发表于 2020-7-11 11:03:01

小甲鱼的铁粉 发表于 2020-7-11 10:52
你看 这个行不行,我也是刚学c++,不太理解字符串的排序,不知道字符串的大小是怎么比较的,改了一下

您能给说一下我的那个代码错在哪了吗

巨兔12138 发表于 2020-7-11 11:03:38

小甲鱼的铁粉 发表于 2020-7-11 10:35
楼主,你发一下你输入的内容吧

我输入的内容和你的差不多

小甲鱼的铁粉 发表于 2020-7-11 11:11:47

巨兔12138 发表于 2020-7-11 11:03
您能给说一下我的那个代码错在哪了吗

别别别用您{:10_250:},你的代码没有错啊,我只是改进了一下

巨兔12138 发表于 2020-7-11 11:17:20

小甲鱼的铁粉 发表于 2020-7-11 10:52
你看 这个行不行,我也是刚学c++,不太理解字符串的排序,不知道字符串的大小是怎么比较的,改了一下

您好,我用的vs2019,我使用了和您相同的代码,输入的相同的数据,可是还是得不到正确结果{:5_104:}

小甲鱼的铁粉 发表于 2020-7-11 11:28:38

巨兔12138 发表于 2020-7-11 11:17
您好,我用的vs2019,我使用了和您相同的代码,输入的相同的数据,可是还是得不到正确结果

奇怪{:10_243:}

小甲鱼的铁粉 发表于 2020-7-11 11:46:37

要不你用我的代码运行一下啊,给我截个运行框的图?

巨兔12138 发表于 2020-7-11 12:57:11

小甲鱼的铁粉 发表于 2020-7-11 11:46
要不你用我的代码运行一下啊,给我截个运行框的图?

您的代码我也无法正常运行

巨兔12138 发表于 2020-7-11 12:58:49

小甲鱼的铁粉 发表于 2020-7-11 11:46
要不你用我的代码运行一下啊,给我截个运行框的图?

我不会发图片,我就把运行框里的内容给您复制下来吧,如下:
start new array:
ais : z
ais : s
ais : d
ais : f
ais : g
ais : h
ais : j
ais : k
ais : l
ais : a

E:\C++.Program\188.11\Debug\188.11.exe (进程 13352)已退出,代码为 -1073741819。
按任意键关闭此窗口. . .

小甲鱼的铁粉 发表于 2020-7-11 12:59:14

巨兔12138 发表于 2020-7-11 12:57
您的代码我也无法正常运行

你别用您了{:10_245:},这太。。。。。

小甲鱼的铁粉 发表于 2020-7-11 12:59:45

你用你自己的代码,运行一下,截个图,我瞅瞅咋会呀{:10_257:}

巨兔12138 发表于 2020-7-11 13:01:04

小甲鱼的铁粉 发表于 2020-7-11 12:59
你用你自己的代码,运行一下,截个图,我瞅瞅咋会呀

我的代码也是这个结果,初始化了以后不显示重新排序后的结果

小甲鱼的铁粉 发表于 2020-7-11 13:01:15

巨兔12138 发表于 2020-7-11 12:58
我不会发图片,我就把运行框里的内容给您复制下来吧,如下:
start new array:
ais : z


嗯 好

小甲鱼的铁粉 发表于 2020-7-11 13:10:54

我也不会了,要不然重启电脑{:10_250:}?vscode确实容易出问题

巨兔12138 发表于 2020-7-11 13:12:11

小甲鱼的铁粉 发表于 2020-7-11 13:10
我也不会了,要不然重启电脑?vscode确实容易出问题

嗯嗯好的,还是谢谢啦

半亩鱼塘 发表于 2020-7-12 11:06:02

学习下
页: [1]
查看完整版本: 无法成功调用函数