C语言新手,求帮助

ibanana2333 2015-09-23 10:38:14
一个很简单的求最大值的程序,但总是会出小问题。很无奈。。。代码发二楼
...全文
404 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
wiltlavender 2015-10-24
  • 打赏
  • 举报
回复
8楼已经给出解答,说实话,我不明白楼主为什么要用逗号表达式
运维少年 2015-10-23
  • 打赏
  • 举报
回复
# include <stdio.h> int main(void) { int a, b, c, max; printf("请输入三个数字,中间用逗号隔开:\n"); scanf("%d,%d,%d", &a, &b, &c); if(a>b && a>c) max = a; else if(b>a && b>c) max = b; else max = c; printf("the max is = %d\n",max); return 0; }
的费时费工 2015-10-03
  • 打赏
  • 举报
回复
把if里面的逗号改成&&
Sp4rkW 2015-10-02
  • 打赏
  • 举报
回复
#include <stdio.h>

int main(void)
{
int a,b,c,max;
printf("请输入整数a,b,c:\n");

scanf("%d%d%d",&a,&b,&c);
if(a>b&&a>c)
max = a;
if(b>a&&b>c)
max = b;
if(c>a&&c>b)
max = c;
printf("the max is = %d\n",max);
return 0;
}
Scanf语句中不能有非输入控制符逗号,如果有的话赋值的时候就要把逗号打上,一般不这么写。其次代码要规范你这样是严重的代码不规范,以后要吃大亏
star714cong 2015-09-26
  • 打赏
  • 举报
回复
首先,逗号表达式的形式若为此: “表达式1,表达式2 ” 那么求解顺序为:先计算表达式1,再计算表达式2,总体表达式的值为表达式2的值, 所以题目可等同于:if(a>c) max=a; if(b>c) max=b; if(c>b) max=c; 再者,该code中三个if语句属于顺序结构,所以都会执行,当输入23, 12, 11时,执行第一个if语句得出max=11; 执行第二个语句得出max=12; 第三个if语句不满足选择条件,所以不执行max=c这条语句, 综上:max=12 希望能帮助到你。
gh_99 2015-09-26
  • 打赏
  • 举报
回复
引用 1 楼 crave101 的回复:
int main(void) { while(1) { int a,b,c,max; printf("请输入整数a,b,c:\n"); scanf("%d,%d,%d",&a,&b,&c); if(a>b,a>c) max = a; if(b>a,b>c) max = b; if(c>a,c>b) max = c; printf("the max is = %d\n",max); } returne 0; }
改为:
int main(void)
{
int a,b,c,max;
printf("请输入整数a,b,c:\n");
scanf("%d,%d,%d",&a,&b,&c);
if(a>b&&a>c)  //&&为且的意思,表示a>b并且a>c    while循环没用
max = a;
else if(b>a&&b>c)
max = b;
else if(c>a&&c>b)
max = c;
printf("the max is = %d\n",max);
returne 0;
}
qq_30797775 2015-09-26
  • 打赏
  • 举报
回复
Scanf语句中不能有非输入控制符逗号,如果有的话赋值的时候就要把逗号打上,一般不这么写。其次代码要规范你这样是严重的代码不规范,以后要吃大亏
qq_31485021 2015-09-25
  • 打赏
  • 举报
回复
引用 2楼我是你的主体 的回复:
问题在于,如果输入类似于 23,12,11 这种最大值在字母a的位置,它输出的结果会是12而不是23。但如果最大值在字母b或者c的位置,就不会有这种情况
为什么呢
ibanana2333 2015-09-23
  • 打赏
  • 举报
回复
引用 3 楼 linux_liyi的回复:

int main(void)
{
while(1)
{
int a,b,c,max;
printf("请输入整数a,b,c:\n");
scanf("%d,%d,%d",&a,&b,&c);
if(a>b,a>c)
    max = a;
else
    max = c;
if(b>a,b>max)
max = b;
printf("the max is = %d\n",max);
}
returne 0;
} 
好了,谢谢!多个if中间要加个else才行么?
PoorMonk丶 2015-09-23
  • 打赏
  • 举报
回复
int main(void)
{
	int a,b,c,max;
	while(1)
	{	
		printf("请输入整数a,b,c:\n");
		scanf("%d%d%d",&a,&b,&c);
		if(a>c)
			max = a;
		else
			max = c;
		if(b>max)
			max = b;
		printf("the max is = %d\n",max);
	}
	return 0;
} 
  • 打赏
  • 举报
回复

int main(void)
{
while(1)
{
int a,b,c,max;
printf("请输入整数a,b,c:\n");
scanf("%d,%d,%d",&a,&b,&c);
if(a>b,a>c)
    max = a;
else
    max = c;
if(b>a,b>max)
max = b;
printf("the max is = %d\n",max);
}
returne 0;
} 
ibanana2333 2015-09-23
  • 打赏
  • 举报
回复
问题在于,如果输入类似于 23,12,11 这种最大值在字母a的位置,它输出的结果会是12而不是23。但如果最大值在字母b或者c的位置,就不会有这种情况
ibanana2333 2015-09-23
  • 打赏
  • 举报
回复
int main(void) { while(1) { int a,b,c,max; printf("请输入整数a,b,c:\n"); scanf("%d,%d,%d",&a,&b,&c); if(a>b,a>c) max = a; if(b>a,b>c) max = b; if(c>a,c>b) max = c; printf("the max is = %d\n",max); } returne 0; }

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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