1
yangqi 2014-07-29 22:58:28 +08:00
....
无语了, if后面只能有一个else, 之前的用else if |
2
sy1989 2014-07-29 22:59:18 +08:00
不用else if的话后面应该是一个包一个的
|
3
lightening 2014-07-29 22:59:39 +08:00
90 < result >= 80
|
4
leavic 2014-07-29 22:59:46 +08:00
哥,能买本教材不?
|
6
yukirock 2014-07-29 23:01:29 +08:00 via iPhone
if (cond 1) {
} else if (cond 2) { } 注意花括号的位置。 另外 int main() 需要返回 0。 |
7
bombless 2014-07-29 23:01:46 +08:00
看不懂提示至少能看懂行号吧…
|
8
GPU OP |
9
iyaozhen 2014-07-29 23:03:38 +08:00
90 < result >= 80,不能这样用啊,不要想当然。还是4楼说的好,借本教材吧。
|
10
GPU OP |
12
tjmao 2014-07-29 23:09:19 +08:00
哥,能买本正规教材不?判断大小的表达式,如果区间的两边是有理数,你要拆成两个表达式中间用逻辑运算符连接起来的。
我照着词法分析器和语法分析器画三天瓢就知道怎么写代码了…… |
13
tjmao 2014-07-29 23:13:16 +08:00
另外你这算法太烂,result/10, select...case就能完成的事情,写那么多表达式。第一个还写错了,运算符应该是>=。
|
15
Tinet 2014-07-29 23:18:28 +08:00
大家就不要喷了
|
16
ifconfig 2014-07-29 23:19:09 +08:00
楼上不要太打击人,咱初中学C的时候还不是对着书一行行敲的,楼主多看书多动手就是了
|
17
icylogic 2014-07-29 23:19:53 +08:00
|
18
GPU OP 我一共就学习C的时间就不够两个星期 。 别怪我啊。
|
21
tonyluj 2014-07-29 23:23:53 +08:00
BTW:看到LZ每行都有花括号,突然有Go的感觉
|
23
RHFS 2014-07-29 23:28:59 +08:00
90 < result >= 80
90 < result && result > 80 && result = 80 才对吧,然后别看谭浩强的书。 |
24
icylogic 2014-07-29 23:36:32 +08:00
|
25
GPU OP |
26
GPU OP @Livid
https://gist.github.com/p0w3r-/e518ff71c6a9d68c3981 看上面我这个链接 , 用户ID 包括了 ” - " 这个符号会导致无法成功把代码发出来 ,算不算bug呢? |
27
acros 2014-07-29 23:53:35 +08:00
想起我当年自学C++一个Hello World近十个error的年代,吓尿了···
|
28
zhujinliang 2014-07-30 00:01:49 +08:00 via Android
result < 90这个条件是没意义的,上面是result>= 90,不成立了,则进行else if条件的判断,已隐含此时值<90,同理后面的<80 <70
|
29
rentaro 2014-07-30 00:06:18 +08:00
return 0;
|
30
jetbillwin 2014-07-30 00:28:08 +08:00
我觉得要好好看看出错的信息,哪怕是英文的,配合着字典也能看懂的。现在的编译器都非常智能,基本上都能找到出错点,尤其是LLVM。所以,看懂编译器的出错信息非常有用。
|
31
GPU OP |
33
Ricepig 2014-07-30 01:14:36 +08:00
int main()
{ int result; scanf("%d",&result); int rank = 9 - result/10; if(rank < 0) { rank = 0; }else if(rank > 4){ rank = 4; } printf("%c/n", 'A'+rank); return 0 } 这样行吗? |
34
jesse_luo 2014-07-30 01:16:03 +08:00
lz期末考应该已经过了吧……
另外else if里貌似有一半不用写 |
36
tioover 2014-07-30 01:23:04 +08:00
最近在用模式匹配,简化这些代码非常爽
|
37
em70 2014-07-30 01:47:17 +08:00 via Android
编译错误看不懂不要紧,可以直接贴google搜索,解决方案马上就出来了,多几次就看懂了。
另外,程序员英语不需要多好,但至少有查字典阅读的程度 |
38
tjmao 2014-07-30 03:37:18 +08:00 via iPhone
|
39
abscon 2014-07-30 06:22:42 +08:00 via Android
附言1里的代码,if语句中所有的&&后面的判断是否小于的部分都是多余的,可以删掉。
你的失误在于把if else看成一堆状态的并行的**罗列**,而不是一个串行的**过程**。比如说,当你来到第一个else if的时候,result一定是<90的,否则就掉进前面那个if分支了。 秀个当年我同学的经典错误的简化版:变更字符串里的字母A的大小写状态,a换成A,A换成a。他是这么写的-- if( ch == 'a' ) ch = 'A'; if( ch == 'A' ) ch = 'a'; |
40
bombless 2014-07-30 08:44:41 +08:00
一开始是这样的…照着书来看一下表达式是怎么构成的吧,初学的时候不要想当然。
|
41
acros 2014-07-30 08:56:40 +08:00
@acros
namespace前面忘了写std;缺少封号;大小写不对;夹杂中文字符...能出错的地方多了,而且以前的编译器警报也没现在的准确。 |
42
lu18887 2014-07-30 09:01:23 +08:00
楼主值得鼓励,不懂就问,没有错!不要气馁!
|
43
roychan 2014-07-30 09:02:48 +08:00
呃……为什么不用 switch 呢?
|
45
Geeker 2014-07-30 09:18:23 +08:00
很多人在不会的时候连问的勇气都没有!每个人都是这么过来的。加油
|
46
rulerstorm 2014-07-30 09:29:03 +08:00
写得还可以啊,这明显是小朋友的炫耀贴~
|
47
frankzeng 2014-07-30 09:36:14 +08:00
result >= 80 && result < 90 ,没这么写的啊,明显是result<90是多余的,你想啊,如果result=85,第一个判断肯定为假,第二个>=80就为真的,后面的&& result<90就是多余的
|
48
GPU OP |
49
GPU OP @frankzeng 原本是" result < 90 && result >= 80 " 这样子写的,然后编译出来结果不对就掉过来了,然后也没有想太多成立不成立,结果对就可以,然后就发上来了.
@rulerstorm 这算是损还是什么呢 ,^ ^ . |
51
ljcarsenal 2014-07-30 09:48:02 +08:00
@crab yuange真的已经达到十分吊的地步了嘛。。。。。不过他可真是毫不谦虚啊。。。那些大神也是一直吹捧他
|
52
frankzeng 2014-07-30 09:48:07 +08:00
|
53
xavierskip 2014-07-30 09:52:56 +08:00
LZ web app都能写,这点C搞不定?
|
54
shawngao 2014-07-30 09:56:10 +08:00
} else if ( result >= 80 && result < 90 ){
这个“ && result < 90 ”没必要吧 |
55
precisi0nux 2014-07-30 10:00:53 +08:00
这样来问很浪费时间,不如找本正统的教材看。
|
56
kid177 2014-07-30 10:13:19 +08:00
这样低级的错误,感觉还是LZ没有仔细去学吧。
不过也不能怪LZ,想当初我int main写成int mian硬是调了1个下午 |
57
auser 2014-07-30 10:27:17 +08:00
@yukirock 标准规定main函数可以不显示return的
C中的函数要是没有参数,建议加上void,例如: long random(void); 写成: long random() 这种形式编译器无法帮助检查错误的参数传递 吹毛求疵下: result是否应该有一个合理的范围呢?比如[0,100] 如果scanf时候输入了非法字符怎么办?[好多年没用过scanf这个函数了……这里楼主可以暂时先检查scanf的返回值] |
58
abscon 2014-07-30 10:34:15 +08:00
@GPU 不是我的错误,是我同学的错误。错误不在于缺少花括号。如果你坚持要花括号的话我给你花括号。你看看,能看出错误在哪里不。看不出的话说明你的那个错误意识还没有纠正过来(代码是动态的过程,不是静态的状态)
#include <stdio.h> int main() { char ch; scanf( "%c",&ch ); if( ch == 'a' ) { ch = 'A'; } if( ch == 'A' ) { ch = 'a'; } printf( "%c\n", ch ); return 0; } |
60
sampeng 2014-07-30 10:36:59 +08:00
你需要一本正规的教材。靠猜是没戏的
|
61
hcy 2014-07-30 11:03:54 +08:00
如果LZ一会反应不过来可以先这样写
#include <stdio.h> int main() { int result; scanf("%d",&result); if ( result >= 90 ){ printf("A\n"); } if ( result >= 80 && result < 90 ){ printf("B\n"); } if ( result >= 70 && result < 80 ){ printf("C\n"); } if ( result >= 60 && result < 70 ){ printf("D\n"); } if(result <60){ printf("E\n"); } return 0; } |
62
GPU OP @abscon 我明白了 , 最后他还是输出一个 小写'a' .. 他应该在判断 是否等于 'A' 的那个if 前面添加一个else 就可以了.
@sampeng 真不是教材问题 我也有K&R 在哪里. @kid177 我看视频学的 .过后再看一次K&R . @xavierskip 我哪里会写Web App 了啦. |
63
gejigeji 2014-07-30 11:08:54 +08:00
要不LZ自杀呗
|
64
StackGao 2014-07-30 11:10:20 +08:00
楼上心理有问题, 楼主不要介意.
|
65
hcy 2014-07-30 11:16:14 +08:00
看了下那个switch 我觉得LZ还是去弄本教材吧... 你输入个92之类参数再看看?
|
67
GPU OP |
70
lemonlwz 2014-07-30 11:43:51 +08:00
很想知道楼今年贵庚
|
71
cassyfar 2014-07-30 12:33:35 +08:00 via iPad
lz这理解力肯定是来卖萌的
|
72
amon 2014-07-30 14:43:46 +08:00
不建议把这样的问题发到v2,v2的精神是explore。
可以考虑去相关的学习群或者bbs。 LZ加油:) |
76
tttwww18 2014-07-30 16:19:50 +08:00
#include <stdio.h>
int main() { char* g="FFFFFFDCBAA"; int d; scanf("%d",&d); (d>=0 && d<=100)?printf("%c\n",g[d/10]):printf("Out of range"); return 0; } 这样写如何呢? |
79
w2angel 2014-07-31 08:53:52 +08:00 via Android
居然看到一个这样写的
90 < result && result > 80 && result = 80 麻烦不要误导别人好不好 |
80
HatMatrix 2014-07-31 12:29:42 +08:00
我怎么觉得你们都被楼主嫖了,都用github了不应该这个水平啊,你们说呢
|