yuan1311467 发表于 2020-7-8 14:05:40

求助一下小问题

为啥第二次输入会出来一堆呀,每次都这样{:10_266:}

输出结果为啥是(null)啊,求助!

赚小钱 发表于 2020-7-8 15:05:06

1. L17 - L26 之间的代码,看起来没有拷贝'\0' , 同时 你的 k 清零了吗?应该是在第二次输入的时候,覆盖了 '\0',在 L27 之后添加 k=0;

2. 你每次输入的字符串长度都是2,但是你的 act1, act2 却都是4,这就很迷,推测后面是 '\0' 被你冒泡排序置换到了 str 的位置。

3. 你这个问题,单步调试,观察每个变量的内存,一分钟就能解决。

小甲鱼的铁粉 发表于 2020-7-8 15:06:21

楼主,以后还是发复制粘贴代码吧

lhgzbxhz 发表于 2020-7-8 15:19:56

你这个程序我看的都一愣一愣的,全程用一个str数组存储所有结果,不出错才怪
应该声明一个int数组,读取一个数字就调用atoi函数将字符串转换为int并存入数组中,然后将str清空
最后直接比较int数组中的值
参考以下代码(纯手撸,没经过调试)
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <iostream>

using namespace std;
int main()
{
        char str = {0};
        int k = 0;
        int nums = {0};
        for (int i=0; i<5; i++)
        {
                printf("请输入数字:");
                cin>>str;
                nums = atoi(str);
                printf("%d\n", nums);
                k++;
                memset(str, '\0', sizeof(str));
        }
       
        for (int act1=0; act1 < 5; act1++)
        {
                for (int act2=0; act2 < act1; act2++)
                {
                        if (nums > nums)
                        {
                                int temp = nums;
                                nums = nums;
                                nums = temp;
                        }
                }
        }
       
        printf("冒泡排序:")
        for (int i=0; i<5; i++)
        {
                printf("%d ", nums);
        }
        return 0;
}

yuan1311467 发表于 2020-7-8 16:27:53

小甲鱼的铁粉 发表于 2020-7-8 15:06
楼主,以后还是发复制粘贴代码吧

{:10_266:}第一次搞

yuan1311467 发表于 2020-7-8 16:32:21

lhgzbxhz 发表于 2020-7-8 15:19
你这个程序我看的都一愣一愣的,全程用一个str数组存储所有结果,不出错才怪
应该声明一个int数组,读取一 ...

好的{:10_266:}

认真学习的pea 发表于 2020-7-14 09:29:00

yuan1311467 发表于 2020-7-8 16:32
好的

认真学习的pea 发表于 2020-7-14 09:29:59

本帖最后由 认真学习的pea 于 2020-7-14 10:01 编辑

可能是gets函数调用之后缓存区没有清除
gets函数使用之后将缓存区清除
在gets后面加一个while(getch()!='\n');就可以清除缓存区了

yuan1311467 发表于 2020-7-14 10:35:36

认真学习的pea 发表于 2020-7-14 09:29
可能是gets函数调用之后缓存区没有清除
gets函数使用之后将缓存区清除
在gets后面加一个while(getch()!=' ...

{:10_279:}好
页: [1]
查看完整版本: 求助一下小问题