| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1670 人关注过本帖
标题:把某年某月某天转换为改年的第几天,可为什么我编译后总会有call of nonfun ...
只看楼主 加入收藏
大英
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2014-3-2
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:7 
把某年某月某天转换为改年的第几天,可为什么我编译后总会有call of nonfunction?是不是我函数调用错了
#include<stdio.h>
int year(int y)            (判断是否为闰年)
{if(y%4!=0||(y%4==0&&y%100!=0&&y%400!=0))
  return 0;
  else return 1;
}
int mouth(int m)
{ if(year(m)==0&&m==2)(判断每月天数)
   return 28;
    if(year(m)!=0&&m==2)
     return 29;
   if((m<=7&&m%2!=0)||(m>=8&&m%2==0))
    return 31;
     else
     return 30;
}

void main()
{   int year,mouth,day,day1,day2,m;m=0;day2=0;
   do
   {
     printf( " Input year");
     scanf("%d",&year);
   }while(year<1900||year>3000);
   do
   {
     printf("Input mouth");
     scanf("%d",&mouth);
   }while(mouth<1||mouth>12);
   day2=mouth(m);
   do
   { printf("Input day");
     scanf("%d",&day);
   }while(day<1||day>day2);
   if(mouth==1)
    day1=day;(如果月份为一,直接等于输入日期)

   else if(mouth>1)
   {
     do
      { day1=mouth(m)+day1;(从一月份开始加,直到等于输入月份)
    m++;
      }while(m>mouth-1);
      day1=day1+day;(再加上最大月份的日期)
   }
   printf("Is %d",day1);
}
(可是怎么会编译不过的)
搜索更多相关主题的帖子: include return 
2014-03-02 21:31
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:7 
函数名和变量名  重复
收到的鲜花
  • 大英2014-03-02 23:07 送鲜花  2朵   附言:。。

DO IT YOURSELF !
2014-03-02 21:40
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:7 
是month,mouth是嘴巴的意思
收到的鲜花
  • 大英2014-03-02 23:08 送鲜花  -1朵   附言:我英语不好
  • 大英2014-03-02 23:08 送鲜花  -1朵   附言:我英语不好

重剑无锋,大巧不工
2014-03-02 21:47
w851777025
Rank: 7Rank: 7Rank: 7
来 自:新疆
等 级:黑侠
威 望:2
帖 子:135
专家分:584
注 册:2014-1-19
收藏
得分:7 
这是我写的
程序代码:
#include<stdio.h>
int a,b;
int nian(int n)
{
    int q;
    if((n%4==0)&&(n%100!=0)||(n%400==0))
    {
         q=0;
    }
    else
    {
         q=1;
    }
    return q;
}
int yue(int y)
{
    int p;
    if(y==1||y==3||y==5||y==7||y==8||y==10||y==12)
    {
        p=31;
    }
    else
        if(y==2&&(nian(a)==0))
        {
            p=29;
        }
    else
        if(y==2)
        {
            p=28;
        }
    else
    {
        p=30;
    }
    return p;
}
void ri(int r)
{
    int m=0,i=1;
    while(i<b)
    {
        m+=yue(i);
        i++;
    }
    m+=r;
    printf("%d\n",m);
}
int main()
{
    int c;
    printf("");
    scanf("%d",&a);
    printf("");
    scanf("%d",&b);
    printf("");
    scanf("%d",&c);
    ri(c);
    return 0;
}
英语不好,见笑了
收到的鲜花
  • 大英2014-03-02 23:06 送鲜花  3朵   附言:我很赞同
2014-03-02 22:16
大英
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2014-3-2
收藏
得分:0 
回复 2楼 wp231957
include<stdio.h>
int score(int year)
{ if(year%4!=0||year%4==0&&year%100==0&&year%400!=0)
  return 28;
  else return 29;
}
int score1(int month)
{ if(month==2) return score(month);
    if(((month<=7)&&(month%2!=0))||((month>=8)&&(month%2==0)))
     return 31;
    else
     return 30;
}

int main()
{ int y,m,d,i,j,k; k=0;
  do
  { printf("Input year\n");
    scanf("%d",&y);
  }while(y<1900||y>3000);
  do
  { printf("Input month\n");
    scanf("%d",&m);
  }while(m<1||m>12);
  do
  { printf("Input days(0<day<%d)\n",score1(i));
    scanf("%d",&d);
  }while(d<1||d>score1(i));
  printf("%d %d %d\n",y,m,d);
   if(m==1)
    k=d;
   else
   {  i=1;
       do
       {
    k=k+score1(i);printf(" %d %d\n",i,k);(你看我改了一下,运行一下发现不行结果不对,然后一个一个去找,这两个输出都是检查错误的,发现他们其实可以运算正确结果,但是它们好像不存进去的??而且为什么那个k=k+d无法执行的??搞到最后结果都是过千的)
    i++;
    if(i==2&&i>2) {k=k+score(i);i++; printf(" %d %d\n",i,k);}
       }while(i<m);
      k=k+d;
   }

   printf("Is %d\n");    getch();
   return 0;
}
2014-03-02 23:02
大英
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2014-3-2
收藏
得分:0 
回复 4楼 w851777025
你这个我还是可以看懂的,也挺适合新手看的,可不可以帮我看一下,我自己改的这个哪错了???
include<stdio.h>
int score(int year)
{ if(year%4!=0||year%4==0&&year%100==0&&year%400!=0)
  return 28;
  else return 29;
}
int score1(int month)
{ if(month==2) return score(month);
    if(((month<=7)&&(month%2!=0))||((month>=8)&&(month%2==0)))
     return 31;
    else
     return 30;
}

int main()
{ int y,m,d,i,j,k; k=0;
  do
  { printf("Input year\n");
    scanf("%d",&y);
  }while(y<1900||y>3000);
  do
  { printf("Input month\n");
    scanf("%d",&m);
  }while(m<1||m>12);
  do
  { printf("Input days(0<day<%d)\n",score1(i));
    scanf("%d",&d);
  }while(d<1||d>score1(i));
  printf("%d %d %d\n",y,m,d);
   if(m==1)
    k=d;
   else
   {  i=1;
       do
       {
    k=k+score1(i);printf(" %d %d\n",i,k);(你看我改了一下,运行一下发现不行结果不对,然后一个一个去找,这两个输出都是检查错误的,发现他们其实可以运算正确结果,但是它们好像不存进去的??而且为什么那个k=k+d无法执行的??搞到最后结果都是过千的)
    i++;
    if(i==2&&i>2) {k=k+score(i);i++; printf(" %d %d\n",i,k);}
       }while(i<m);
      k=k+d;
   }

   printf("Is %d\n");    getch();
   return 0;
}
2014-03-02 23:04
w851777025
Rank: 7Rank: 7Rank: 7
来 自:新疆
等 级:黑侠
威 望:2
帖 子:135
专家分:584
注 册:2014-1-19
收藏
得分:0 
程序代码:
include<stdio.h>
int score(int year)
{ if(year%4!=0||year%4==0&&year%100==0&&year%400!=0)
  return 28;
  else return 29;
}
int score1(int month)
{ if(month==2) return score(month);
    if(((month<=7)&&(month%2!=0))||((month>=8)&&(month%2==0)))
     return 31;
    else
     return 30;
}

int main()
{ int y,m,d,i,j,k; k=0;
  do
  { printf("Input year\n");
    scanf("%d",&y);
  }while(y<1900||y>3000);
  do
  { printf("Input month\n");
    scanf("%d",&m);
  }while(m<1||m>12);
  do
  { printf("Input days(0<day<%d)\n",score1(i));//这个i没有值,怎么传参呢
    scanf("%d",&d);
  }while(d<1||d>score1(i));
  printf("%d %d %d\n",y,m,d);
   if(m==1)
    k=d;
   else
   {  i=1;
       do
       {
    k=k+score1(i);printf(" %d %d\n",i,k);(你看我改了一下,运行一下发现不行结果不对,然后一个一个去找,这两个输出都是检查错误的,发现他们其实可以运算正确结果,但是它们好像不存进去的??而且为什么那个k=k+d无法执行的??搞到最后结果都是过千的)
    i++;
    if(i==2&&i>2) {k=k+score(i);i++; printf(" %d %d\n",i,k);}//if(i==2&&i>2)不矛盾吗
       }while(i<m);
      k=k+d;
   }

   printf("Is %d\n");    getch();
   return 0;
} 
还有就是,你要把每个函数的功能理清楚,比如你第一个判断是不是瑞年的函数,那这个函数就只会返回一个结果,是瑞年或者不是瑞年
第二个函数就是判断这个月有多少天,功能就是判断这个月是大月还是小月,如果是小月返回多少天,大月呢……
然后我们就可以根据天数,依次调用年,月求出结果,不用写的那么麻烦。

[ 本帖最后由 w851777025 于 2014-3-2 23:37 编辑 ]
2014-03-02 23:23
大英
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2014-3-2
收藏
得分:0 
回复 7楼 w851777025
额,我不知道没值不可以传参的,好像还真有矛盾
2014-03-02 23:37
快速回复:把某年某月某天转换为改年的第几天,可为什么我编译后总会有call of n ...
数据加载中...
 
   



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

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