| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 20653 人关注过本帖
标题:我用void写的函数,为什么显示 main must return int
取消只看楼主 加入收藏
请多关照
Rank: 2
等 级:论坛游民
帖 子:12
专家分:20
注 册:2016-11-3
结帖率:33.33%
收藏
已结贴  问题点数:10 回复次数:3 
我用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: 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
快速回复:我用void写的函数,为什么显示 main must return int
数据加载中...
 
   



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

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