荷兰国旗问题,设有一个仅由红,白,蓝三种颜色的条块序列请编写一个程序,使得这些条块按照红白蓝的顺序排好,即排成荷兰国旗图案

#include
#include “string.h”
#define N 20
/*函数功能:交换两个字符的位置。
函数入口参数:需要交换的两个字符。
*/
void SWAP(char *x,char *y)
{
char temp;
temp=*x;
*x=*y;
*y=temp;
}
int main()
{
char color[N];
int i,begin=0,move=0,end;
printf(“请输入b(蓝色)w(白色)r(红色)\n”);
/读入字符串/
gets(color);
end=strlen(color)-1;/由函数值返回字符串color的实际长度减1并赋值给end/
for(i=0;i按原字符顺序打印/
{
printf("%c",color[i]);
}
printf("\n");
while(move<=end)
{
if(color[move]‘w’)
{
move++;
}
else if(color[move]
‘b’)
{
SWAP(&color[move],&color[begin]);
move++;
begin++;
}
else
{
if(color[move]==‘r’)
{
SWAP(&color[move],&color[end]);
end–;
}
}
}
for(i=0;i输出排好顺序后的字符/
{
printf("%c",color[i]);
}
printf("\n");
return 0;
}

你可能感兴趣的:(荷兰国旗问题,设有一个仅由红,白,蓝三种颜色的条块序列请编写一个程序,使得这些条块按照红白蓝的顺序排好,即排成荷兰国旗图案)