| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 20743 人关注过本帖
标题:我用void写的函数,为什么显示 main must return int
只看楼主 加入收藏
请多关照
Rank: 2
等 级:论坛游民
帖 子:12
专家分:20
注 册:2016-11-3
结帖率:33.33%
收藏
已结贴  问题点数:10 回复次数:9 
我用void写的函数,为什么显示 main must return int
void main(){
    int year,month,day,cha;
    char key='y';//定义一个字符
    while(key=='y'){
        printf("请输入年月:");
        scanf("%d%d",&year,&month);
        day=month_day(year,month);//计算每月有多少天的函数
        cha=month_cha(year,month);
        print(day,cha);
        printf("(y/n):");
        scanf("%c",&key);
        scanf("%c",&key);
    }
}
//我还改用int mian (){  return 0;}的形式也不行
求大神指点
搜索更多相关主题的帖子: return 
2016-11-04 11:39
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
收藏
得分:0 
void main(){
     int year,month,day,cha;
     char key='y';//定义一个字符
    while(key=='y'){
         printf("请输入年月:");
         scanf("%d%d",&year,&month);
         day=month_day(year,month);//计算每月有多少天的函数
        cha=month_cha(year,month);
         print(day,cha);
         printf("(y/n):");
         scanf("%c",&key);
         scanf("%c",&key);   //去掉多余的scanf 如果还是不行,请发上完整代码
     }
 }

早知做人那么辛苦!  当初不应该下凡
2016-11-04 11:46
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:2 
“main must return int” 汉文意思是 “main函数必须返回int类型”

“int mian (){  return 0;}的形式也不行”,如果只有这一句那当然不行,因为C标准规定必须有main函数,你还得写个main函数,写mian是没用的
2016-11-04 12:09
StadyC
Rank: 6Rank: 6
等 级:侠之大者
威 望:6
帖 子:182
专家分:430
注 册:2016-10-13
收藏
得分:2 
建议main函数都定义为:
int main()
{
    ......
    return 0;
}
2016-11-04 13:40
清白小生
Rank: 2
来 自:深圳
等 级:论坛游民
帖 子:15
专家分:16
注 册:2016-11-3
收藏
得分:2 
发一下完整代码吧

懒惰解决不了啥事
2016-11-04 15:15
陈CDG
Rank: 2
等 级:论坛游民
帖 子:17
专家分:57
注 册:2016-4-11
收藏
得分:2 
如果你用的是c-free5的话那就很好解释了看看图吧
main用void :
图片附件: 游客没有浏览图片的权限,请 登录注册

main用int :
图片附件: 游客没有浏览图片的权限,请 登录注册

所以说c-free5要求主函数必须有返回值,哪怕是0,void 只能用于子函数
2016-11-04 18:10
请多关照
Rank: 2
等 级:论坛游民
帖 子:12
专家分:20
注 册:2016-11-3
收藏
得分:0 
回复 2楼 炎天
去掉多余的不行。
这是全部代码:
#include<stdio.h>
void print(int x,int y);//x表示这个月总天数,y表示这个月的一号星期
int month_day(int x,int y);//x表示年份,y表示月份。用于计算该月多少天
int run(int y); //判断是不是闰年 y表示月份
int month_cha(int x,int y);//每月一号的星期  x表示年份,y表示月份
int year_cha(int x);//每年一月一号的星期  x表示年份
void main(){
    int year,month,day,cha;
    char key='y';
    while(key=='y'){
        printf("请输入年月:");
        scanf("%d%d",&year,&month);
        day=month_day(year,month);
        cha=month_cha(year,month);
        print(day,cha);
        printf("(y/n):");
        scanf("%c",&key);
        scanf("%c",&key);
    }
}
void printf(int x,int y){
    int i,j;
    printf("sun  Mon  Tue  Wed  Thu  Fri  Sat\n");
    for (i=0;i<y;i++)
    printf("\t");
    for(j=1;j<=x;j++,i++){
        printf("%d\t",j);
        if(i%7==6){
            printf("\n");
        }
    }
    printf ("\n");
}
int run(int y){//计算闰年
    int r;
    if(y%4!=0) r=0;
    else if((y%100==0)&&(y%400!=0))  r=0;
    else r=1;
    return r;
}
int month_day(int x,int y){
    int day;
    switch(y){
        case 1:day=31;break;case 2:day=28+run(x);break;case 3:day=31;break;case 4:day=30;break;
        case 5:day=31;break;case 6:day=30;break;case 7:day=31;break;case 8:day=31;break;   
        case 9:day=30;break;case 10:day=31;break;case 11:day=30;break;case 12:day=31;break;
    }
    return day;
}
int month_cha(int x,int y){
    int day;
    switch(y){ //12个月份 每个月一号的星期与下个月星期互推
        case 1:day=0;break;case 2:day=3;break;case 3:day=3+run(x);break;case 4:day=6+run(x);break;
        case 5:day=1+run(x);break;case 6:day=4+run(x);break;case 7:day=6+run(x);break;case 8:day=2+run(x);break;
        case 9:day=5+run(x);break;case 10:day=0+run(x);break;case 11:day=3+run(x);break;case 12:day=5+run(x);break;
    }
    day=day+year_cha(x);
    if(day<0){
        day=7-(-day)%7;
    }
    if(day>6){
        day=day%7;
    }
    return day;
}
int year_cha(int x){
    int i,day=0;
    if(x>2012){
        for(i=2012;i<x;i++){
            day=day+run(i);
            day++;
        }
    }
    else if(x<2012){
        for(i=x;i<2012;i++){
            day=day-run(x);
            day--;
        }
    }
    else day=0;
    printf ("day=%d\n",day);
    return day;
}

我是一个很笨很笨的新手,请多多关照,谢谢~
2016-11-04 21:09
请多关照
Rank: 2
等 级:论坛游民
帖 子:12
专家分:20
注 册:2016-11-3
收藏
得分:0 
回复 6楼 陈CDG
我用的是  Dev-cPP 5 。
我改用int  试了试,还是错误。显示的是下面信息,什么意思?
C:\Users\e5\AppData\Local\Temp\ccu733dU.o    万年历.cpp:(.text+0x65): undefined reference to `print(int, int)'
F:\Dev-Cpp\程序\collect2.exe    [Error] ld returned 1 exit status

我是一个很笨很笨的新手,请多多关照,谢谢~
2016-11-04 21:16
请多关照
Rank: 2
等 级:论坛游民
帖 子:12
专家分:20
注 册:2016-11-3
收藏
得分:0 
回复 5楼 清白小生
你好,这是完整代码,帮我运行修改一下吧,谢谢:
#include<stdio.h>
void print(int x,int y);//x表示这个月总天数,y表示这个月的一号星期
int month_day(int x,int y);//x表示年份,y表示月份。用于计算该月多少天
int run(int y); //判断是不是闰年 y表示月份
int month_cha(int x,int y);//每月一号的星期  x表示年份,y表示月份
int year_cha(int x);//每年一月一号的星期  x表示年份
void main(){
    int year,month,day,cha;
    char key='y';
    while(key=='y'){
        printf("请输入年月:");
        scanf("%d%d",&year,&month);
        day=month_day(year,month);
        cha=month_cha(year,month);
        print(day,cha);
        printf("(y/n):");
        scanf("%c",&key);
        scanf("%c",&key);
    }
}
void printf(int x,int y){
    int i,j;
    printf("sun  Mon  Tue  Wed  Thu  Fri  Sat\n");
    for (i=0;i<y;i++)
    printf("\t");
    for(j=1;j<=x;j++,i++){
        printf("%d\t",j);
        if(i%7==6){
            printf("\n");
        }
    }
    printf ("\n");
}
int run(int y){//计算闰年
    int r;
    if(y%4!=0) r=0;
    else if((y%100==0)&&(y%400!=0))  r=0;
    else r=1;
    return r;
}
int month_day(int x,int y){
    int day;
    switch(y){
        case 1:day=31;break;case 2:day=28+run(x);break;case 3:day=31;break;case 4:day=30;break;
        case 5:day=31;break;case 6:day=30;break;case 7:day=31;break;case 8:day=31;break;   
        case 9:day=30;break;case 10:day=31;break;case 11:day=30;break;case 12:day=31;break;
    }
    return day;
}
int month_cha(int x,int y){
    int day;
    switch(y){ //12个月份 每个月一号的星期与下个月星期互推
        case 1:day=0;break;case 2:day=3;break;case 3:day=3+run(x);break;case 4:day=6+run(x);break;
        case 5:day=1+run(x);break;case 6:day=4+run(x);break;case 7:day=6+run(x);break;case 8:day=2+run(x);break;
        case 9:day=5+run(x);break;case 10:day=0+run(x);break;case 11:day=3+run(x);break;case 12:day=5+run(x);break;
    }
    day=day+year_cha(x);
    if(day<0){
        day=7-(-day)%7;
    }
    if(day>6){
        day=day%7;
    }
    return day;
}
int year_cha(int x){
    int i,day=0;
    if(x>2012){
        for(i=2012;i<x;i++){
            day=day+run(i);
            day++;
        }
    }
    else if(x<2012){
        for(i=x;i<2012;i++){
            day=day-run(x);
            day--;
        }
    }
    else day=0;
    printf ("day=%d\n",day);
    return day;
}

我是一个很笨很笨的新手,请多多关照,谢谢~
2016-11-04 21:19
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
收藏
得分:0 
回复 7楼 请多关照
void print(int x,int y);//x表示这个月总天数,y表示这个月的一号星期

void printf(int x,int y){                //printf 多了个f
     int i,j;
     printf("sun  Mon  Tue  Wed  Thu  Fri  Sat\n");
     for (i=0;i<y;i++)
     printf("\t");
     for(j=1;j<=x;j++,i++){
         printf("%d\t",j);
         if(i%7==6){
             printf("\n");
         }
     }
     printf ("\n");
 }

早知做人那么辛苦!  当初不应该下凡
2016-11-04 23:41
快速回复:我用void写的函数,为什么显示 main must return int
数据加载中...
 
   



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

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