注册 登录
编程论坛 C语言论坛

萌新求助,C语言题目

uiuyyt 发布于 2019-12-22 11:38, 2119 次点击
照着课本打的,不知道出来的结果为什么和课本不一样
定义了一个主程序文件,MaxMix.c
#include<stdio.h>
#include"Declare.h"

  void main()
  {
  int a,b,c;
  printf("输入a,b,c的整数值:");
  scanf("%d %d %d",&a,&b,&c);
  printf("它们中最大的值为 %d\n",max(a,b,c));
  printf("它们中最小的值为 %d\n",min(a,b,c));
  }

定义了另一个程序文件Func.c
int max(int x,int y,int z)
{
    if(x<y) x=y;
    if(x<z) x=z;
    return x;
}

int min(int x,int y,int z)
{
   if(x>y) x=y;
   if(x>z) x=z;
   return x;
}

再定义了一个头文件 Declare.h
int max(int x,int y,int z);
int min(int x,int y,int z);

运行后输入三个数字:4,6,8

结果它反馈为;它们中最大的值为4
              它们中最小的值为-858993460

这是怎么回事 ,求大佬指点
5 回复
#2
rjsp2019-12-22 12:01
运行后输入三个数字:4,6,8
文字应该尽量严谨,输入到底是“4,6,8”还是“4 6 8”?

#3
uiuyyt2019-12-22 12:05
确实是我输入不严谨。。

从新输入后,中间不带逗号,而是空格就成功了


谢谢
#4
jinxiao662019-12-22 13:08
典型的scanf()函数应用挖的坑 ,自己也遇到过。
#5
八画小子2019-12-22 16:53
以下是引用jinxiao66在2019-12-22 13:08:57的发言:

典型的scanf()函数应用挖的坑 ,自己也遇到过。



不能说时scanf()函数应用挖的坑,只是对函数本身一知半解而已。多犯几次错之后就会注意的。
#6
纯蓝之刃2019-12-22 20:51
scanf("%d %d %d",&a,&b,&c);里没有逗号,输入的时候有逗号,由于你使用的%d输入,当程序读取到非int型数据的时候会舍弃不读,但是程序缓存中还是存在着没有读取的值(,6,8)。所以只有当你循环第一次的时候会正确读取‘4’,当你循环2,3,4次的时候,读取的都是‘,’,程序会不读取,所以你只有a=4,而b,c都是随机不确定态的。
1