C 计算日历周的第一天
我正在用C做一个课堂专题,我需要计算出21世纪“跳过2000”的月份和日期。 老师将其分解为以下步骤: 第一步是获取年份的最后两位数;我已经做了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%的
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感谢键入太快。已修复