#include "Stdio.h"
#include "Conio.h"
#define SWAP(x,y) { char temp; \
temp=x; \
x=y; \
y=temp; \
}
int main(void)
{
char color[]="brbrwrwbbrbwb";
int i=0,j=0,k=strlen(color)-1;
while(color[j]=='b')
i++,j++;
while(color[k]=='r') //跳出循环时的k,color[k]!='r',也就是说该元素已经判断是否是红色
k--;
while(j<=k)
{
if(color[j]=='r')
{
SWAP(color[j],color[k]);//上边的color[k]在此处与color[j]交换,也就是说 color[k]变成color[j],注意color[j]在下一次循环时,还是判断是否是红色。也就是说判断两次是否为红色。
k--;
while(color[k]=='r')
k--;
}
while(color[j]=='w')
j++;
if(color[j]=='b')
{
SWAP(color[j],color[i]);
i++,j++;
}
}
puts(color);
getch();
return 0;
}
加个=号

对了,还有一个问题,还是
条件(3)对于每一个元素而言,测试它是红,是白,还是蓝的工作每种颜色最多只能做一次测试。
