C 计算日历周的第一天

C 计算日历周的第一天,c,computer-science,C,Computer Science,我正在用C做一个课堂专题,我需要计算出21世纪“跳过2000”的月份和日期。 老师将其分解为以下步骤: 第一步是获取年份的最后两位数;我已经做了 yy = yyyy % 100; result = result + (result/5.0): 第二步是计算两位数的25%,并将小数点减去 获取数字的2-10%,然后将其添加到自身中;我已经做了 yy = yyyy % 100; result = result + (result/5.0): 我只是有点纠结于如何去掉小数点 第三步是将25%的

我正在用C做一个课堂专题,我需要计算出21世纪“跳过2000”的月份和日期。 老师将其分解为以下步骤:

第一步是获取年份的最后两位数;我已经做了

yy = yyyy % 100;
result = result + (result/5.0):
第二步是计算两位数的25%,并将小数点减去 获取数字的2-10%,然后将其添加到自身中;我已经做了

yy = yyyy % 100;
result = result + (result/5.0):
我只是有点纠结于如何去掉小数点

第三步是将25%的价值加回到我们在第一步得到的原始两位数上。 这也是我一直坚持的另一个步骤

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

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

我现在已经包括了我所有的代码。任何意见都将不胜感激

编辑: 我已经修复了for循环,并花了一些时间检查了我的代码,当我试图用“d[ypercent]输出当天的内容时,我就被卡住了我得到了一堆乱七八糟的字符。我已经将ypercent指向一个字符串值,但我似乎不知道为什么。我也发布了我的更新代码。我已经检查了它,它编译得很好,但它不会输出正确的日期

所以我的问题是:如何修复“printf”(“一月一日在%s:\n”,yyy,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;
}
#包括
int main()
{       
int x=0;
int-yy,yyy;
int lastX,ypercent;
浮动结果;
常量字符*d[7];
d[0]=“星期日”;
d[1]=“星期一”;
d[2]=“星期二”;
d[3]=“星期三”;
d[4]=“星期四”;
d[5]=“星期五”;
d[6]=“星期六”;
d[7]=“星期日”;
printf(“哪一年?”);
scanf(“%d”和&yyyy);
yy=yyy%100;
ypercent=yy+yy*(.25);
结果=yy*.1;
结果=结果+(结果/5.0);
对于(x=0;xypercent)
打破
lastX=x;
}
ypercent=ypercent-lastX;
printf(“1月1日,%d位于%s:\n”,yyy,d[ypercent]);
getchar();
返回0;
}
除了打字错误(如缺少分号和括号)

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

char *d[7];
我只是有点纠结于如何去掉小数点

你所需要做的就是把它转换成一个整数。这会去掉小数点

int intresult = result + (result/5.0);
注意,由于该声明,您不需要显式强制转换它

int intresult = (int)(result + (result/5.0));
但是,您可以截断它,但将该值保留为浮点模式

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

问题是……?学习。
x++7
是一个语法错误。你的意思是
x+=7
?你的
for
循环似乎也缺少一个结束
}
。我建议在请求帮助之前发布你至少编译过的代码。在尝试分配t之前,你也没有为
d
分配任何内存有几个缺失的分号。有几个表达式:代码> >结果=结果(结果/ 5):< /C> >计算<代码> >结果< /代码>的前120%的值,而不是25%。可能是我遗漏了什么。请注意,<代码> int(结果+(结果/ 5))< /> >在C++中有效,但不在C中;它将被写入<代码>(int)。(result+(result/5.0))在C中。如果您的C编译器接受它,则它是标准C语法的扩展。@JonathanLeffler感谢键入太快。已修复