| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2161 人关注过本帖
标题:如何编写代码?我总是显示错误
只看楼主 加入收藏
魑魅
Rank: 1
等 级:新手上路
帖 子:77
专家分:9
注 册:2016-9-18
结帖率:85.71%
收藏
已结贴  问题点数:8 回复次数:5 
如何编写代码?我总是显示错误
东软信息学院的老师们,每月15号发工资,但是,如果15号是周六,就14号发,如果是周日,就16号发。XXXX年XX月,几号发工资呢?
输入数据有若干行,每行两个整数,表示年份和月份,以0 0 结束
输出:每行一个输出,表示本月多少号发工资?
搜索更多相关主题的帖子: 学院 信息 如何 
2016-10-03 21:30
逆风而前
Rank: 7Rank: 7Rank: 7
来 自:福建
等 级:黑侠
威 望:7
帖 子:193
专家分:567
注 册:2013-2-14
收藏
得分:0 
把你的代码粘贴出来,看看。
2016-10-03 21:59
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
收藏
得分:0 
我正好有一个根据日期求星期的子程序,改了一下,试了能满足你的要求
百度搜到有一个基姆拉尔森计算公式,是根据日期计算星期的,你也可以改下不用time.h
#include <stdio.h>
#include <time.h>
#define N 3
int xq(int a,int b)
{
      int i;
      struct tm tp={0,0,0,15,b-1,a-1900,0,0,0},*tp1;
    time_t lt_new;
    lt_new=mktime(&tp);
    tp1=localtime(&lt_new);
    return tp1->tm_wday;
}
main()
{
    int a[10],b[10],day;
    for(int i=0;i<N;i++)   
    {
        //printf("请输入年 月信息:\n");
        scanf("%d%d",&a[i],&b[i]);
    }
    for(int i=0;i<N;i++)
    {
        if(xq(a[i],b[i])==6)
        day=14;
        else if(xq(a[i],b[i])==0)
        day=16;
        else
        day=15;
        printf("%d年%d月发工资日期是%d日\n",a[i],b[i],day);
    }
}

[此贴子已经被作者于2016-10-3 22:21编辑过]

2016-10-03 22:10
魑魅
Rank: 1
等 级:新手上路
帖 子:77
专家分:9
注 册:2016-9-18
收藏
得分:0 
回复 3楼 ehszt
你可以 用这个公式在编写一次么?
w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1
w:星期;c:世纪-1;y:年(两位数);m:月(m大于等于
3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月来计算,比
如2003年1月1日要看作2002年的13月1日来计算);d:日;[ ]代表取整,即只要整数部
分。(C是世纪数减一,y是年份后两位,M是月份,d是日数。1月和2月要按上一年的13
月和 14月来算,这时C和y均按上一年取值。)
2016-10-04 13:26
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
收藏
得分:8 
回复 4楼 魑魅
#include <stdio.h>
 #define N 3
 int xq(int y,int m)
 {
       int w;
     if(m>=1&&m<=2)
     {
         m+=12;
         y--;
     }

     w=y+y/4+20/4-2*20+(26*(m+1))/10+15-1;
     w=w%7;
     return w;
 }
 main()
 {
     int a[10],b[10],day;
     for(int i=0;i<N;i++)   
     {
         //printf("请输入年 月信息:\n");
         scanf("%d%d",&a[i],&b[i]);
     }
     for(int i=0;i<N;i++)
     {
         if(xq(a[i]-a[i]/100*100,b[i])==6)
         day=14;
         else if(xq(a[i]-a[i]/100*100,b[i])==0)
         day=16;
         else
         day=15;
         printf("%d年%d月发工资日期是%d日\n",a[i],b[i],day);
     }
 }


[此贴子已经被作者于2016-10-4 16:27编辑过]

2016-10-04 15:07
hgx2313
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2019-6-24
收藏
得分:0 
回复 3楼 ehszt
他是以 0 0 结束 你是不是没有体现出来
2019-06-24 14:52
快速回复:如何编写代码?我总是显示错误
数据加载中...
 
   



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

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