志敏 发表于 2013-7-20 10:55:09

新手求教个C的问题

#include <stdio.h>
void main()
{
        int a, b,c,temp;
        printf("Please input three numbers:");
        scanf("%d%d%d\n",&a, &b, &c);
        if(a>b)
        {
                temp=a;
                a=b;
                b=temp;
        }
        if(a>c)
        {
                temp=a;
                a=c;
                c=temp;
        }
        if(b>c)
        {
                temp=b;
                b=c;
                c=temp;
        }
        printf("%d%d%d\n",a,b,c);
}


为什么编译出来输入三个数按回车不能直接得到结果?回车后输入任意数字字母再回车又可得到结果,怎么会这样?哪里错了吗?求解释

steveliang 发表于 2013-7-20 11:48:08

      scanf("%d%d%d\n",&a, &b, &c); 这一行应该去掉 \n ,因为输入时已经包含回车了,你这样就要求必须输入一个回车

steveliang 发表于 2013-7-20 11:50:54

帮你调整了一下

#include <stdio.h>
void main()
{
      int a, b,c,temp;
      printf("Please input three numbers:\n");
      scanf("%d%d%d",&a, &b, &c);
      if(a>b)
      {
                temp=a;
                a=b;
                b=temp;
      }
      if(a>c)
      {
                temp=a;
                a=c;
                c=temp;
      }
      if(b>c)
      {
                temp=b;
                b=c;
                c=temp;
      }
      printf("%-5d%-5d%-5d\n",a,b,c);
}

刀下留人 发表于 2013-7-20 11:55:29

“\n”是不是这个在作怪?

刀下留人 发表于 2013-7-20 12:02:37

你的问题有没有得到解决?

Tcooop 发表于 2013-7-20 19:13:32

我想请问你是怎么输入的,如果是每输入一次按空格,最后一次按回车的话就没问题
但每输入一次按回车的话就有问题,建议在scanf函数后面加一句getchar();

style?b? 发表于 2013-7-22 13:31:29


#include <stdio.h>
int main()
{
      int a, b,c,temp;
      printf("Please input three numbers:\n");
      scanf("%d,%d,%d",&a, &b, &c);
      if(a>b)
      {
                temp=a;
                a=b;
                b=temp;
      }
      if(a>c)

      {
                temp=a;
                a=c;
                c=temp;
      }
      if(b>c)
      {
                temp=b;
                b=c;
                c=temp;
      }
      printf("%d<%d<%d\n",a,b,c);
      return 0;

}

loner 发表于 2013-7-24 18:09:14

输一个数字按一次回车(或空格或Tab)、三次回车按完3个数字才算输入完毕,但中间千万不能用逗号隔

牡丹花下死做鬼 发表于 2013-8-10 11:13:13

scanf("%d%d%d\n",&a, &b, &c);说明要输入4个回车哦
应为\n就是回车你必须输入才能执行下一句代码

我在你身邊 发表于 2013-8-10 17:08:18

             去掉 \n

玉宁417 发表于 2013-9-27 07:50:05

新人,路过学习一下{:1_1:}

平平常常丶 发表于 2013-9-27 13:49:22

建议楼主将scanf("%d%d%d\n",&a, &b, &c);改成scanf("%d %d %d",&a, &b, &c);这样就没有问题了,注意scanf语句输入时一定要按引号里面的格式输入。

阔怀 发表于 2015-8-23 10:29:35

看看
页: [1]
查看完整版本: 新手求教个C的问题