鱼C论坛

 找回密码
 立即注册
查看: 1079|回复: 4

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

[复制链接]
发表于 2020-11-18 07:20:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
兄弟们这是为什么啊,我只执行了第一个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;
}
最佳答案
2020-11-18 09:36:15
错误有三类:1、scanf内输入不应该控制位宽;2、判断相等应该是==,不是=,前者是比较运算符,后者是赋值运算符;3、你的输入是年/月/日还是月/日/年?
  1. #include<stdio.h>
  2. int main(void)
  3. {
  4.     int a, s, d, f, g, h;
  5.     printf("Enter first date(mm/dd/yy):");
  6.     scanf("%d/%d/%d", &s, &d, &a);
  7.     printf("Enter second date(mm/dd/yy):");
  8.     scanf("%d/%d/%d", &g, &h, &f);

  9.     if (a > f) {
  10.         printf("%d/%d/%d > %d/%d/%d", a, s, d, f, g, h);
  11.     }
  12.     if (a == f) {
  13.         if (s > g)
  14.             printf("%d/%d/%d > %d/%d/%d", a, s, d, f, g, h);
  15.         else if (s < g) {
  16.             printf("%d/%d/%d > %d/%d/%d", f, g, h, a, s, d);
  17.         }
  18.     }
  19.     if (a < f) {
  20.         printf("%d/%d/%d > %d/%d/%d", f, g, h, a, s, d);
  21.     }
  22.     if (a == f) {
  23.         if (s == g)
  24.             if (d > h)
  25.                 printf("%d/%d/%d > %d/%d/%d", a, s, d, f, g, h);

  26.             else if (d < h)
  27.                 printf("%d/%d/%d > %d/%d/%d", f, g, h, a, s, d);
  28.     }
  29.     if (a == f)
  30.         if (s == g)
  31.             if (d == h)
  32.                 printf("%d/%d/%d = %d/%d/%d", a, s, d, f, g, h);

  33.     return 0;
  34. }
复制代码
屏幕截图 2020-11-18 071651.png
屏幕截图 2020-11-18 071904.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-18 09:16:09 | 显示全部楼层
本帖最后由 风过无痕1989 于 2020-11-18 09:59 编辑

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

  9.         if (h > d) // 年份大的日期大
  10.         {
  11.                 printf("%d/%d/%d > %d/%d/%d\n",f, g, h,a, s, d);
  12.         }
  13.         else if (h == d && g > s) // 年份相同的,月份大的日期大
  14.         {
  15.                 printf("%d/%d/%d > %d/%d/%d\n",f, g, h,a, s, d);
  16.         }
  17.         else if (h == d && g == s && f > a) // 年份相同的,月份相同的,日期大的大
  18.         {
  19.                         printf("%d/%d/%d > %d/%d/%d\n",f, g, h,a, s, d);
  20.         }
  21.         else if (h == d && g == s && f == a) // 年份相同的,月份相同的,日期相同的
  22.         {
  23.                 printf("%d/%d/%d = %d/%d/%d\n", f, g, h, a, s, d);
  24.         }
  25.         else
  26.         {
  27.                 printf("%d/%d/%d < %d/%d/%d\n", a, s, d, f, g, h);
  28.         }
  29.        
  30.         return 0;
  31. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

发表于 2020-11-18 09:36:15 | 显示全部楼层    本楼为最佳答案   
错误有三类:1、scanf内输入不应该控制位宽;2、判断相等应该是==,不是=,前者是比较运算符,后者是赋值运算符;3、你的输入是年/月/日还是月/日/年?
  1. #include<stdio.h>
  2. int main(void)
  3. {
  4.     int a, s, d, f, g, h;
  5.     printf("Enter first date(mm/dd/yy):");
  6.     scanf("%d/%d/%d", &s, &d, &a);
  7.     printf("Enter second date(mm/dd/yy):");
  8.     scanf("%d/%d/%d", &g, &h, &f);

  9.     if (a > f) {
  10.         printf("%d/%d/%d > %d/%d/%d", a, s, d, f, g, h);
  11.     }
  12.     if (a == f) {
  13.         if (s > g)
  14.             printf("%d/%d/%d > %d/%d/%d", a, s, d, f, g, h);
  15.         else if (s < g) {
  16.             printf("%d/%d/%d > %d/%d/%d", f, g, h, a, s, d);
  17.         }
  18.     }
  19.     if (a < f) {
  20.         printf("%d/%d/%d > %d/%d/%d", f, g, h, a, s, d);
  21.     }
  22.     if (a == f) {
  23.         if (s == g)
  24.             if (d > h)
  25.                 printf("%d/%d/%d > %d/%d/%d", a, s, d, f, g, h);

  26.             else if (d < h)
  27.                 printf("%d/%d/%d > %d/%d/%d", f, g, h, a, s, d);
  28.     }
  29.     if (a == f)
  30.         if (s == g)
  31.             if (d == h)
  32.                 printf("%d/%d/%d = %d/%d/%d", a, s, d, f, g, h);

  33.     return 0;
  34. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-11-18 12:40:28 | 显示全部楼层
风过无痕1989 发表于 2020-11-18 09:16
你的程序中加了很多的反斜杠,前面的程序还是有问题,修改后现在的正常

谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-20 10:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表