| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 956 人关注过本帖
标题:不知道错在何处,帮忙看看啊!
只看楼主 加入收藏
magic475
Rank: 1
等 级:新手上路
帖 子:66
专家分:0
注 册:2005-1-14
收藏
 问题点数:0 回复次数:11 
不知道错在何处,帮忙看看啊!

问题:将数组a中的奇数存到数组b中,并输出! #include <stdio.h> #include <stdlib.h> #define N 100

void main() { int *a,*b,i,j,t; a=(int*)malloc(N*sizeof(int)); b=(int*)malloc(N*sizeof(int)); for(i=0;i<N;i++){ *(a+i)=0; *(b+i)=0; } for(i=0;i<N;i++) scanf("%d",a+i);

for(i=0,j=0;i<N;i++){ if(*(a+i)%2!=0){ *(b+j)=*(a+i); j++; } } t=j; for(i=0;i<t;i++) printf("%d\t",*(b+i)); } 小弟是用vc编译的,就是得不到正确答案,不知道以上程序错在何处,请指教,谢谢!!!

搜索更多相关主题的帖子: 正确答案 include 
2005-01-17 10:32
空前
Rank: 1
等 级:新手上路
帖 子:1146
专家分:0
注 册:2004-5-11
收藏
得分:0 
没错误,换个别的编译器就可以了

可能是VC不支持  malloc  函数吧

要用  new

2005-01-17 10:38
magic475
Rank: 1
等 级:新手上路
帖 子:66
专家分:0
注 册:2005-1-14
收藏
得分:0 
VC是支持malloc函数的,它在stdlib.h文件中定义的。
上面那个程序是编译通过了,只是得不到想要的结果,我怀疑是逻辑有错,但又找不出来。
还希望各位兄弟姐妹再给我看看,不甚感激!!!
2005-01-17 10:50
空前
Rank: 1
等 级:新手上路
帖 子:1146
专家分:0
注 册:2004-5-11
收藏
得分:0 
为什么要搞得这么麻烦,直接定义一个数组不就完了吗?

还来个动态的,最后又不释放,还不如直接来个固定的!

2005-01-17 10:56
空前
Rank: 1
等 级:新手上路
帖 子:1146
专家分:0
注 册:2004-5-11
收藏
得分:0 

你说的逻辑错误是什么啊? 是不是要你一直输入?

如果你有耐心输入一百个数就没问题! for(i=0;i<N;i++) scanf("%d",a+i); 改成: for(i=0;i<10;i++) scanf("%d",a+i); 这样就没那么累了!


2005-01-17 11:01
young
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:223
专家分:160
注 册:2004-9-5
收藏
得分:0 
程序是没有问题的
不过你的编程风格可不好啊
调用malloc函数分配空间后,如果不用了,你就应该用free把它释放么,要不然这些内存就不能被其他程序使用了么,或许你在PC上看不出来,
但是如果是嵌入式系统的话,如手机,内存比较小,这样分配空间了内存而不释放,
最严重的后果就是导致内存耗尽,甚至当机,很忌讳的哦

如果你爱C语言,请你爱指针; 如果你爱指针,请你爱指针的指针;
2005-01-17 11:09
magic475
Rank: 1
等 级:新手上路
帖 子:66
专家分:0
注 册:2005-1-14
收藏
得分:0 
我按你说的试着去把N改为10了,但还是无法得到正确的结果。比如{1,2,3,4,5,6,7,8,9,10}按程序的要求应该输出1,2,3,4,5。但是不知道为什么就是只输出一个1,我试着用printf的方法打印检查,就是循环体只运行一次,不明白啊!!!
另外,那个忘了用free(void *)函数,多谢提醒,不然多运行几次把内存都耗尽了^_^
2005-01-17 11:13
aniude
Rank: 2
等 级:新手上路
威 望:3
帖 子:231
专家分:0
注 册:2004-11-3
收藏
得分:0 
我也是VC 只是把N 10就行了,换不换指针思路也是一样//

2005-01-17 11:14
空前
Rank: 1
等 级:新手上路
帖 子:1146
专家分:0
注 册:2004-5-11
收藏
得分:0 
我用的win-tc,没问题啊!

2005-01-17 11:19
magic475
Rank: 1
等 级:新手上路
帖 子:66
专家分:0
注 册:2005-1-14
收藏
得分:0 

怎么大家都说行啊,我就是不行啊,郁闷! 发个TC版的,请各位帮忙调试一下,谢谢! 我已经编译通过了,就是无法得到正确的结果,还是怀疑逻辑问题! #include <stdio.h> #include <alloc.h> #define N 10

void main() { int *a,*b,i,j,t; a=(int*)malloc(N*sizeof(int)); b=(int*)malloc(N*sizeof(int)); for(i=0;i<N;i++){ *(a+i)=0; *(b+i)=0; } for(i=0;i<N;i++) scanf("%d",a+i);

for(i=0,j=0;i<N;i++){ if(*(a+i)%2!=0){ *(b+j)=*(a+i); j++; } } t=j; for(i=0;i<t;i++) printf("%d\t",*(b+i)); free(a); free(b); }

2005-01-17 11:19
快速回复:不知道错在何处,帮忙看看啊!
数据加载中...
 
   



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

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