wang1997 发表于 2018-12-6 19:29:03

求大神帮忙看下,实在是想不出来哪里错了 ,感觉一切正常

#include<stdio.h>
int f=1;

int main()
{
    int wl( int *c,int temp);
    int a,b;
    for(b=0;b<80;b++)
    {
      scanf("%d",&a);
      f++;
      if(a=='.')
            break;
    }
   wl(a,10);
}
int wl( int *c,int temp)
{
int d;
    for(d=0;d<f/2;d++)
    {
      
      temp=c;
      c=c;
      c=temp;
    }
    for(d=0;d<f;d++)
      printf("%d",c);
    return 0;
}





我输入的是4个,输出的会有这么多的随机数,
求大神帮忙解决一下 ,
这个程序是输入的整形数字反向输出!

ba21 发表于 2018-12-6 19:43:11

老实说还没理解你的题意

lemon3 发表于 2018-12-6 19:55:26

参数f没有传到函数里面去吧!

百里狂生 发表于 2018-12-6 22:44:23

本帖最后由 百里狂生 于 2018-12-6 22:46 编辑

scanf("%d",&a); 当输入非整型数据时(非%d),scanf无法读取该字符,字符留在键盘缓存区,造成一直循环下去。
可以用scanf的返回值判断输入数据格式是否正确。
scanf 返回读取到的数据个数

#include<stdio.h>
int f = 0; //记录读取数据个数

int main()
{
        int wl(int *c);
        int a, b = 0;
        while(scanf("%d", &a) == 1) //若没有读取到数据,scanf返回值为0
        {
                f++;
                b++;
        }
        wl(a);
}
int wl(int *c)
{
        int d,temp;
        for (d = 0; d<f / 2; d++)
        {

                temp = c;
                c = c;
                c = temp;
        }
        for (d = 0; d<f; d++)
                printf("%d\t", c);
        return 0;
}
页: [1]
查看完整版本: 求大神帮忙看下,实在是想不出来哪里错了 ,感觉一切正常