可以帮我看下哪里出问题吗?

zhangyue_lala 2017-10-17 04:50:43
#include<stdio.h>
#include<stdlib.h>
#include<queue>

std::queue<int> queArr[10];
std::queue<int> collect;

int main(int argc, char* argv[]){

char buffut[100];
int i = 0;
while((buffut[i] = getchar()) != '\n')
i++;
buffut[i] = '\0';
while(buffut[i]){

switch(buffut[i]){
case '0':
queArr[0].push(0);break;
case '1':
queArr[1].push(1);break;
case '2':
queArr[2].push(2);break;
case '3':
queArr[3].push(3);break;
case '4':
queArr[4].push(4);break;
case '5':
queArr[5].push(5);break;
case '6':
queArr[6].push(6);break;
case '7':
queArr[7].push(7);break;
case '8':
queArr[8].push(8); break;
case '9':
queArr[9].push(9); break;
default:
printf("error input\n");
return -1;

}

i++;
}
i = 0;

printf("%d ",queArr[0].front());

while(i<10){

while(queArr[i].size() != 0){

collect.push(queArr[i].front());
queArr[i].pop();
}
i++;
}

while(collect.size() != 0){

printf("%d ", collect.front());
collect.pop();

}

putchar('\n');

return 0;
}
...全文
127 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
csulizhang 2017-10-17
  • 打赏
  • 举报
回复
while((buffut[i] = getchar()) != '\n') i++; buffut[i] = '\0'; 输入字符,直到输入回车为止,并且给buffut添加结束符号 接下来,你再调用while(buffut[i]),问题就在这里,注意,这个时候的i并不是从0开始,而是之前无数次i++之后的结果,那么此时,你的while(buffut[i])就是上面定义的结束符,没意义了,所以知道该怎么办了吧
  • 打赏
  • 举报
回复
改了几处,自己体会一下,为什么

#include<stdio.h>
#include<stdlib.h>
#include<queue>

std::queue<int> queArr[10];
std::queue<int> collect;

int main(int argc, char* argv[]) {

	char buffut[100];
	int i = 0;
	while ((buffut[i] = getchar()) != '\n')
		i++;
	buffut[i] = '\0';
	i = 0;
	while (buffut[i]) {

		switch (buffut[i]) {
		case '0':
			queArr[0].push(0);break;
		case '1':
			queArr[1].push(1);break;
		case '2':
			queArr[2].push(2);break;
		case '3':
			queArr[3].push(3);break;
		case '4':
			queArr[4].push(4);break;
		case '5':
			queArr[5].push(5);break;
		case '6':
			queArr[6].push(6);break;
		case '7':
			queArr[7].push(7);break;
		case '8':
			queArr[8].push(8); break;
		case '9':
			queArr[9].push(9); break;
		default:
			printf("error input\n");
			return -1;

		}

		i++;
	}
	i = 0;

	//printf("%d ", queArr[0].front());

	while (i < 10) {

		while (queArr[i].size() != 0) {
			collect.push(queArr[i].front());
			queArr[i].pop();
		}
		i++;
	}

	while (collect.size() != 0) {
		printf("%d ", collect.front());
		collect.pop();

	}

	putchar('\n');

	return 0;
}
狂奔吧码奴 2017-10-17
  • 打赏
  • 举报
回复
不知道你要干啥。

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧