超级鸡杰 发表于 2020-11-18 07:20:11

为什么我执行了第一个scanf后第二个还没输入就弹出来了

兄弟们这是为什么啊,我只执行了第一个scanf后第二个还没输入就弹出来了
#include<stdio.h>
int main(void)
{
        int a,s,d,f,g,h;
        printf("Enter first date(mm/dd/yy):");
        scanf("%1d/%1d/%1d",&a,&s,&d);
        printf("Enter second date(mm/dd/yy):");
        scanf("%1d/%1d/%1d",&f,&g,&h);
       
        if(a>f){
                printf("%d/%d/%d>%d/%d/%d",a,s,d,f,g,h);
        }
        if(a=f){
                if(s>g)
                printf("%d/%d/%d>%d/%d/%d",a,s,d,f,g,h);
      
          else if(s<g){
                printf("%d/%d/%d>%d/%d/%d",f,g,h,a,s,d);        }
}
        if(a<f){
                printf("%d/%d/%d>%d/%d/%d",f,g,h,a,s,d);
        }
        if(a=f){
                if(s=g)       
                if(d>h)
                printf("%d/%d/%d>%d/%d/%d",a,s,d,f,g,h);
       
                else if(d<h)
                printf("%d/%d/%d>%d/%d/%d",f,g,h,a,s,d);
        }
        if(a=f)
        if(s=g)
        if(d=h)
        printf("%d/%d/%d=%d/%d/%d",a,s,d,f,g,h);
       
        return 0;
}

风过无痕1989 发表于 2020-11-18 09:16:09

本帖最后由 风过无痕1989 于 2020-11-18 09:59 编辑

你的程序中加了很多的反斜杠,前面的程序还是有问题,修改后现在的正常
#include<stdio.h>
int main(void)
{
        int a, s, d, f, g, h;
        printf("Enter first date(mm/dd/yy):");
        scanf("%d%d%d", &a, &s, &d);
        printf("Enter second date(mm/dd/yy):");
        scanf("%d%d%d", &f, &g, &h);

        if (h > d) // 年份大的日期大
        {
                printf("%d/%d/%d > %d/%d/%d\n",f, g, h,a, s, d);
        }
        else if (h == d && g > s) // 年份相同的,月份大的日期大
        {
                printf("%d/%d/%d > %d/%d/%d\n",f, g, h,a, s, d);
        }
        else if (h == d && g == s && f > a) // 年份相同的,月份相同的,日期大的大
        {
                        printf("%d/%d/%d > %d/%d/%d\n",f, g, h,a, s, d);
        }
        else if (h == d && g == s && f == a) // 年份相同的,月份相同的,日期相同的
        {
                printf("%d/%d/%d = %d/%d/%d\n", f, g, h, a, s, d);
        }
        else
        {
                printf("%d/%d/%d < %d/%d/%d\n", a, s, d, f, g, h);
        }
       
        return 0;
}

sunrise085 发表于 2020-11-18 09:36:15

错误有三类:1、scanf内输入不应该控制位宽;2、判断相等应该是==,不是=,前者是比较运算符,后者是赋值运算符;3、你的输入是年/月/日还是月/日/年?
#include<stdio.h>
int main(void)
{
    int a, s, d, f, g, h;
    printf("Enter first date(mm/dd/yy):");
    scanf("%d/%d/%d", &s, &d, &a);
    printf("Enter second date(mm/dd/yy):");
    scanf("%d/%d/%d", &g, &h, &f);

    if (a > f) {
      printf("%d/%d/%d > %d/%d/%d", a, s, d, f, g, h);
    }
    if (a == f) {
      if (s > g)
            printf("%d/%d/%d > %d/%d/%d", a, s, d, f, g, h);
      else if (s < g) {
            printf("%d/%d/%d > %d/%d/%d", f, g, h, a, s, d);
      }
    }
    if (a < f) {
      printf("%d/%d/%d > %d/%d/%d", f, g, h, a, s, d);
    }
    if (a == f) {
      if (s == g)
            if (d > h)
                printf("%d/%d/%d > %d/%d/%d", a, s, d, f, g, h);

            else if (d < h)
                printf("%d/%d/%d > %d/%d/%d", f, g, h, a, s, d);
    }
    if (a == f)
      if (s == g)
            if (d == h)
                printf("%d/%d/%d = %d/%d/%d", a, s, d, f, g, h);

    return 0;
}

超级鸡杰 发表于 2020-11-18 12:40:28

风过无痕1989 发表于 2020-11-18 09:16
你的程序中加了很多的反斜杠,前面的程序还是有问题,修改后现在的正常

谢谢

超级鸡杰 发表于 2020-11-18 12:41:08

sunrise085 发表于 2020-11-18 09:36
错误有三类:1、scanf内输入不应该控制位宽;2、判断相等应该是==,不是=,前者是比较运算符,后者是赋值运 ...

谢谢
页: [1]
查看完整版本: 为什么我执行了第一个scanf后第二个还没输入就弹出来了