cnCalc计算器论坛

 找回密码
 注册
搜索
查看: 3970|回复: 4

[聊天] 这个程序哪里错了??

[复制链接]
发表于 2012-10-20 15:27:49 | 显示全部楼层 |阅读模式
rt,求解,出了点小毛病。。。
#include<stdio.h>#include"zylib.h"int year(int x);BOOL isyear(int x);int sumyear(int x,int t);int days(int y,int a );typedef enum{SUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY}WEEKDAY;int main(){int x,y,t,sum,a,sumdays,date,dates;const WEEKDAY original_date=MONDAY;WEEKDAY weekday;printf("a number:\n");x=GetRealFromKeyboard();printf("a number:\n");y=GetRealFromKeyboard();t=year(x);printf("%d\n",t);sum=sumyear(x,t);printf("%d\n",sum);a=isyear(x);printf("%d\n",a);sumdays=sum+days(y,a);printf("%d\n",sumdays);dates=days(y+1,a)-days(y,a);printf("Calendar %d-%d\n",x,y);printf("--------------------------\n");printf("Su  Mo  Tu  We  Th  Fr  Sa\n");printf("--------------------------\n");for( date=1;date<=dates;++date){weekday=(WEEKDAY)((date+(int)original_date-1+sumdays)%7);switch(weekday){case SUNDAY: printf("%2d",date);break;case MONDAY: printf("%4d",date);break;case TUESDAY: printf("%4d",date);break;case WEDNESDAY: printf("%4d",date);break;case THURSDAY: printf("%4d",date);break;case FRIDAY: printf("%4d",date);break;case SATURDAY: printf("%4d\n",date);break;default:;}}printf("--------------------------\n");return 0;} int year(int x){int t;t=0;while(x-1>2007){t += isyear(x-1);    x--;}return t;}BOOL isyear(int x){return x%4==0&&x%100!=0||x%400==0;}int sumyear(int x,int t){int sum;sum=365*(x-2007-t)+366*t;return sum;}int days(int y,int a){int b;while(y>=1&&y<=12){if(y==1) return b=0;else if(y==2) return b=31;else if(y==3) return b=59+a;else if(y==4) return b=90+a;else if(y==5) return b=120+a;else if(y==6) return b=151+a;else if(y==7) return b=181+a;else if(y==8) return b=212+a;else if(y==9) return b=243+a;else if(y==10) return b=273+a;else if(y==11) return b=304+a;else if(y==12) return b=334+a;}printf("error\n");return b=-1;}这是一个日历
发表于 2012-10-20 18:05:39 | 显示全部楼层
没回车……,看起来难受……
发表于 2012-10-20 18:11:30 | 显示全部楼层
如果是C语言的话,貌似没有bool吧?
  1. #include<stdio.h>
  2. #include"zylib.h"
  3. int year(int x);
  4. BOOL isyear(int x);
  5. int sumyear(int x,int t);
  6. int days(int y,int a );
  7. typedef enum{
  8.         SUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY}
  9.         WEEKDAY;
  10. int main()
  11. {
  12.     int x,y,t,sum,a,sumdays,date,dates;
  13.     const WEEKDAY original_date=MONDAY;WEEKDAY weekday;
  14.     printf("a number:\n");
  15.     x=GetRealFromKeyboard();
  16.     printf("a number:\n");
  17.     y=GetRealFromKeyboard();
  18.     t=year(x);
  19.     printf("%d\n",t);
  20.     sum=sumyear(x,t);
  21.     printf("%d\n",sum);
  22.     a=isyear(x);
  23.     printf("%d\n",a);
  24.     sumdays=sum+days(y,a);
  25.     printf("%d\n",sumdays);
  26.     dates=days(y+1,a)-days(y,a);
  27.     printf("Calendar %d-%d\n",x,y);
  28.     printf("--------------------------\n");
  29.     printf("Su  Mo  Tu  We  Th  Fr  Sa\n");
  30.     printf("--------------------------\n");
  31.     for( date=1;date<=dates;++date)
  32.     {
  33.          weekday=(WEEKDAY)((date+(int)original_date-1+sumdays)%7);
  34.          switch(weekday)
  35.          {
  36.               case SUNDAY:
  37.                    printf("%2d",date);break;
  38.               case MONDAY:
  39.                    printf("%4d",date);break;
  40.               case TUESDAY:
  41.                    printf("%4d",date);break;
  42.               case WEDNESDAY:
  43.                    printf("%4d",date);break;
  44.               case THURSDAY:
  45.                    printf("%4d",date);break;
  46.               case FRIDAY:
  47.                    printf("%4d",date);break;
  48.               case SATURDAY:
  49.                    printf("%4d\n",date);break;
  50.               default:;
  51.          }
  52.     }
  53.     printf("--------------------------\n");
  54.     return 0;
  55. }
  56. int year(int x)
  57. {
  58.     int t;
  59.     t=0;
  60.     while(x-1>2007)
  61.     {
  62.          t += isyear(x-1);   
  63.          x--;
  64.     }
  65.     return t;
  66. }
  67. BOOL isyear(int x)
  68. {
  69.      return x%4==0&x%100!=0||x%400==0;
  70. }
  71. int sumyear(int x,int t)
  72. {
  73.     int sum;sum=365*(x-2007-t)+366*t;
  74.     return sum;
  75. }
  76. int days(int y,int a)
  77. {
  78.     int b;
  79.     while(y>=1&&y<=12)
  80.     {
  81.          if(y==1) return b=0;
  82.          else if(y==2) return b=31;
  83.          else if(y==3) return b=59+a;
  84.          else if(y==4) return b=90+a;
  85.          else if(y==5) return b=120+a;
  86.          else if(y==6) return b=151+a;
  87.          else if(y==7) return b=181+a;
  88.          else if(y==8) return b=212+a;
  89.          else if(y==9) return b=243+a;
  90.          else if(y==10) return b=273+a;
  91.          else if(y==11) return b=304+a;
  92.          else if(y==12) return b=334+a;
  93.     }
  94.     printf("error\n");
  95.     return b=-1;
  96. }
复制代码
 楼主| 发表于 2012-10-20 18:49:15 | 显示全部楼层
奇怪,明明打了回车的。
谢谢了。
发表于 2012-10-27 01:55:41 | 显示全部楼层
不如存成cpp,这样就可以用bool了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|cnCalc计算器论坛

GMT+8, 2024-4-24 04:08 , Processed in 0.058885 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表