c语言修改程序

来源:百度知道 编辑:UC知道 时间:2024/06/30 17:46:42
#include "stdio.h"
#include "stdlib.h"
int main()
{int day,month,year,i,x,k;
char ch;
do
{
char ch;
printf("请输入年月日(如2008,12,12):");
scanf("%d,%d,%d",&year,&month,&day);
switch(month)
{case 1:i=0;break;
case 2:i=31;break;
case 3:i=59;break;
case 4:i=90;break;
case 5:i=120;break;
case 6:i=151;break;
case 7:i=181;break;
case 8:i=212;break;
case 9:i=243;break;
case 10:i=273;break;
case 11:i=304;break;
case 12:i=334;break;
default:printf("日期输入错误");break;
}
i=i+day;
if(year%400==0||(year%4==0&&year%100!=0))
x=1;
else
x=0;
if(x==1&&month>2)
i++;
printf("这是一年中的第%d天\n",i);
printf("是否继续?Y/N:");
getchar();
ch=getchar();
}
while(ch=='y'||ch=='Y');
system(&

楼主在do-while循环体中重新定义了变量ch,从而覆盖了main()中的ch。这样当程序执行到while(ch=='y'||ch=='Y')时循环体中的ch已不可见,因此这里的ch是main中的。而显然main中的ch的值不可能等于‘y’或‘Y’,所有循环结束。
因此只要将循环体中的ch申明删掉即可。

scanf("%d,%d,%d",&year,&month,&day);
将上面的%d之间的逗号都去掉:scanf("%d%d%d",&year,&month,&day);

#include "stdio.h"
#include "stdlib.h"
int main()
{int day,month,year,i,x,k;
char ch;********************************************* 将这一语句删掉
do
{
char ch;
printf("请输入年月日(如2008,12,12):");
scanf("%d,%d,%d",&year,&month,&day);
switch(month)
{case 1:i=0;break;
case 2:i=31;break;
case 3:i=59;break;
case 4:i=90;break;
case 5:i=120;break;
case 6:i=151;break;
case 7:i=181;break;
case 8:i=212;break;
case 9:i=243;break;
case 10:i=273;break;
case 11:i=304;break;
case 12:i=334;break;
default:printf("日期输入错误");break;