----------------解决方案--------------------------------------------------------
数组a是输入进去的还是定义好的,长短是不是定值?
----------------解决方案--------------------------------------------------------
#include <stdio.h>
int main()
{
int a[10]={0,1,2,0,0,4,0,6,0,7};
int b[10];
int i,j;
for(i=j=0;i<10;i++)
if(a[i])
b[j++]=a[i];
for(i=0;i<j;i++)
printf("%d\n",b[i]);
}
管他数组是变长的还是固定的呢,反正方法是一样的.
----------------解决方案--------------------------------------------------------
#include<stdio.h> main() { int i,j=0,d; int a[4]={1,2,0,4},b[4];
for(i=0;i<=3;i++) { if(a[i]) { b[j]=a[i]; j++; } } for(d=0;d<=j;d++) { printf("%d\n",b[d]); } system("PAUSE"); }
system("PAUSE");-----这句可以让你保存住运行页面,,如果你不是用TC的话~
无意求分~
----------------解决方案--------------------------------------------------------
4楼的
for(d=0;d<=j;d++)
{
printf("%d\n",b[d]);
}
输出数组b,最后个数是随机的呀
----------------解决方案--------------------------------------------------------
随机?
----------------解决方案--------------------------------------------------------
就是随机吧,b[4]没有被赋值过啊
----------------解决方案--------------------------------------------------------
for(d=0;d<=j-1;d++)
这样应该勉强得了吧
----------------解决方案--------------------------------------------------------
可以再加一个变量,记录下来a[i]=0 的次数
再把b[]的个数减去就好了~
----------------解决方案--------------------------------------------------------
刚才想得麻烦了~不用添变量
这样也可以:让j的值在赋值之前变化:
#include<stdio.h> main() { int i,j=-1,d,k; int a[4]={1,2,0,4},b[4];
for(i=0;i<=3;i++) { if(a[i]) { j++; b[j]=a[i]; } } for(d=0;d<=j;d++) { printf("%d\n",b[d]); } system("PAUSE"); }
[此贴子已经被作者于2005-4-3 2:38:09编辑过]
----------------解决方案--------------------------------------------------------