当前位置:编程学习 > C/C++ >>

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++判断两矩形是否相交

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,