#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
参考方法:
#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; }1647c-exercise-example3
既然是计算机解题,那么就用最笨的方法,尽量少动脑筋。
分析:假设这个数是 x,那么有 x+100=a*a,x+268=b*b。找到满足 b*b-a*a=168 的数,就能找到 x。
#include<stdio.h> int main(){ int a,b; for(b=13;b*b-(b-1)*(b-1)<=168;b++){//如果你不知道第一个大于168的平方数,可以设置b=1; for(a=0;a<b;a++){ if(b*b-a*a==168) printf("%d ",a*a-100); } } }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 大,那也没必要搜索了。
#include<stdio.h> #include<math.h> int main(void){ for (int i = 0; (i+1)*(i+1)-i*i <= 168 ; ++i) { for (int j = i+1; j*j-i*i<=168 ; ++j) { if(j*j-i*i==168) { printf("j = %d,i = %d,j*j-i*i=%d\n", j,i,j*j-i*i); printf("x = %d\n", i*i-100); } } } }