201703-2学生排队
201703-2学生排队
201703-2学生排队
这个题在所有第二题中应该只是弟弟级别的了,不过还是在输出时遇到格式不对的问题,还是功力不够啊。原本用的输出语句是printf("%2d",a[i]);输入样例结果看着也对,提交就是0。"%2d"表示的是输出的每个字符占两位,所有操作数都是个位数时结果正确,但如果输出的号码有两位数或以上位数的号码时,便会与前/后数字连在一起,导致结果格式错误。

#include<stdio.h>

int main(){
	int n,m,s[1000],p,q;
	scanf("%d%d",&n,&m);
	for(int i=0;i<n;i++){
		s[i]=i+1;            //给学生编号 
	}

	for(int i=0;i<m;i++){    //调整m次 
		scanf("%d%d",&p,&q);
		int j=0;
		while(s[j]!=p)j++;   //找到要调整的同学在数组中下标 		 
		
		while(q<0){          //往前调
		    s[j]=s[j-1];     //将前面-q个同学往后移 
			j--;
		    q++;
		}
		       
		while(q>0){          //往后调 
			s[j]=s[j+1];     //将后面q个同学往前移 
			j++;
			q--;
	    
		} 
		s[j]=p;              //将要调整的同学放到最终位置  
	}
	
	for(int i=0;i<n;i++){    //输出队伍 
		printf(" %d",s[i]);  //号码之间空格 在%d前面加一个"空格" 
	}
	
	return 0;
}

欢迎交流指导。

相关文章: