c++急!为什么错了............

来源:百度知道 编辑:UC知道 时间:2024/06/04 05:23:36
#include<stdio.h>
void main( )
{
int m,n,year,month,day;
printf("请如入具体日期%%d%%d%%d:");
scanf_s("%4d,%2d,%2d",&year,&month,&day);
switch(month)
{
case 1:n=0;break;
case 2:n=31;break;
case 3:n=59;break;
case 4:n=90;break;
case 5:n=120;break;
case 6:n=151;break;
case 7:n=181;break;
case 8:n=212;break;
case 9:n=243;break;
case 10:n=273;break;
case 11:n=304;break;
case 12:n=334;break;
default:printf("data error!\n");break;
}
if(year%4==0) {m=n+day;printf("%4d%2d%2d是%4d年的%3d天",year,month,day,year,m);}
else
if(month>=3) {m=n+day+1;printf("%4d%2d%2d是%4d年的%3d天",year,month,day,year,m);}
else {m=n+day;printf("%4d%2d%2d是%4d年的%3d天",year,month,day,year,m);}
}
错误提示如下:Run-Time Check Failure #3 - The variable 'n' is being used without being in

经运行调试,把scanf_s改成scanf程序没有出现错误提示,只是我不管输几月都显示data error,想必程序还有需要完善的地方。

你把scanf_s("%4d,%2d,%2d",&year,&month,&day);中的_s删掉就行了。
应该是:scanf("%4d,%2d,%2d",&year,&month,&day); 这样就对了。

你没有给n赋初值啊,比如n=5,要在switch之前给出的

n没有初始化,比如int n=0;