c语言 输入日期求是今天是这年的第几天

来源:百度知道 编辑:UC知道 时间:2024/05/18 07:30:45
#include <stdio.h>

void main()
{
char ags;
int sum,a,b,c,i;
do
{
printf("请输入年/月/日:");
scanf("%d年%d月%d日",&a,&b,&c);
sum=0;
if((a%4==0&&a%100!=0)||(a%400==0))
while(b>=1&&b<=12)
{
b--;
if((b==1)||(b==3)||(b==5)||(b==7)||(b==8)||(b==10)||(b==12))
i=31;
else
if((b==4)||(b==6)||(b==9)||(b==11))
i=30;
else
if(b==2)
i=29;
else
i=0;
sum+=i;
}
else
while((b>=1)&&(b<=12))
{
b--;
if((b==1)||(b==3)||(b==5)||(b==7)||(b==8)||(b==10)||(b==12))
i=31;
else
if((b==4)||(b==6)||(b==9)||(b==11))
i=30;
else
if(b==2)
i=28;
else
i=0;
sum+=i;
}
sum+=c;
printf("是这一年的%d天\n",sum);
printf("

你的程序中有几处错误 首先while(b>=1&&b<=12) 就不对,这样的结果是把这一年的全部月份都加上了,第二 b--; 用的位置也不对,循环开始时b=1,进入循环后执行b--; i就没有被给值,很容易出错第三,scanf("%d年%d月%d日",&a,&b,&c);是错误的写法,所以就会出现-858993460,应该写成scanf("%d%d%d",&a,&b,&c);第四,程序过于复杂,以下是根据你的程序改编的;

#include<stdio.h>
void main()
{
int sum=0,a,b,c,i;
char ags='y';
printf("请输入年/月/日:");
scanf("%d%d%d",&a,&b,&c);
while(ags=='y'||ags=='Y')
{
for(b--;b>0;b--)
{if((b==1)||(b==3)||(b==5)||(b==7)||(b==8)||(b==10)||(b==12)) i=31;
else if((b==4)||(b==6)||(b==9)||(b==11)) i=30;
else if((a%4==0&&a%100!=0)||(a%400==0)) i=29;
else i=28;
sum+=i;}
sum+=c;
printf("是这一年的%d天\n",sum);
printf("是否继续输入日期(y/n)?");
fflush(stdin);
ags=getchar();
}
printf("结束输入!\n");
}

第9行输入格式控制有错
scanf("%d,%d,%d",&a