编写一个函数myMove,其功能是将一个数组中的所有为0的元素移至数组末尾,并保持数组非0元素的相对顺序不变Input
一行:一个正整数n(1<=n<=100)和n个整数(其中包含若干个0)
Output
一行,将n个整数中所有为0的元素移至数组末尾,并保持n个数组中非0元素的相对顺序不变
Sample Input
10 7 6 5 3 9 8 8 0 0 2
Sample Output
7 6 5 3 9 8 8 2 0 0
这是我写的错在哪了?
#include
#include
#define N 100
int main()
{
int n,i,j=0,m=0;
char a[N],b[N],t[N];
scanf("%d",&n);
getchar();
for(i=0;i<n;i++)
{
scanf(" %c",&a[i]);
if(a[i]!='0')
{
b[j]=a[i];
j++;
}
if(a[i]=='0')
{
t[m]=a[i];
m++;
}
}
strcat(b,t);
printf("%s",b);
return 0;
}
https://zhidao.baidu.com/question/562030064.html
既然是对整数排个序,你怎么用字符数组?
还有你用scanf读字符数据的时候把空格也读进去了。
c是读所有字符,所以空格也会读,如果你偏用c的话,先要通过空格分割字符串,然后再判断
如果用d,100就读出来的是1 0 0,也不好
用s%比较好scanf遇空格结束,进行下一个字符串读