当前位置: 代码迷 >> C语言 >> 问大家个 关于 c 的问题`````
  详细解决方案

问大家个 关于 c 的问题`````

热度:115   发布时间:2005-04-02 23:01:00.0
问大家个 关于 c 的问题`````
一个数组 是 a[4] a[0]=1,a[1]=2,a[2]=0,a[3]=4; 我想把 数组a 中非0的元素 放到一个新的数组里,即 b[0]=a[0],b[1]=a[1], b[2]=a[3] 也就是 把那个 a[2]=0 不赋给 数组b[2],而是把 非0的a[3] 赋给 b[2] 该怎么做````` 急啊``!!!!!!!!!!!
搜索更多相关的解决方案: 问题  元素  

----------------解决方案--------------------------------------------------------
数组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&lt;=j;d++)
   {
    printf("%d\n",b[d]);
   }


输出数组b,最后个数是随机的呀
----------------解决方案--------------------------------------------------------
随机?
----------------解决方案--------------------------------------------------------
就是随机吧,b[4]没有被赋值过啊
----------------解决方案--------------------------------------------------------
for(d=0;d&lt;=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编辑过]


----------------解决方案--------------------------------------------------------
  相关解决方案