标题:萌新求助,C语言题目
只看楼主
uiuyyt
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2019-12-22
结帖率:0
已结贴  问题点数:20 回复次数:5 
萌新求助,C语言题目
照着课本打的,不知道出来的结果为什么和课本不一样
定义了一个主程序文件,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

这是怎么回事 ,求大佬指点
搜索更多相关主题的帖子: C语言 printf int min max 
2019-12-22 11:38
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:5 
运行后输入三个数字:4,6,8
文字应该尽量严谨,输入到底是“4,6,8”还是“4 6 8”?

2019-12-22 12:01
uiuyyt
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2019-12-22
得分:0 
确实是我输入不严谨。。

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


谢谢
2019-12-22 12:05
jinxiao66
Rank: 2
等 级:论坛游民
帖 子:11
专家分:16
注 册:2019-12-22
得分:5 
典型的scanf()函数应用挖的坑 ,自己也遇到过。
2019-12-22 13:08
八画小子
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:37
帖 子:705
专家分:2043
注 册:2010-11-11
得分:5 
以下是引用jinxiao66在2019-12-22 13:08:57的发言:

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



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

一沙一世界,一花一天堂。无限掌中置,刹那成永恒。
2019-12-22 20:51



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-498549-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.455202 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved