![]() | 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) { /td> } 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了不应该这个水平啊,你们说呢 |