|
|
#9
yfbn2007-08-12 22:15
回复
程序2的错误如图:
|
|
#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
| |