大家帮满看下C程序调试问题!

来源:百度知道 编辑:UC知道 时间:2024/06/24 06:21:14
一个收入3个数,并输出最大值的程序,不知道哪里错了,总是返回输入的第一个数!

下面是代码:

#include "stdio.h"
#include "stdlib.h"
int max(int a,int b,int c) /* 定义max函数 */

{
if((a>b) && (a>c)) return a;
if((b>a) && (b>c)) return b;
if((c>a) && (a>b)) return c;
}

main() /* 主程序开始 */
{
int a,b,c,d;
scanf("%d,%d,%d",&a,&b,&c);
d=max(a,b,c);

printf("max=%d",d);
system("pause");
}
谢谢!现在 用空格分隔输入的数据,能输出正确的结果了!

那在输入多个数字的时候,就不能用逗号分隔了么? 我的c语言书上(新编c语言程序设计教程 作者:周学毛 西安电子科技大学出版社 2000年7月第一版)的第42页4.2.3第2条还有这样的例子呢! 难道是书上写错了?

这条语句出错了:
scanf("%d,%d,%d",&a,&b,&c);
改为 scanf("%d%d%d",&a,&b,&c); 即可,

scanf的输入流格式将逗号认为是输入完毕,原先语句你只能输入第一个数,程序最后输出的也不一定是第一个数,只不过你的程序将y和z初始化为很小的负值了,而你输入的值比y,z大罢了

你是个编程的初学者吧,如果你对编程有兴趣,头文件格式,函数返回值,输入提示,变量初始化,基本调试以及查错方法等方面要注意下。多看看原版的英文书,国内的基本都是参考国外的

程序改写为

#include <stdio.h>

/*int max()为基本数学库函数,尽量别重名*/
int max_3 ( int a,int b,int c ) {
return (a>=b)?((a>=c)?a:c):((b>=c)?b:c);
}

void main ( ) {
int x,y,z,max_xyz;

printf("\nPlease input 3 numbers ,separated by a space : ");
scanf("%d %d %d",&x,&y,&z);

max_xyz=max_3(x,y,z);
printf("\nThe maximum number of x,y,z is : %d \n",max_xyz);
}

#include "stdio.h"
#include "stdlib.h"
int max(int a,int b,int c) /* 定义max函数 */

{
if((a>=b) && (a>=c))
{ return a;}