qq_43412960
qq_43412960
采纳率79.1%
2019-10-24 16:27 阅读 284

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

5

/* 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输入这块执行的时候,值不能都输进去。好奇怪。编译器也没有报错滴啊

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

4条回答 默认 最新

  • 已采纳
    bobhuang bobhuang 2019-10-24 16:40

    建议看一下scanf的用法: https://blog.csdn.net/u012421456/article/details/18501309
    按你写的格式,要输入中文的“年月日”和冒号等,构成完整字符串才行。
    格式串是:“年:%d月:%d日:%d”,对应的例子:“年:2019月:10日:24”。不是只输入3个数字。

    点赞 1 评论 复制链接分享
  • qq_36511401 @一头雾水@ 2019-10-24 16:41

    你要写成:scanf("年:%d月:%d日:%d",&year,&month,&day);

    因为scanf输入要指向地址。

    点赞 1 评论 复制链接分享
  • zsd0819qwq Small_handsome 2019-10-24 16:48

    scanf("年:%d月:%d日:%d",&year,&month,&day);

    点赞 1 评论 复制链接分享
  • weixin_42910064 泡视界 2019-10-24 16:56

    朋友,你可以好好看下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);
    
    

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

    点赞 评论 复制链接分享

相关推荐