计算一个日历周的第一天

时间:2016-02-05 02:40:46

标签: c computer-science

我正在用C做一个班级项目,我需要计算21世纪“跳过2000”的一年中的月份和日期。 老师把它分解成几步:

第一步是获取当年的最后两位数字;我已经完成了

yy = yyyy % 100;

第二步计算两位数的25%并删除小数 获得2-10%的数字,然后将其添加到自身;我已经完成了

result = result + (result/5.0):

我只是被问到如何丢弃小数位?

第三步是将我们的25%值添加回我们在第一步中获得的原始两位数字。 这也是我坚持的另一个步骤。

第四步减去7的最大拟合倍数;我在顶部创建了一个数组。

然后我需要从25%的值中减去1,因为输入的年份是闰年。

我已经包含了我现在所拥有的所有代码。任何投入将不胜感激!

编辑: 我已经修复了我的for循环并花了一些时间来查看我的代码,当我尝试用“d [ypercent]输出那一天时,我只是坚持下去,我得到了一堆乱七八糟的字符。我已经将ypercent导向了一个字符串价值,我似乎无法弄明白为什么。我已经发布了我的更新代码。我已经过了它,它编译得很好,但它不会输出正确的一天。

所以我的问题是:如何修复“printf(”1月1日是%s:\ n“,yyyy,d [ypercent]);”显示正确的一天?

#include <stdio.h>

  int main()
  {       
    int x = 0;
    int yy, yyyy;
    int lastX, ypercent;
    float result;

    const char *d[7];                                                                                                         
    d[0] = "Sunday";
    d[1] = "Monday";
    d[2] = "Tuesday";
    d[3] = "Wednesday";
    d[4] = "Thursday";
    d[5] = "Friday";
    d[6] = "Saturday";
    d[7] = "Sunday";

    printf("Which year? ");
    scanf ("%d", &yyyy);

    yy = yyyy % 100;                                                                                                
    ypercent = yy + yy *(.25);


    result = yy * .1;                                                                                               
    result = result + (result/5.0);    

         for  (x = 0; x < ypercent; x++)                                                                                    
            {    
             if ((7 * x) > ypercent)                                                                                        
             break;                                                                                                 
             lastX = x;                                                                                             
            }

            ypercent = ypercent - lastX;


    printf("Janurary 1st, %d is on a %s :\n ", yyyy , d[ypercent]);

    getchar();
    return 0;
}

1 个答案:

答案 0 :(得分:0)

除了拼写错误(例如缺少分号和括号)

您应该将d声明为字符串指针数组

char *d[7];
  

我只是被问到如何丢弃小数位?

您需要做的就是将其转换为int。这会丢掉小数点。

int intresult = result + (result/5.0);

请注意,由于声明您不需要显式转换它

int intresult = (int)(result + (result/5.0));

但是,您可以截断它,但将值保持为浮点模式

result = (int)(result + (result/5.0));