求助一下小问题
为啥第二次输入会出来一堆呀,每次都这样{:10_266:}输出结果为啥是(null)啊,求助! 1. L17 - L26 之间的代码,看起来没有拷贝'\0' , 同时 你的 k 清零了吗?应该是在第二次输入的时候,覆盖了 '\0',在 L27 之后添加 k=0;
2. 你每次输入的字符串长度都是2,但是你的 act1, act2 却都是4,这就很迷,推测后面是 '\0' 被你冒泡排序置换到了 str 的位置。
3. 你这个问题,单步调试,观察每个变量的内存,一分钟就能解决。 楼主,以后还是发复制粘贴代码吧 你这个程序我看的都一愣一愣的,全程用一个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;
}
小甲鱼的铁粉 发表于 2020-7-8 15:06
楼主,以后还是发复制粘贴代码吧
{:10_266:}第一次搞 lhgzbxhz 发表于 2020-7-8 15:19
你这个程序我看的都一愣一愣的,全程用一个str数组存储所有结果,不出错才怪
应该声明一个int数组,读取一 ...
好的{:10_266:} yuan1311467 发表于 2020-7-8 16:32
好的
本帖最后由 认真学习的pea 于 2020-7-14 10:01 编辑
可能是gets函数调用之后缓存区没有清除
gets函数使用之后将缓存区清除
在gets后面加一个while(getch()!='\n');就可以清除缓存区了 认真学习的pea 发表于 2020-7-14 09:29
可能是gets函数调用之后缓存区没有清除
gets函数使用之后将缓存区清除
在gets后面加一个while(getch()!=' ...
{:10_279:}好
页:
[1]