Scanf未提供预期输出

Scanf未提供预期输出,c,scanf,user-input,C,Scanf,User Input,您的疑问: 20 10 30 20 int a=scanf%d,&a;正在返回成功扫描项目的数量在本例中为“b”,因此,如果执行此操作并输入b=23的值,则它将返回1,即扫描项目的数量。因此,a=1; 这里a将包含scanf函数的返回值 scanf返回成功扫描的项目数 参考:int a=scanf%d,&a;您正在分配scanf的返回值。阅读scanf的手册页:成功时,这些函数返回成功匹配和分配的输入项目数;在早期匹配失败的情况下,该值可以小于规定值,甚至为零。如何通过函数传递用户输入并打印结

您的疑问:

20 10 30
20
int a=scanf%d,&a;正在返回成功扫描项目的数量在本例中为“b”,因此,如果执行此操作并输入b=23的值,则它将返回1,即扫描项目的数量。因此,a=1; 这里a将包含scanf函数的返回值

scanf返回成功扫描的项目数


参考:

int a=scanf%d,&a;您正在分配scanf的返回值。阅读scanf的手册页:成功时,这些函数返回成功匹配和分配的输入项目数;在早期匹配失败的情况下,该值可以小于规定值,甚至为零。如何通过函数传递用户输入并打印结果?请阅读。返回值与解析的值之一不同。如果扫描5个整数,您希望哪一个作为返回值?。如果能够读取任何值,还应该检查返回值。您可能只得到1个值,因为输入缓冲区中还有一个\n。基本上是:int FOO=scanf%d,&FOO->scanf%d,&FOO。顺便说一句,您的问题标题功能没有打印正确的值是误导性的,应该是scanf没有像我预期的那样工作
a=20;b=10;c=30;
GetSecondMinimum(a,b,c)
#include <stdio.h>
int Second_minimum;
int GetSecondMinimum(int,int,int);
int main()
{ 
  int a,b,c;
  scanf("%d%d%d",&a,&b,&c);
  int Secondminimum=GetSecondMinimum(a,b,c);
  printf("%d",Secondminimum);
}
int GetSecondMinimum(int x,int y,int z)
{
  if(x>y && x<z)
  {
    Second_minimum=x;
  }
  else if(x>z && x<y)
  {
    Second_minimum=x;
  }
  else if(y>x && y<z)
  {
    Second_minimum=y;
  }
  else if(y<x && y>z)
  {
    Second_minimum=y;
  }
  else if(z>x && z<y)
  {
    Second_minimum=z;
  }
  else if(z<x && z>y)
  {
    Second_minimum=z;
  }
  return Second_minimum;
}
20 10 30
20
#include <stdio.h>
int main ()
{
  int a;
  int b;
  a = scanf("%d", &b);  //lets input b=23
  printf("b = %d",b);
  printf("\na = %d", a);
  return 0;
}
b = 23
a = 1