主题:请大大门看看我的小白程序为什么输出一直是一个恒值(比较3个位数的大小)才开始学C
做小白是成功的开始
[专家分:0] 发布于 2010-05-04 11:41:00
#include"stdio.h"
main()
{
int max(int x,int y,int z);
int a,b,c,d;
printf("please input three number: \n");
scanf("%d%d%d",&a,&b,&c);
d=max(a,b,c);
printf("max=%d",d);
}
int max(int x,int y,int z)
{
int j;
if(x>y)
if(x>z)
{ j=x;
return(j); }
else j=z;
return(j);
if (y>z)
{j=y;
return(j); }
else j=z;
return(j);
}
[em53][em21][em21][em21][em21]
回复列表 (共10个回复)
沙发
做小白是成功的开始 [专家分:0] 发布于 2010-05-04 11:49:00
都没人来吗、、、、、TT
板凳
Jasperu [专家分:80] 发布于 2010-05-04 11:59:00
你先看一下我的编写的,#include "stdio.h"
main()
{ int a[3],max,i;
for(i=0;i<3;i++)
scanf("%d",&a[i]);
max=a[0];/* 假设最大值为a[0]*/
for(i=1;i<3;i++)/* 进行穷举*/
{
if(a[i]>max)
max=a[i];
}
printf(" the max is :%d",max);
}
再就是你的了主要在max函数的编写时,逻辑与语法混乱了,恩,就不给你分析了,哈,
3 楼
caomang [专家分:150] 发布于 2010-05-04 15:18:00
你的程序我稍微改了下,测试了,结果还可以
程序的语言还是最好要简洁点,容易看懂些
#include"stdio.h"
main()
{
int max(int x,int y,int z);
int a,b,c,d;
printf("please input three number: \n");
scanf("%d%d%d",&a,&b,&c);
d=max(a,b,c);
printf("max=%d",d);
}
int max(int x,int y,int z)
{
int j;
if(x>y) {if(x>z) j=x; else j=z;}
if (y>z) j=y;
else j=z;
return(j);}
大神们看到了别喷啊,我也是新手
4 楼
做小白是成功的开始 [专家分:0] 发布于 2010-05-04 16:02:00
你的代码也有点问题:当输入数据过大时就不准了。比如说333333333和4444和5比较输出结果是max=4444。。。不过还是谢谢了,,共同努力吧!我把我刚才的程序改了下。。
#include"stdio.h"
main()
{
int max(int x,int y,int z);
int a,b,c,d;
printf("please input three number: \n");
scanf("%d%d%d",&a,&b,&c);
d=max(a,b,c);
printf("max=%d",d);
}
int max(int x,int y,int z)
{
int j;
if(x>y&&x>z)
{ j=x;
return(j);}
else if(y>x&&x>z)
{ j=y;
return(j);}
else
j=z;
return(j);
}
5 楼
caomang [专家分:150] 发布于 2010-05-04 16:34:00
那个是数据类型决定的,你的那个数超过了范围,溢出了……改成long型试下……
6 楼
caomang [专家分:150] 发布于 2010-05-04 16:38:00
int型的数据范围只能是-32768和+32767之间
long型的数据范围是-2147483648和+2147483647.
你的程序里面只要在最后有一个return就可以了,反正最后都是赋值给了j的。
程序里面没有考虑报错的情况,这个你以后要注意。还有,试着用“?:”这个语句改下,会很简洁
7 楼
做小白是成功的开始 [专家分:0] 发布于 2010-05-04 17:10:00
我今天才学的C ?:还不会用。。谢谢你的解释虽然不怎么懂
8 楼
雪光风剑 [专家分:27190] 发布于 2010-05-04 18:23:00
简单来说,lz在输出结果之前输出一下abc就知道超界后那个一堆3被截成多少了,也就容易理解为什么会有那样的结果了。
另外,int只有在tc这样的老编译器里才是-32768~32767,在VC和以后版本,以及其他常用编译环境里,一般来说int和long是等价的……
9 楼
做小白是成功的开始 [专家分:0] 发布于 2010-05-04 18:31:00
谢了。。这里面高手真多。以后常来了[em11]
10 楼
youxi2010 [专家分:0] 发布于 2010-05-05 15:59:00
上海世博园内许多建筑外墙采用镜面设计,通过镜面观察园内的游人和风景,别有一番情趣。 5月4日是世博园开园后的首个非指定日,从澳门馆外墙映衬的中国馆外游客影像来看,并没有出现预料中的大客流。
您正在看的文章转载雪影网络:[url=http://www.fjfairh.cn]http://www.fjfairh.cn[/url]
原文地址:[url=http://www.fjfairh.cn/news/201055/36.html]http://www.fjfairh.cn/news/201055/36.html[/url]
我来回复