/* zheng int is divided yinshu*/
#include "stdio.h"
#include "conio.h"
int main()
{
int year,month,day;
int sum=0;
int leap=0;
printf("请输入年月日");
scanf("年:%d月:%d日:%d",year,month,day);
int jan=31,feb=28+jan,may=31+feb,apr=30+may,mar=31+apr,june=30+mar,july=31+june,aug=31+july,
sept=30+aug,oct=31+sept,nov=30+oct;
if((year%400==0)||((year%4)&&(year%100!=0)))
leap++;
switch(month)
{
case 1:printf("天数:%d",day);break;
case 2:printf("天数:%d",jan+day);break;
case 3:printf("天数:%d",feb+day+leap);break;
}
getch();
return 0;
}
这是我写的一个判断日子数的小程序。代码是没有问题的,我有个地方不太明白,scanf输入这块执行的时候,值不能都输进去。好奇怪。编译器也没有报错滴啊
建议看一下scanf的用法: https://blog.csdn.net/u012421456/article/details/18501309
按你写的格式,要输入中文的“年月日”和冒号等,构成完整字符串才行。
格式串是:“年:%d月:%d日:%d”,对应的例子:“年:2019月:10日:24”。不是只输入3个数字。
你要写成:scanf("年:%d月:%d日:%d",&year,&month,&day);
因为scanf输入要指向地址。
scanf("年:%d月:%d日:%d",&year,&month,&day);
朋友,你可以好好看下scanf这个函数的使用。
其实你的问题有两个,第一出在引号里面需要输入完全一样的字符串,%d才能读出你的数值给相应的变量的引用。第二scanf需要引用变量,也就是在变量前面加&
比如你的程序这样写的scanf("年:%d月:%d日:%d",year,month,day);
首先应该改为("年:%d月:%d日:%d",&year,&month,&day);
其次你输入时希望输入2019/10/24,那么你需要输入的是:年:2019月:10日:24
这样才能正确输入。
其实你可以将scanf这一句替换成下面的改写,方便输入
printf("年:\n");
scanf("%d",&year);
printf("月:\n");
scanf("%d",&month);
printf("日:\n");
scanf("%d",&day);
如此,你就只需要输入数字,不需要汉字和符号了