0

在这个冷杉输入小时分钟和秒我希望用户输入 3 个变量但是当我运行程序时计算机要求第四个,我不知道为什么:S 有人吗?

(它要求更多细节)......................

…………啊啊啊啊啊啊啊啊啊啊啊啊啊

    #include <stdio.h>

int main()
{
    int d,m,vrst,vrmn,vrsc,nvrst;

    printf("Please enter hours minutes and seconds in Sarajevo : ");
    scanf("%d %d %d ", &vrst, &vrmn, &vrsc);

    printf("Please enter date and time ");
    scanf("%d %d", &d, &m);

     if(m<3)
            {
              nvrst=vrst+2;
              printf("Time in Sarajevo is %d %d %d ", nvrst, vrmn, vrsc);
            }
     if(m==3 && d<31)
            {
              nvrst=vrst+1;
              printf("Time in Sarajevo is %d %d %d ", nvrst, vrmn, vrsc);
            }
    if(m==3 && d==31)
            {
              nvrst=vrst+2;
              printf("Time in Sarajevo is %d %d %d ", nvrst, vrmn, vrsc);
            }

    if(m>3 && m<=9 )
            {
              nvrst=vrst+2;
              printf("Time in Sarajevo is %d %d %d ", nvrst, vrmn, vrsc);
            }
    if(m==10 && d<27)
            {
              nvrst=vrst+2;
              printf("Time in Sarajevo is %d %d %d ", nvrst, vrmn, vrsc);
            }
    if(m==10 && d>=27)
            {
              nvrst=vrst+1;
              printf("Time in Sarajevo is %d %d %d ", nvrst, vrmn, vrsc);
            }
    if(m>10)
            {
              nvrst=vrst+1;
              printf("Time in Sarajevo is  %d %d %d ", nvrst, vrmn, vrsc);
            }

    return 0;
}
4

3 回答 3

2

它的

 scanf("%d %d %d", &vrst, &vrmn, &vrsc);
 and scanf("%d %d", &d, &m);

删除 %d 说明符之间的空格scanf

scanf("%d%d",...) 与 scanf("%d %d",...) 有什么不同吗?

它们不同,但如此微妙,以至于没有什么区别

假设输入是“12\t34\n”。"%d%d" 格式与此输入匹配如下:第一个 "%d" 跳过前导空格并使用并转换 12,然后第二个 "%d" 跳过制表符并使用并转换 34。换行未读。

"%d %d" 格式的操作略有不同,但结果相同。第一个“%d”跳过前导空格并转换 12,然后格式中的空格匹配并跳过制表符,然后第二个“%d”不跳过任何内容并转换 34。和以前一样,换行符未读。

于 2013-11-01T21:14:21.950 回答
1

第一个 scanf() 的最后一个空格是问题所在:

scanf("%d %d %d ", &vrst, &vrmn, &vrsc);

删除它,您的程序将按您的意愿运行。

scanf("%d %d %d", &vrst, &vrmn, &vrsc);
于 2013-11-01T21:17:59.450 回答
1

您不需要删除scanf. 只需删除最后一个

scanf("%d %d %d", &vrst, &vrmn, &vrsc);
               ^ - Remove this space
于 2013-11-01T21:19:01.887 回答