第十一周课堂作业(二)

太懒了 毕竟这道题解法太明显 直接上代码吧

  • 今天也要冲冲冲!!!

课堂作业

方法一:

#include <stdio.h>
#include <string.h>

int main()
{
	int s[10];
	int n;
	int count=0;
	int i=0;
	int rr,nx,lb;
	int temp;

	printf("请输入;0代表红色,1代表白色,2代表蓝色\n");
	do{ 
        scanf("%d",&s[i++]); 
		count++;
    }while(getchar() != '\n');
    rr=-1;
    nx=0;
	lb=count;
	while(nx!=lb)
	{
		if(s[nx]==0) 
		{
			rr++;
			temp=s[nx];
			s[nx]=s[rr];
			s[rr]=temp;
			nx++;
		}else if(s[nx]==1)
		{
			nx++;
		}else if(s[nx]==2)
		{
			lb--;
			temp=s[nx];
			s[nx]=s[lb];
			s[lb]=temp;
		}
		
	}

	for(i=0;i<count;i++)   \\这里实现输出rbw
	{
		switch(s[i])
		{
		case 0:putchar('r');break;
		case 1:putchar('w');break;
		case 2:putchar('b');break;
		}
	}
	puts("");
	return(0);
}

方法二:(很明显自己看)

	while(nx!=lb)
	   {
	   	switch(s[nx])
	   	{
	   		case 0:	rr++;
			temp=s[nx];
			s[nx]=s[rr];
			s[rr]=temp;
			nx++;break;
			case 1:nx++;break;
			case 2:lb--;
				   temp=s[nx];
				   s[nx]=s[lb];
				   s[lb]=temp;break;
		}
	   }

错误方法:(在数字少的时候可以输出,多了就效率极低甚至跑不出来我不知道为什么以后有缘再解释)

	while(nx!=lb)
	{
		if(s[nx]==0) 
		{
			rr++;
			temp=s[nx];
			s[nx]=s[rr];
			s[rr]=temp;
			nx++;
		}
		if(s[nx]==1)
		{
			nx++;
		}
		if(s[nx]==2)
		{
			lb--;
			temp=s[nx];
			s[nx]=s[lb];
			s[lb]=temp;
		}
		
	}
发布了21 篇原创文章 · 获赞 31 · 访问量 2504

猜你喜欢

转载自blog.csdn.net/solitudi/article/details/103347175