在运行程序时,他要求的另一个变量我没有问过

时间:2013-11-01 21:08:28

标签: c

在这个冷杉中输入小时分钟和秒我希望用户输入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;
}

3 个答案:

答案 0 :(得分:2)

它的

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

删除scanf

中%d个说明符之间的空格

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