回 帖 发 新 帖 刷新版面

主题:求解!找错!简单C问题

#include<stdio.h>
void main ()
{
    int *p1,*p2,a,b;
    printf("input two numbers(q to quit):\n");

    while(scanf("%d,%d",&a,&b)==1)
    {
        p1=&a;p2=&b;
        if(a<b)
        {
            p1=&b;p2=&a;
        }
        printf("%d,%d\n",*p1,*p2);
        printf("input two numbers:\n");
    }
    printf("Bye!\n");
    }    
    
    
    目的是让两个数按大小顺序输出,并且能循环输入。

回复列表 (共3个回复)

沙发

scanf的返回值由后面的参数决定返回值表示成功读入的数据的个数
  while(scanf("%d,%d",&a,&b)==1)这句不对
  while(scanf("%d,%d",&a,&b)!=0)
剩下的没看出来,还没学到家,呵呵

板凳

如果a和b都被成功读入,那么scanf的返回值就是2
  如果只有a被成功读入,返回值为1
  如果a和b都未被成功读入,返回值为0
  如果遇到错误或遇到end of file,返回值为EOF。

3 楼

这样我运行没有问题,只要不按格式输入,就不会再进入循环,直接bye
#include<stdio.h>
void main ()
{
    int *p1,*p2,a,b;
    printf("input two numbers(q to quit):\n");

    while(scanf("%d,%d",&a,&b)==2)
    {
        p1=&a;p2=&b;
        if(a<b)
        {
            p1=&b;p2=&a;
        }
        printf("%d,%d\n",*p1,*p2);
        printf("input two numbers:\n");
    }
    printf("Bye!\n");
    }    

我来回复

您尚未登录,请登录后再回复。点此登录或注册