新人求c语言大神指导

xy201718 2012-11-26 01:14:48
我编的程序,运行时最大值总是第一个输入值 列如输入 5 7 3 结果就是5
题目是求三个数最大值
程序如下;
#include<stdio.h>
void main()
{ int max(int x,int y,int z);
int t,a,b,c;
scanf("%d,%d,%d",&a,&b,&c);
t=max(a,b,c);
printf("最大值等于%d\n",t);
}
int max(int x,int y,int z)
{ int s;
if(x<y)s=y;
else if(x<z)s=z;
else s=x;
return(s);
}
求给力大神指导哪里错了 谢谢
...全文
252 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
q422013 2012-12-17
  • 打赏
  • 举报
回复
/*#include<stdio.h>
main()
{
	int i,j;
	for(i=1;i<10;i++)
	{
		for(j=1;j<=20-2*i;j++)
			printf(" ");
		for(j=1;j<=i;j++)
			printf("* ");
		for(j=i-1;j>=1;j--)
			printf("* ");	
		printf("\n");
	}

}
#include<stdio.h>
int main()
{
	int n;
	float a,b,y;
	char c;
	
	do
	{		
		printf("**********欢迎使用简易运算系统**********\n");
		printf("        1,加法                          \n");
		printf("        2,减法                          \n");
		printf("        3,乘法                          \n");
		printf("        4,除法                          \n");
		printf("        0,退出                          \n");
		printf("****************************************\n");
		printf("请输入运算代码:");
		scanf("%d",&n);
		if(n<0||n>4)
			printf("输入错误\n");
		else
		{
			if(n==0)  break; 
			printf("请输入两个数:");
			scanf("%f%f",&a,&b);
			if(n==1)
			{
				y=a+b;
				printf("%.2f+%.2f=%.2f\n",a,b,y);
			}
			if(n==2)
			{
				y=a-b;
				printf("%.2f-%.2f=%.2f\n",a,b,y);
			}
			if(n==3)
			{
				y=a*b;
				printf("%.2f*%.2f=%.2f\n",a,b,y);
			}
			if(n==4)
			{
				y=a/b;
				printf("%.2f/%.2f=%.2f\n",a,b,y);
			}
			printf("是否继续Y/N\n");
			getchar();//消除
			scanf("%c",&c);//注意定义的类型
		}
	}while(c=='Y'||c=='y');
}
*/
#include<stdio.h>
void main()
{ 
	int max(int x,int y,int z);
	int t,a,b,c;
	scanf("%d,%d,%d",&a,&b,&c);
	t=max(a,b,c);
	printf("最大值等于%d\n",t);
}
int max(int x,int y,int z)
{ 
	int s;
	//if(x<y)
		s=x;
	 if(s<y)
		s=y;
	if(s<z)
		s=z;
	return(s);
}
风中追梦郎 2012-11-27
  • 打赏
  • 举报
回复
新手 要细心啊.
pengyw 2012-11-26
  • 打赏
  • 举报
回复
要拆分啊,这样更好些吧: int subMax(int a, int b) { if(a>=b) return a; else return b; } int max(int x,int y,int z) { return subMax(subMax(x,y),z); }
赵4老师 2012-11-26
  • 打赏
  • 举报
回复
单步调试和设断点调试是程序员必须掌握的技能之一。
rangf 2012-11-26
  • 打赏
  • 举报
回复
怎么会输出5呢?应该输出7。 不过你这max代码逻辑错了,如果输入5 6 7会输出6,应该改成如下:
 
if(x<=y){
  if(y<z)s=z;
  else s=y;}
else{
  if(x<z)s=z;
  else s=x;}
xy201718 2012-11-26
  • 打赏
  • 举报
回复
引用 12 楼 zhuankeshumo 的回复:
引用 7 楼 xy201718 的回复:引用 6 楼 zhuankeshumo 的回复:输入5,7,3 逗号别漏了对了 嘻嘻谢谢3个数比较大小参考上面 你的错了
恩恩,找到错了。谢谢
newtee 2012-11-26
  • 打赏
  • 举报
回复
引用 7 楼 xy201718 的回复:
引用 6 楼 zhuankeshumo 的回复:输入5,7,3 逗号别漏了对了 嘻嘻谢谢
3个数比较大小参考上面 你的错了
xy201718 2012-11-26
  • 打赏
  • 举报
回复
引用 1 楼 anhuizhuanjiao 的回复:
“运行时最大值总是第一个输入值” 这句话是什么意思? C/C++ code?12345678#include<stdio.h>void main(){ int a,b,c; scanf("%d,%d,%d",&a,&b,&c); printf("最大值等于%d\n",a);} 冒似这样就满足你的条件了
输入数字时没加逗号
搬砖随想录 2012-11-26
  • 打赏
  • 举报
回复

#include<stdio.h>

main(void)
{ 
    int max(int x,int y,int z);
    int t,a,b,c;
    
    scanf("%d,%d,%d",&a,&b,&c);

    t=max(a,b,c);

    printf("最大值等于%d\n",t);
}

int max(int x,int y,int z)
{ 
    int s, result;
    
    s = (x < y) ? y : x;
    result = (s < z ) ? z : s;

    return result;
} 
xy201718 2012-11-26
  • 打赏
  • 举报
回复
引用 2 楼 LouisScola 的回复:
int max(int x,int y,int z) { int s; if(x<y)s=y; else s=x; if(s<z)s=z; return(s); }
输入数字时少了逗号
xy201718 2012-11-26
  • 打赏
  • 举报
回复
引用 4 楼 breakfisher 的回复:
C/C++ code?123456789101112int max(int x,int y,int z){ int s; if(x<y) { if(y<z)s=z; else s = y; } else { if(x<z)s=z; else s=x; } return(s);}
少了逗号
xy201718 2012-11-26
  • 打赏
  • 举报
回复
引用 6 楼 zhuankeshumo 的回复:
输入5,7,3 逗号别漏了
对了 嘻嘻谢谢
newtee 2012-11-26
  • 打赏
  • 举报
回复
输入5,7,3 逗号别漏了
newtee 2012-11-26
  • 打赏
  • 举报
回复
breakfisher 2012-11-26
  • 打赏
  • 举报
回复
int max(int x,int y,int z)
{ int s;
 if(x<y) {
   if(y<z)s=z;
   else s = y;
 }
 else {
   if(x<z)s=z;
   else s=x;
 } 
return(s);
} 
  • 打赏
  • 举报
回复

int max(int x,int y, int z)
{ 
  int s;
  if(x=>y && x=>z)
     s=x;
  else if(y=>x && y=>z)
     s=y;
  else if(z=>x && z=>y)
     s=z;
  return(s);
} 
LouisScola 2012-11-26
  • 打赏
  • 举报
回复
int max(int x,int y,int z) { int s; if(x<y)s=y; else s=x; if(s<z)s=z; return(s); }
转角天边 2012-11-26
  • 打赏
  • 举报
回复
“运行时最大值总是第一个输入值” 这句话是什么意思?

#include<stdio.h>
void main()
{
  int a,b,c;
  scanf("%d,%d,%d",&a,&b,&c);
  printf("最大值等于%d\n",a);
}
冒似这样就满足你的条件了

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧