c语言问题各位大侠帮帮我 荷兰旗问题:无序输入一定的r,w,b,只进行一次遍历,将其按rwb顺序输出。

2024-12-17 08:26:34
推荐回答(1个)
回答1:

本题的一个完整的c程序如下,win-tc和Dev-c++下调试通过。
/* 荷兰旗问题:无序输入一定的r,w,b,只进行一次遍历,将其按rwb顺序输出。 */
#include
#include
#define N 81 /*设输入字符串不超过80字符,可更改*/

int main()
{int i,j;
char s[N],ch;
printf("Please input a string:\n"); /*将输入当成字符串简化处理*/
gets(s); /* 你要是说按brw或者wrb排序输出多好,那就根本不需要下面的替换 */
for(i=0;i{if(s[i]=='r') /* 根据题意这里用替换法,具有通用性 */
s[i]='c';
if(s[i]=='w')
s[i]='d';
if(s[i]=='b')
s[i]='e';
}
for(i=1;i{ch=s[i];
j=i-1;
while(j!=-1&&ch{
s[j+1]=s[j];
j--;
}
s[j+1]=ch;
}
printf("The result you want is:\n");
for(i=0;i{if(s[i]=='c')
s[i]='r';
if(s[i]=='d')
s[i]='w';
if(s[i]=='e')
s[i]='b';
}
printf("%s\n",s);
system("pause");
return 0;
}