#include <stdlib.h>
#include <stdio.h>
int main(void)
{
int year,month,day,a=0;
printf("\n请输入年、月、日,格式为:年 月日(2015 12 10)\n");
scanf("%d%d%d",&year,&month,&day);
int alldays=0;
if((year%4==0 && year%100!=0) || year%400==0)
a=1;
switch(month-1)
{
case 11:alldays=alldays+30;
case 10:alldays=alldays+31;
case 9:alldays=alldays+30;
case 8:alldays=alldays+31;
case 7:alldays=alldays+31;
case 6:alldays=alldays+30;
case 5:alldays=alldays+31;
case 4:alldays=alldays+30;
case 3:alldays=alldays+31;
case 2:alldays=alldays+(28+a);
case 1:alldays=alldays+31;
}
alldays=alldays+day;
printf("year:%d\nmonth:%d\nday:%d\nalldays:%d\n",year,month,day,alldays);
}
1649c-exercise-example4
参考方法:
#include<stdio.h>
int main()
{
printf("请输入日期(格式:xxxx.xx.xx):");
int year,month,date;
scanf("%d.%d.%d",&year,&month,&date);
int md[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};/*多写一个,方便标号*/
/*判断是否是闰年*/
if(((year%4==0)&&(year%100!=0))||(year%400==0)) {
md[2]+=1;
}
/*判断日期符合实际*/
if(year<=0||month<1||month>12||date<1||date>md[month]) {
printf("输入数据无效!\n");
return 0;
}
int mi,days=0;
for (mi=0;mi<month;mi++) {
days+=md[mi];
}
printf("%d.%d.%d是这一年的第%d天。\n",year,month,date,days+date);
return 0;
}
1648c-exercise-example4
参考方法:
#include<stdio.h>
int main()
{
int year, month, day,sumday=0;
int monthday[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
printf("请输入年、月、日,格式为:年,月,日(2015,12,10)\n");
scanf("%d,%d,%d",&year,&month,&day);
if (year % 400 == 0 || (year % 100 != 0 && year % 4 == 0))
{
monthday[1] =29;
}
for (int i = 0; i < month-1; i++)
{
sumday += monthday[i];
}
sumday += day;
printf("%d\n",sumday);
return 0;
}
1650c-exercise-example4
参考方法:
1649c-exercise-example4
参考方法:
1648c-exercise-example4
参考方法:
1647c-exercise-example3
既然是计算机解题,那么就用最笨的方法,尽量少动脑筋。
分析:假设这个数是 x,那么有 x+100=a*a,x+268=b*b。找到满足 b*b-a*a=168 的数,就能找到 x。
1646c-exercise-example3
我的思路是这样:关键是两个平方数之差是168,于是搜索所有符合条件的平方数。i 为比较小的那个,j 为比较大的那个。符合 j*j-i*i=168 时,x 就等于 i*i-100。
搜索 i 时,如果 (i+1) 的平方减去i的平方都比 168 大,那就不用搜索,不可能符合条件了。搜索 j 时,从 i+1 开始搜索,如果 j 平方 -i 平方 比 168 大,那也没必要搜索了。