注册 登录
编程论坛 C++教室

(急)朋友们们帮个忙关于C++的问题????????????

yfbn 发布于 2007-08-12 17:51, 1385 次点击

我要求三个数最大的一个,这个三个程序都有问题  我不知道错在哪里
大侠帮我找找错误,,,,!谢谢!!!!!!!!!!!!!!
程序1
#indluce<stdio.h>
void main()
{
int a,b,c,d;
printf("请输入三个数:\d");
d=max(a,b,c);
scanf("%d%d%d,&a,&b,&c);
}
为什么这样不能输出最大值啊????


程序2
用if语句编出来为什么也不对
#include<stdio.h>
void main()
{
int a,b,c;
printf("请输入三个数:");

scanf("%d,%d,%d\n",&a,&b,&c);
if(a<b<c)

printf("%d\n",c);

if(a>b>c)
printf("%d\n",a);

else

printf("%d\n",b);
}
觉得没什么问题为什么还是不能输出呢

还有这个为什么也行不通呢???

程序3
#include<stdio.h>
void main()
{
int a,b;
printf("请输入两个数:");
scanf("%d%d",&a,&b);
if(a>b)
printf("\n");|我知道这里存在错误,改怎么改呢|
else
printf("\n");
}

18 回复
#2
yfbn2007-08-12 17:53
我是一个初学者,未丛接触过C语言,所以想认识各位朋友,能向你们学习,交流,提高!!!!!!!!
#3
wenqinwuhai2007-08-12 18:43
回复:(yfbn)(急)朋友们们帮个忙关于C++的问题??...

第一个问题应该是最后输出的问题,改为Printf("%d%d%d",a,b,d)。因为你要最大值,最后应该是输出。

#4
wenqinwuhai2007-08-12 18:44
回复:(yfbn)(急)朋友们们帮个忙关于C++的问题??...

第一个问题应该是最后输出的问题,改为Printf("%d%d%d",a,b,d)。因为你要最大值,最后应该是输出。

#5
yfbn2007-08-12 20:56
以下是引用wenqinwuhai在2007-8-12 18:43:21的发言:

第一个问题应该是最后输出的问题,改为Printf("%d%d%d",a,b,d)。因为你要最大值,最后应该是输出。

谢谢啊,不过我按你说的改了后运行了还是有错误.

#6
multiple19022007-08-12 20:59
以下是引用yfbn在2007-8-12 20:56:10的发言:

谢谢啊,不过我按你说的改了后运行了还是有错误.

干嘛不说是什么错误?见不得人吗?

#7
yfbn2007-08-12 21:48
以下是引用multiple1902在2007-8-12 20:59:37的发言:

干嘛不说是什么错误?见不得人吗?

呵呵,不好意思 是这个错误的 你看看!

[此贴子已经被作者于2007-8-12 22:06:43编辑过]

#8
multiple19022007-08-12 22:05
C++也能输出叉烧包……神哉
#9
yfbn2007-08-12 22:15
回复

程序2的错误如图:

#10
multiple19022007-08-12 22:17
第一行拼写错误

include INCLUDE
#11
multiple19022007-08-12 22:18
孔明兄,看一下……cpp里面大于号(比较大小的)能连用吗?就像这样: bln=a>b>c
我手头没有cpp 抱歉。但我没这么用过

[此贴子已经被作者于2007-8-12 22:19:04编辑过]

#12
卧龙孔明2007-08-12 22:25
以下是引用multiple1902在2007-8-12 22:18:04的发言:
孔明兄,看一下……cpp里面大于号(比较大小的)能连用吗?就像这样: bln=a>b>c
我手头没有cpp 抱歉。但我没这么用过

大于号可以连用,但不是其表达本意
例如
5>9>-1
先判断
5>9 为假 即5>9=0
然后
0>-1 为真 即0>-1=1
所以
5>9>-1在C中表达式值为1
是荒谬的,所以虽然可以连用,但不是本意
可以改为
5>9 && 9>-1
这样就对了

#13
terisevend2007-08-12 22:34
注意: 逻辑符号可以连用,但是表达的东西就如空明兄说的...(以下修正均已默认逻辑符号没连用...)

第一个程序:
d = max(a,b,c);
你的max函数定义了没有?或者说, max函数在main后面?那么就是缺少函数声明了...
如果max函数在main后面定义了的话,在main之前(或调用max之前)作声明就可以了,声明如下:
int max(int, int, int);
如果是没定义max函数的话(max函数是自定义类型,而且声明不在stdio.h中...),定义可以是这样:
int max( int aa, int bb, int cc )
{
int max = aa;

if( bb > max )
max = bb;
if( cc > max )
max = cc;

return max;
}

修正后,确定调试成功!

程序2:
在scanf("%d,%d,%d\n",&a,&b,&c); 中, 不要加\n...除非你想输入完3个数字后,需要再输入多个值,才能执行后面的代码...
而且,输入的时候,也要想scanf里的那样, 如: 1,2,3

还有...对于你的那个判断(if-if-else), 改成(if-else if-else)...不然...会输出2个结果...

修正后,确定调试成功!

程序3:
scanf("%d%d",a,b); 中, %d与%d要有符号格开... 如 scanf("%d %d",a,b); 输入例子: 1 2
printf("\n"); 这只是空行... 应该改成printf("%d\n",a); 下面一个printf同样...
至于printf(...);旁边的注释...C中用/* */ 而C++增加了一种//, 如: /*TEST*/ 或 //C++
/* */和//的区别就在于,//只能是一行.../* */可以是多行...
其他的没问题...

修正后...确定调试成功!

[此贴子已经被作者于2007-8-12 22:40:13编辑过]

#14
skywolfkun2007-08-13 00:51
程序1:max那个是函数!需要在main函数之前先定义!然后写上max的动作
int max( int a, int b, int c )
{
int max;
max=(a>b)?a:((b>c)?b:c);
return max;
}
还有个最关键的!先给abc赋初值然后再调用函数max!完整的程序应该这样:
#indluce<stdio.h>
int max(int a,int b,int c);
void main()
{
int a,b,c,d;
printf("请输入三个数:\d");
scanf("%d,%d,%d",&a,&b,&c);
d=max(a,b,c);
printf("\nmax=%d",d);
}
int max( int a, int b, int c )
{
int m;
max=(a>b)?a:((b>c)?b:c);
return m;
}

程序2:scanf("%d,%d,%d\n",&a,&b,&c); 输入的时候不用换行!还有最关键的!这个if(a<b<c)是语法错误!
<号是2目的!也就是说只能写成形如a<b这样的!可以这样写!
    #include<stdio.h>
void main()
{
int a,b,c,max;
printf("请输入三个数:");
scanf("%d,%d,%d",&a,&b,&c);
max=(a>b)?a:((b>c)?b:c);
printf("\nmax=%d",max);
}
程序3:你输出的怎么只是个换行呢?要这么写
#include<stdio.h>
void main()
{
int a,b;
printf("请输入两个数:");
scanf("%d%d",&a,&b);
if(a>b)
printf("%d\n",a);
else
printf("%d\n",b);
}
#15
yfbn2007-08-13 11:04
回复:(skywolfkun)程序1:max那个是函数!需要在m...
谢谢各位!!!
#16
yfbn2007-08-13 18:47
以下是引用skywolfkun在2007-8-13 0:51:41的发言:

程序2:scanf("%d,%d,%d\n",&a,&b,&c); 输入的时候不用换行!还有最关键的!这个if(a<b<c)是语法错误!
<号是2目的!也就是说只能写成形如a<b这样的!可以这样写!
    #include<stdio.h>
void main()
{
int a,b,c,max;
printf("请输入三个数:");
scanf("%d,%d,%d",&a,&b,&c);
max=(a>b)?a:((b>c)?b:c);
printf("\nmax=%d",max);
}

这个程序调试过输入了12 13 14三个数值,输出的最大结果为什么max=12,到底还还缺少什么条件

只有本站会员才能查看附件,请 登录

#17
yfbn2007-08-13 19:03
以下是引用卧龙孔明在2007-8-12 22:25:56的发言:

大于号可以连用,但不是其表达本意
例如
5>9>-1
先判断
5>9 为假 即5>9=0
然后
0>-1 为真 即0>-1=1
所以
5>9>-1在C中表达式值为1
是荒谬的,所以虽然可以连用,但不是本意
可以改为
5>9 && 9>-1
这样就对了

  卧龙孔明: 你的意思我还是不能完全领悟
能帮我解释以下这个部分

只有本站会员才能查看附件,请 登录

#18
狂人老大2007-08-13 19:55
以下是引用yfbn在2007-8-13 19:03:27的发言:

  卧龙孔明: 你的意思我还是不能完全领悟
能帮我解释以下这个部分


假设max为最大值 先将a与max比较 a大则a赋值给max 否则再将max和c比较 max大的话就直接输出max
c大的话将c赋值给max 然后将max输出

[此贴子已经被作者于2007-8-13 19:57:42编辑过]

#19
yfbn2007-08-15 13:49
回复:(狂人老大)以下是引用yfbn在2007-8-13 19:03:...
狂人老大!谢谢你
1