c++程序题补充 继续输入要手动
#include<stdio.h>
struct days
{
int year;
int month;
int day;
}su;
void main()
{
int sum=0;
char d;
struct days su;
for(int i=0;i<20;)
{
printf(" 年 月 日\n");
scanf("%d %d %d",&su.year,&su.month,&su.day);
printf("是否继续输入:");
scanf("%c",&d);
if(su.month <=12&&su.month>=1)
{
if(su.day<=31&&su.day>=1)
{
printf("你输入的是:%d年%d月%d日\n",su.year,su.month,su.day);
switch(su.month)
{
case 1: sum=0;break;
case 2: sum=31;break;
case 3: sum=59;break;
case 4: sum=90;break;
case 5: sum=120;break;
case 6: sum=151;break;
case 7: sum=181;break;
case 8: sum=212;break;
case 9: sum=243;break;
case 10: sum=273;break;
case 11: sum=304;break;
case 12: sum=334;break;
}
if(su.month==2)
{
if(su.year%4==0&&su.year%100!=0||su.year%400==0)
{
sum+=1;
}
else if(su.day>29)
printf("输入有误!\n");
}
sum+=su.day;
printf("是%d年的第%d天\n",su.year,sum);
}
if(d=='y'||d=='Y')
{
i++;
}
}
}
}
打印如下:
年 月 日
2010 1 13
你输入的是2010年1月13日
是2010年的第13天
是否继续Y/N:
年 月 日
就是这样不要自己输入N/Y直接继续
要改为:是否继续Y/N?
输入Y继续 输入其他字母退出
追问:你Q多少??
答案:#include<stdio.h>
struct days
{
int year;
int month;
int day;
}su;
void main()
{
int sum=0;
char d;
struct days su;
for(int i=0;i<20;)
{
printf(" 年 月 日\n");
scanf("%d %d %d",&su.year,&su.month,&su.day); if(su.month <=12&&su.month>=1)
{
if(su.day<=31&&su.day>=1)
{
printf("你输入的是:%d年%d月%d日\n",su.year,su.month,su.day);
switch(su.month)
{
case 1: sum=0;break;
case 2: sum=31;break;
case 3: sum=59;break;
case 4: sum=90;break;
case 5: sum=120;break;
case 6: sum=151;break;
case 7: sum=181;break;
case 8: sum=212;break;
case 9: sum=243;break;
case 10: sum=273;break;
case 11: sum=304;break;
case 12: sum=334;break;
}
if(su.month==2)
{
if(su.year%4==0&&su.year%100!=0||su.year%400==0)
{
sum+=1;
}
else if(su.day>29)
printf("输入有误!\n");
}
sum+=su.day;
printf("是%d年的第%d天\n",su.year,sum);
}
printf("是否继续输入:");
char ch;
ch=getchar();
scanf("%c",&d);
if(d=='y'||d=='Y')
{
i++;
}
else break;
}
}
}
我没有调试,认为你的程序没有错,按要求可以做如下改动:
#include<stdio.h>
struct days
{
int year;
int month;
int day;
}su;
void main()
{
int sum=0,day;
char ch;
struct days su;
for(int i=0;i<20;)
{
printf(" 请输入年-月-日:");
scanf("%d-%d-%d",&su.year,&su.month,&su.day);
//printf("是否继续输入:"); 一到后面
//scanf("%c",&d);
if(su.month <=12&&su.month>=1)
{
if(su.day<=31&&su.day>=1)
{
printf("你输入的是:%d年%d月%d日\n",su.year,su.month,su.day);
switch(su.month)
{
case 1:
sum=0;
day=31;
break;
case 2:
sum=31;
if(su.year%4==0&&su.year%100!=0||su.year%400==0)
day=29;
else
day=28;
break;
case 3:
sum=59;
day=31;
break;
case 4:
sum=90;
day=30;
break;
case 5: sum=120;day=31;break;
case 6: sum=151;day=30;break;
case 7: sum=181;day=31;break;
case 8: sum=212;day=31;break;
case 9: sum=243;day=30;break;
case 10: sum=273;day=31;break;
case 11: sum=304;day=30;break;
case 12: sum=334;day=31;break;
}
if(day==29 && su.month>2) //若是瑞年,后面的都需要加1
sum+=1;
if(su.day>day) //保证各个月份的输入日期都正确
printf("输入有误!\n");
else
{
sum+=su.day;
printf("是%d年的第%d天\n",su.year,sum);
}
}
}
else
printf("输入有误!\n");
printf("\n");
do
{
getchar();
printf("\n是否继续输入Y/N:");
scanf("%c",&ch);
}while(!(ch=='y' || ch=='n' || ch=='Y' || ch=='N'));
if(ch=='y'||ch=='Y')
&nb
上一个:高分跪求一个c++程序,积分随便拿!!!!
下一个:C/C++判断两矩形是否相交