| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 541 人关注过本帖
标题:一段奇怪的程序
只看楼主 加入收藏
lmjv222
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-1-28
收藏
 问题点数:0 回复次数:8 
一段奇怪的程序
很奇怪,编译不报错,显示出来的值也是真确的,但是就是运行完毕以后会出错,这个是什么原因?望高手指教~


#include<stdio.h>
void main()
{
int n[20],num=0,a=0;
for(int i=1;i<=1000;i++)
{
for(int j=1;j<=i/2;j++)
{
if(i==1)
continue;
if(i%j==0)
{
n[a]=j;
a++;
num+=j;
}
}
if(i==num)
{
printf("完数=%d\n",i);
printf("其因子为:");
for(int k=0;k<a;k++)
{
printf("%d ",n[k]);
}
printf("\n");
}
num=0;
a=0;
}
}

[此贴子已经被作者于2007-2-1 19:18:09编辑过]

搜索更多相关主题的帖子: include 
2007-02-01 19:17
orangew
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2007-1-28
收藏
得分:0 
不知道
2007-02-01 19:20
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
在Win-TC 1.91下编译报错

for(int ........
中int 应去掉

而且其中j等变量也未定义

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2007-02-01 19:21
lmjv222
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-1-28
收藏
得分:0 
以下是引用卧龙孔明在2007-2-1 19:21:48的发言:
在Win-TC 1.91下编译报错

for(int ........
中int 应去掉

而且其中j等变量也未定义

哦,我用的是vc编译器,不报错的
改过了,问题还是存在~~
我试过了,当循环次数大于350时就会出错,不会是循环太多了吧....
只有1000次而以啊~~~~

2007-02-01 19:23
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
尽量不要用VC编译,vc主要编译c++的源代码,而对纯C支持的相当不好

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2007-02-01 19:29
lmjv222
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-1-28
收藏
得分:0 
以下是引用卧龙孔明在2007-2-1 19:29:24的发言:
尽量不要用VC编译,vc主要编译c++的源代码,而对纯C支持的相当不好

了解~~呵呵
我觉得是不是有可能和n[20]有关
这段程序,20个元素是用不完的
有可能没有把20个元素用完,他就会出错
内存浪费?
我糊涂了....

2007-02-01 19:33
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
你等一下,我改一下让它能在TC2下正常运行

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2007-02-01 19:51
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
#include<stdio.h>
int main(void) /*void main()是不正确的,具体请看论坛精华帖*/
{
int n[100],num=0,a=0; /*数组大小不够*/
int j,k,i;
for(i=1;i<=1000;i++)
{
for(j=1;j<=i/2;j++)
{
if(i==1)
continue;
if(i%j==0)
{
n[a]=j;
a++;
num+=j;
}
}
if(i==num)
{
printf("完数=%d\n",i);
printf("其因子为:");
for(k=0;k<a;k++)
{
printf("%d ",n[k]);
}
printf("\n");
}
num=0;
a=0;
}
getch(); /*观看运行结果*/
return 0; /*最好加上*/
}

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2007-02-01 19:55
lmjv222
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-1-28
收藏
得分:0 

恩,多谢版主~~
是因为数组元素大小不够~~~
3Q~~

2007-02-01 20:10
快速回复:一段奇怪的程序
数据加载中...
 
   



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

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