C语言 计算日历周的第一天



我正在用 C 做一个类项目,我需要计算给定 21 世纪"跳过 2000 年"的年份的月份和日期。老师分步分解:

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

yy = yyyy % 100;

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

result = result + (result/5.0):

我只是有点纠结于如何删除小数位?

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

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

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

我已经包含了我现在为我的代码提供的所有内容。任何意见将不胜感激!

编辑:我已经修复了我的 for 循环并花了一些时间来检查我的代码,当我尝试用"d[ypercent] 我得到一堆混乱的字符"输出一天时,我只是卡住了。我已经将y%定向到一个字符串值,但我似乎无法弄清楚为什么。我也发布了更新的代码。我已经检查了它,它编译得很好,但它不会输出正确的日期。

所以我的问题是:如何修复"printf("1 月 1 日在 %s :", 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;
}

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

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

char *d[7];

我只是有点纠结于如何删除小数位?

您需要做的就是将其转换为整数。这将删除小数点。

int intresult = result + (result/5.0);

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

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

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

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

最新更新