这是一个关于C语言的输入语句scanf的问题


/* 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);

如此,你就只需要输入数字,不需要汉字和符号了