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

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

热度:120   发布时间:2005-04-03 03:31:00.0
其实我觉得问题出在
for(d=0;d<=j;d++)

你把d<=j改为d<j就可以了....

----------------解决方案--------------------------------------------------------
#include <stdio.h>
void main()
{
    int a[4]={1,0,2,4},b[10];
    int k,j=0,m;
    for(k=0;k<4;k++)
    {
        if(a[k]!=0) {
            b[j]=a[k];
            j++;   }
    }
    printf("%d,%d,%d",b[0],b[1],b[2]);
    getch();
    return;
}
----------------解决方案--------------------------------------------------------
j=0;
for(i=0;i<N;i++)
if(a[i]==0){b[j]=a[i];j++;}
对不对??
这样 应该可以了吧`

----------------解决方案--------------------------------------------------------

#include <stdio.h> void main() { int a[10]={0,1,2,0,0,4,0,6,0,7}; int i=0,j;

for(j=0;j<10;) { while(!a[j]) j++; a[i++]=a[j++]; } for(j=0;j<i;j++) printf("%d\n",a[j]); }


----------------解决方案--------------------------------------------------------
#include&lt;stdio.h&gt;
main(){
int a[4]={1,0,2,3},b[4],j=0,i;
for(i=0;i&lt;4;i++)
{
  if(a[i]!=0)
  b[j++]=a[i];

}
for(i=0;i&lt;j;i++)
  printf("%d\t",b[i]);
}

看谁的简单.............我就不给b[4]赋值.......一样不会出错。嘿嘿。不过我只是为了逃避编译而已。所以并不是好方法.过段时间我想想用动态数组.看能不能编译出来
----------------解决方案--------------------------------------------------------
这里的人真热心啊````````
----------------解决方案--------------------------------------------------------
我已经 解决了`````

这里的人真热心`````

我会在这里学习的```````
----------------解决方案--------------------------------------------------------

非递减的LA和LB,构建个 递增的LC main() {int a[4],b[7],c[4],d[7],e[11],f[11],i,j,l,k,lk,*p,*q,*ff,*ee;

p=&e[0]; /* p=e;*/ q=&f[0]; ff=&f[0]; ee=&e[0];

a[0]=2,a[1]=4,a[2]=5,a[3]=5,b[0]=4,b[1]=4,b[2]=6,b[3]=4,b[4]=4,b[5]=4,b[6]=4;

for(i=0;i<=2;i++) { for(j=0;j<=2-i;j++) if(a[j] != a[j+1]) {lk=a[j];a[j]=a[j+1]; a[j+1]=lk;} else a[j+1]=0; }

for(i=0;i<=5;i++) { for(j=0;j<=5-i;j++) if (b[j] != b[j+1]) {lk=b[j];b[j]=b[j+1];b[j+1]=lk;} else b[j+1]=0; }

for (i=0;i<7;i++) { for(j=0;j<4;j++) { if (a[j] != b[i]) c[j]=a[j]; else a[j]=0;

} /* 判断线形表LA里 是否有 和线形表LB里相同的元素,如果有,就把那个元素的值赋给0 */

} /* for(j=0;j<4;j++) printf("a[%d]=%d\n",j,c[j]); */ for(j=0;j<4;j++) for(i=0;i<7;i++) { { if (b[i] != a[j]) d[i]=b[i]; else b[i]=0;

} } /* 判断线形表LB里 是否有 和线形表LA里相同的元素,如果有,就把那个元素的值赋给0 */

/* for(i=0;i<7;i++) printf("b[%d]=%d\n",i,d[i]); */

for(l=0;l<4;l++) { if(a[l] != 0) e[l]=a[l]; else e[l]=a[l]; } /*把LA的元素:即数组a的元素放到一个新数组E[10]*/ /* for(k=0;k<4;k++) printf("c[i]=%d\n",e[k]); */

for(k=0;k<7;k++) { e[k+4]=b[k] ; } /*把LB里的元素:即数组b的元素插入到数组E[10]*/

/*for(k=0;k<11;k++) printf("c[%d]=%d\n",k,e[k]); */

/* for(k=0;k<11;k++) 先判断数组e里是否为0,不等于0的话就放到数组f { if ((*p) != 0)

{ f[k]=(*p);

printf("c[%d]=%d\n",k,f[k]);

}

p=p+1; } */

for(k=0;k<11;k++) /* 初始化数组 f[]=0*/ { f[k]=0; }

for(k=0;k<11;k++) /*两个分别指向数组e和数组f的指针(p--》e,q--》f)判断数组e中是否有0元素,把非0元素的值顺序放到数组f中*/ { if ((*p) != 0) { (*q)=(*p); q=q+1; p=p+1; } else { p=p+1;} }

for(i=0;i<=9;i++) { for(k=0;k<=9-i;k++) if(f[k] > f[k+1]) {lk=f[k];f[k]=f[k+1];f[k+1]=lk;} }

/* for(i=0;i<11;i++) printf("f[%d]=%d\n",i,f[i]); */ for(i=0;i<11;i++) e[i]=0;

for(k=0;k<11;k++) { if ((*ff) != 0) { (*ee)=(*ff); ee=ee+1; ff=ff+1; } else ff=ff+1; } for(i=0;i<11;i++) if (e[i] != 0) printf("eee[%d]=%d\n",i,e[i]);

} 已经做出来了````哈```` 大家看看先```


----------------解决方案--------------------------------------------------------

三楼的做法就不错.既简单又明了.

楼上的写法不是很赞同.建议找一本介绍C语言编码规范的书来读. 斗胆重写楼上的程序,还请指教. #include<stdio.h> #include<conio.h>//包含函数getch() main() { int i,j=0; int a[4]={1,2,0,4},b[4]; for(i=0;i < 4;i++) { if(a[i] != 0) //建议把!=0写上以增加可读性 { b[j]=a[i]; j++; } } for(i=0;i < j;i++) //建议写d < j,这样循环次数正好是j次.这样增加可读性. { printf("%d\n",b[i]); //局部变量可以重用没必要定义太多的变量. } getch();//保住运行界面,击任意键退出. }


----------------解决方案--------------------------------------------------------

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