在这个冷杉中输入小时分钟和秒我希望用户输入3个变量但是当我运行程序计算机时要求第四个,我不知道为什么:S有人吗?
(它要求更多细节).................................
........... aaaaaaaaaaaaaaaaaaaaaaa AAAA
#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;
}
答案 0 :(得分:2)
它的
scanf("%d %d %d", &vrst, &vrmn, &vrsc);
and scanf("%d %d", &d, &m);
删除scanf
scanf(“%d%d”,...)与scanf(“%d%d”,...)不同?
他们有所不同,但是如此巧妙,以至于它有所不同 没有区别
假设输入为“12 \ t34 \ n”。 “%d%d”格式 匹配此输入如下:第一个“%d”跳过前导 白色空间和消耗并转换12,然后第二个 “%d”跳过选项卡并使用和转换34.换行符 没有读。
“%d%d”格式的运作方式略有不同,但是 有相同的结果。第一个“%d”跳过前导空格 并转换12,然后格式匹配和的空格 跳过选项卡,然后第二个“%d”跳过任何内容并转换 34.如前所述,换行线未读。
答案 1 :(得分:1)
第一个scanf()的最后一个空格是问题:
scanf("%d %d %d ", &vrst, &vrmn, &vrsc);
删除它,您的程序将按您的意愿工作。
scanf("%d %d %d", &vrst, &vrmn, &vrsc);
答案 2 :(得分:1)
您无需删除scanf
中的所有空格。只需删除最后一个
scanf("%d %d %d", &vrst, &vrmn, &vrsc);
^ - Remove this space