| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 849 人关注过本帖
标题:请帮我看看我写的程序到底那里逻辑错误了,我看了好久了。感谢。题目是《输 ...
只看楼主 加入收藏
maohuafei
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-3-20
结帖率:0
收藏
已结贴  问题点数:20 回复次数:3 
请帮我看看我写的程序到底那里逻辑错误了,我看了好久了。感谢。题目是《输入年和月输出该年该月的月历,见输出样历。》
输入年和月输出该年该月的月历,见输出样历。
提示公式1: w=(y+(y-1)/4-(y-1)/100+(y-1)/400)%7,是计算y年1月1日星期几。 w值是0~6分别表示星期日~星期六
提示公式2:w1=(w+n-1)%7,是计算y年第n天是星期几。

编程提示:
void main()
{
int i,y,m,n; //n值表示正在处理的某天是该年的第几天
  int w,w1,n,n1; //w存储该年的1月1号的星期值,w1存储该年第n天的星期值,n1是该月的天数

1. 输入年月y、m
2. 计算该月1号是这年第几天 n
3. 计算该年1月1号星期几 w
4. 计算该月1日是星期几 w1
5. 计算该月有几天 n1  
6. 输出月份表头“Sun Mon Tue Wen Thu Fri Sat”
7. 根据w1,输出若干空格,为每月第一天确定输出的位置,月份表头中的星期几对齐
8. 内循环处理输出该月1到n1天
   {
输出某天
计算该天是y年的第几天
计算该天是星期几
如果是星期六,则输出换行
}
     
}

 输入描述输入两个整数,分别表示年月
 输出描述输出月历
 输入样例
2011 11
 输出样例
Sun  Mon  Tue  Wen  Thu  Fri  Sat
            1    2    3    4    5
  6    7    8    9   10   11   12
 13   14   15   16   17   18   19
 20   21   22   23   24   25   26
 27   28   29   30
#include<stdio.h>
int fun(int i);
int fun1(int j);
void main()
{
    int w,w1,n,n1;
    int y,m,i=0,j,k,l;
    scanf("%d %d",&y,&m);
    n=fun(i);
    w=(y+(y-1)/4-(y-1)/100+(y-1)/400)%7;
    w1=(w+n-1)%7;
    n1=fun1(j);
    printf("Sun Mon Tue Wen Thu Fri Sat\n");
    for(k=1;k<=w1;k++)
        printf("    ");
    for(l=1;l<=n1;l++){
        printf("%3d",l);
        w1++;
        if(w1==6){
            w1=0;
            printf("\n");}
    }
}
int fun(int i)
{
    int m,y;
   switch(m-1)
   {
       case 11: i=i+30;
       case 10: i=i+31;
       case   9: i=i+30;
       case   8: i=i+31;
       case   7: i=i+31;
       case   6: i=i+30;
       case   5: i=i+31;
       case   4: i=i+30;
       case   3: i=i+31;
       case   2: if((y%400==0)||(y%4==0)&&(y%100!=0))   i=i+29;
                     else   i=i+28;
       case   1: i=i+31;
   }
   i=i+1;
   return i;
}
int fun1(int j)
{
    int m,y;
   switch(m)
   {   
       case 12: j=31;break;
       case 11: j=30;break;
       case 10: j=31;break;
       case   9: j=30;break;
       case   8: j=31;break;
       case   7: j=31;break;
       case   6: j=30;break;
       case   5: j=31;break;
       case   4: j=30;break;
       case   3: j=31;break;
       case   2: if((y%400==0)||(y%4==0)&&(y%100!=0))   j=29;
                     else   j=28;break;
       case   1: j=31;break;
   }
   return j;
}
搜索更多相关主题的帖子: 计算 
2012-04-03 13:36
maohuafei
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-3-20
收藏
得分:0 
自己先顶顶.
2012-04-03 13:37
moonnight
Rank: 5Rank: 5
等 级:职业侠客
帖 子:158
专家分:380
注 册:2012-3-17
收藏
得分:20 
程序代码:
#include<stdio.h>

 int fun(int i);

 int fun1(int j);

 void main()

 {
     int w,w1,n,n1;
     int y,m,i=0,k,l;
     scanf("%d %d",&y,&m);
     n=fun(m,y);
     w=(y+(y-1)/4-(y-1)/100+(y-1)/400)%7;
     w1=(w+n-1)%7;
     n1=fun1(m,y);
     printf("Sun Mon Tue Wen Thu Fri Sat\n");
     for(k=1;k<=w1;k++)
         printf("    ");
     for(l=1;l<=n1;l++){
         printf("%3d ",l);
         w1++;
         if(w1%7==0){
             w1=0;
             printf("\n");}
     }
     scanf("%d",&y);

 }

 int fun(int m,int y)

 {
     int i=0;
    switch(m-1)
    {
   
        case 11: i=i+30;
        case 10: i=i+31;
        case   9: i=i+30;
        case   8: i=i+31;
        case   7: i=i+31;
        case   6: i=i+30;
        case   5: i=i+31;
        case   4: i=i+30;
        case   3: i=i+31;
        case   2: if((y%400==0)||(y%4==0)&&(y%100!=0))   i=i+29;
                      else   i=i+28;
        case   1: i=i+31;
    }
    i=i+1;
    return i;

 }

 int fun1(int m,int y)

 {
     int j;
    switch(m)
    { 
        case 12: j=31;break;
        case 11: j=30;break;
        case 10: j=31;break;
        case   9: j=30;break;
        case   8: j=31;break;
        case   7: j=31;break;
        case   6: j=30;break;
        case   5: j=31;break;
        case   4: j=30;break;
        case   3: j=31;break;
        case   2: if((y%400==0)||(y%4==0)&&(y%100!=0))   j=29;
                      else   j=28;break;
        case   1: j=31;break;
    }
    return j;

 }
2012-04-03 17:57
moonnight
Rank: 5Rank: 5
等 级:职业侠客
帖 子:158
专家分:380
注 册:2012-3-17
收藏
得分:0 
函数方面多看看书
2012-04-03 17:58
快速回复:请帮我看看我写的程序到底那里逻辑错误了,我看了好久了。感谢。题目是 ...
数据加载中...
 
   



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

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