这个题在所有第二题中应该只是弟弟级别的了,不过还是在输出时遇到格式不对的问题,还是功力不够啊。原本用的输出语句是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;
}
欢迎交流指导。