标题:请教两个问题
只看楼主
lxhf546
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-1-19
 问题点数:0 回复次数:6 
请教两个问题
/*约瑟复环,数组做法*/
#include<stdio.h>
#define N 50
int main() 问题1:这里我用void main()也是可以的,为什么呢?请问两者有什么区别?
{
int n,m,i,count=0,num=0,data[N];
printf("输入队列中总人数和要报的数:");
scanf("%d%d",&n,&m);
for(i=0;i<n;i++)//初始化,全部进队。
{
data[i]=0;
}
i=0;
while(n-count>1)
{
if(num<m&&data[i]==0) //报数
{
num++;
}
if(num==m) //处理出队
{
data[i]=1; //标记表示出队
num=0; //报数器置0
count++; //出队人数增加
printf("第%d个出列的是%d\n",count,i+1);
}
i=(i+1)%n; 这句语言真实太漂亮了!!
}
i=0;
while(i<n&&data[i]==1) //寻找最后一个
{
i++;
}
printf("剩下的是第%d个\n",i+1);
return(0); 问题2:“return(0);”这句语言有什么用?我发现把它删了照样可以运行的?
}
搜索更多相关主题的帖子: include color count 
2007-01-21 12:44
csight
Rank: 1
等 级:新手上路
威 望:1
帖 子:293
专家分:0
注 册:2006-6-11
得分:0 
void main()表示没有返回值就不需要return 0;了。
若是int main()
表示返回是整型,要return 0;

头可断,发型不可乱;血可流,皮鞋不可不擦油;
2007-01-21 13:16
lxhf546
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-1-19
得分:0 

谢谢csight,可是我把return 0;删了、或把0改变成任意整数、甚至小数还是能正确运行的,为什么呢?
比如:
#include<stdio.h>
#define N 50
int main()
{
int n,m,i,count=0,num=0,data[N];
printf("输入队列中总人数和要报的数:");
scanf("%d%d",&n,&m);
for(i=0;i<n;i++)//初始化,全部进队。
{
data[i]=0;
}
i=0;
while(n-count>1)
{
if(num<m&&data[i]==0) //报数
{
num++;
}
if(num==m) //处理出队
{
data[i]=1; //标记表示出队
num=0; //报数器置0
count++; //出队人数增加
printf("第%d个出列的是%d\n",count,i+1);
}
i=(i+1)%n;
}
i=0;
while(i<n&&data[i]==1) //寻找最后一个
{
i++;
}
printf("剩下的是第%d个\n",i+1);
return(36.2);
}
运行出来也是对的啊

2007-01-21 13:29
csight
Rank: 1
等 级:新手上路
威 望:1
帖 子:293
专家分:0
注 册:2006-6-11
得分:0 
严格来讲的话,如果不是void型都要有return;
至于你是return什么倒是没什么关系,不过最好是
和你的函数前面的类型一致:
列如float sum()那么就return浮点型的;
你说的“把0改变成任意整数、甚至小数”是没什么关系的,
最多是一个警告;或者有可能它会自动类型转换;

头可断,发型不可乱;血可流,皮鞋不可不擦油;
2007-01-21 13:55
huzi00008
Rank: 1
等 级:新手上路
帖 子:112
专家分:0
注 册:2006-10-9
得分:0 
我还遇到过有人用:return TRUE (FALSE, NULL,OK)等很多情况。也不是太明白

2007-01-23 11:16
tyc611
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2007-1-21
得分:0 
看来大家对这个基本问题都没弄清楚,我来解释一下吧:
1. C/C++标准规定了main函数必须是int型,只所以写成void类型可以编译是因为这些编译器比较老,在语言标准颁布前就发行了,纯属历史原因;
(注:C语言规定了函数可以省略返回类型(C++不可以),此时默认返回int型,所以写成main(){。。。}也是可以的)
2. C/C++标准还规定了main函数可以省略return语句,如果省略,则编译器自动添加return 0;
3. main函数是由操作系统调用的,所以main函数的返回值是返回给操作系统,操作系统由这个返回值来判断程序是否运行正常。并且一般情况下,0表示正常,非0表示错误。编译器还定义了两个预处理变量EXIT_SUCCESS和EXIT_FAILURE,分别代表正常和错误。当然,你可以定义其它非0返回值代表各种错误信息,以供调用你的程序的用户进行判断程序的执行情况。

2007-01-23 12:24
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
得分:0 
ls说的对

具体请看:http://bbs.bc-cn.net/viewthread.php?tid=24305

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2007-01-23 12:30



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




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

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