标题:问大家个 关于 c 的问题`````
只看楼主
adm_qxx
Rank: 1
等 级:新手上路
帖 子:92
专家分:0
注 册:2005-4-5
得分:0 
对不起,刚才一时疏忽: if(a[i] != 0) //建议把!=0写上以增加可读性 { b[j]=a[i]; j++; } 应该为: if(a[i] != 0) //建议把!=0写上以增加可读性 { b[j]=a[i]; j++; //或者两句合并成一句:b[j++] = a[i]; }

学习是进步的基础.
2005-04-07 08:11
musicml
Rank: 1
等 级:新手上路
帖 子:273
专家分:0
注 册:2005-4-2
得分:0 
哈哈,其实这个问题可以用动态数组实现,这样可以控制数组的长度!!

//程序如下: #include <stdio.h> #include <stdlib.h>

void fuzhiarry() { int arrynum; int counterip = 0; int counterarry = 0; int * iarry; int * ip; printf("please input the arry length : \n"); scanf("%d", & arrynum); iarry = (int *)malloc(arrynum *sizeof(int)); if(!iarry) exit(1); for(int i = 0 ; i < arrynum; i++) { printf("please input the %dth result\n", i+1); scanf("%d",iarry); iarry++; } iarry -= arrynum; ip = (int * )malloc(arrynum * sizeof(int)); if(!ip) exit(1); do { if(*iarry && counterarry < arrynum ) { *ip = *iarry; ip++; iarry++; counterip++; counterarry++; } else { counterarry++; iarry++; } }while(counterarry < arrynum);

ip = ip - counterip; iarry = iarry - arrynum; for(int j = 0;j<arrynum;j++) { printf("\n"); printf("输入数组的第 %d 数为:\n",j+1); printf("%-5d",*iarry); iarry++; } printf("\n"); for(int k = 0 ;k<counterip;k++) { printf("\n"); printf("转换数组的第 %d 数为:\n", k+1); printf("%-5d",*ip); ip++; } printf("\n"); ip -= counterip; iarry -= arrynum; free(ip); free(iarry); } void main() { fuzhiarry(); }


Every thing is possible.
2005-04-08 12:33



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-14676-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.870791 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved