#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);”这句语言有什么用?我发现把它删了照样可以运行的?
}
----------------解决方案--------------------------------------------------------
void main()表示没有返回值就不需要return 0;了。
若是int main()
表示返回是整型,要return 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);
}
运行出来也是对的啊
----------------解决方案--------------------------------------------------------
严格来讲的话,如果不是void型都要有return;
至于你是return什么倒是没什么关系,不过最好是
和你的函数前面的类型一致:
列如float sum()那么就return浮点型的;
你说的“把0改变成任意整数、甚至小数”是没什么关系的,
最多是一个警告;或者有可能它会自动类型转换;
----------------解决方案--------------------------------------------------------
我还遇到过有人用:return TRUE (FALSE, NULL,OK)等很多情况。也不是太明白
----------------解决方案--------------------------------------------------------
看来大家对这个基本问题都没弄清楚,我来解释一下吧:
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返回值代表各种错误信息,以供调用你的程序的用户进行判断程序的执行情况。
----------------解决方案--------------------------------------------------------
ls说的对
具体请看:http://bbs.bc-cn.net/viewthread.php?tid=24305
----------------解决方案--------------------------------------------------------