标题:(新手学C。)运行零错误,检查不出哪儿错了,求指导。
只看楼主
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
既然運行零錯誤,就是沒錯啊,找不到是應該的。

授人以渔,不授人以鱼。
2014-04-07 09:40
安宁1991
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:76
专家分:123
注 册:2014-4-3
得分:0 
同是新手,重新为第一个程序写了代码如下,仅供参考:
程序代码:
#include<stdio.h>
int main()
{
    float a,b,c;//考虑到成绩不一定为整数,所以定义成了三个float型变量
    printf("请输入成绩:\n");
    scanf("%f %f %f",&a,&b,&c);//从键盘接收三个数,回车、空格隔开都行
   if(a<60||b<60||c<60)//这里首先判断三个数是不是有一个<60
        printf("要好好努力哦!\n");
   else if(a>=80&&b>=80&&c>=80)
        printf("很好!\n");
    else if((a>=80&&b>=70&&c>=70)||(b>=80&&a>=70&&c>=70)||(c>=80&&a>=70&&b>=70))//没有想到好的简化算法,水平有限
        printf("好!\n");//这个题目还是有漏洞的,没有给出60~70之间的评判。不合逻辑。剩下的可能还有很多
    //比如一个数大于80,但其他两数小于70.又如三个数都小于70等等。这些可能都没考虑到。
    return 0;
}



[ 本帖最后由 安宁1991 于 2014-4-7 11:37 编辑 ]

因为有你,所以做什么都有动力。z,爱你。
2014-04-07 10:26
Andrew_Lee
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:185
专家分:626
注 册:2014-3-21
得分:0 
回复 12楼 安宁1991
我觉得将else if((a>=80&&b>=70&&c>=70)||(b>=80&&a>=70&&c>=70)||(c>=80&&a>=70&&b>=70))
直接改成else就可以了
2014-04-07 12:07
安宁1991
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:76
专家分:123
注 册:2014-4-3
得分:0 
回复 13楼 Andrew_Lee
嘿嘿!你可以复制到程序里试试啊?依据“就近匹配”原则,else总是跟最近的if匹配的。
你试试把最后的else if的if去掉再编译,编译器就报警。当然还可以在else if后面再加一条else语句就不会出错。
这是嵌套的问题,else if就相当于“如果”的意思,这是可以带条件的,但是else就是“否则”的意思,
就是说当else if语句里的条件不成立的时候,就执行else语句,所以,else分支里只有执行的功能,不可以带条件的。
如果你把最后的else if语句的if去掉,那么else就会跟上面的那个else if进行匹配,但是你else分支又带着条件,所以编译器不知道你是什么意思,就报警了。

因为有你,所以做什么都有动力。z,爱你。
2014-04-07 12:54
Andrew_Lee
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:185
专家分:626
注 册:2014-3-21
得分:0 
回复 14楼 安宁1991
恩 ,我在VC6.0和Linux下都试了下没有警告的。
其实if的分支结构不一定是if-else结构,这个事if-else if-else if……else if -else的分支结构。这里else是对上面所有没有包括情况的一个处理
这里if-else if-else的else表示的是if和else if条件以外的条件。。

2014-04-07 14:01
神机军师
Rank: 7Rank: 7Rank: 7
来 自:游鱼潜水
等 级:黑侠
威 望:2
帖 子:202
专家分:542
注 册:2013-12-21
得分:1 
突然发现大家讨论if else的习惯问题了。
1.if (expression1)
  if (expression2)
  ......
  else
  ......
2.if (expression1)
  if (expression2)
  ......
  else
  ......

这两个是一样的吧? 其实原意是不一样。。 所以我建议不管if else for 后面语句有多少都用{}把他们括起来

1.if (expression1)
  {
     if (expression2)
     ......
  }
  else
  ......
2.if (expression1)
  {
     if (expression2)
     ......
     else
     ......
  }

未知令人期待!
2014-04-08 20:48
别嫌我笨
Rank: 1
等 级:新手上路
帖 子:16
专家分:2
注 册:2014-3-31
得分:0 
第一题第二段,条件不全,如果输入70/70/79,还是会显示好,缺小于等于80条件
2014-04-09 10:57
别嫌我笨
Rank: 1
等 级:新手上路
帖 子:16
专家分:2
注 册:2014-3-31
得分:0 
回复 4楼 cquwt
第一题还缺少小于等于80条件,如果输入70.70.79也会显示好
2014-04-09 11:01
cquwt
Rank: 1
等 级:新手上路
帖 子:41
专家分:2
注 册:2013-12-24
得分:0 
回复 9楼 qq656582033
加了
2014-04-09 23:36



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-429756-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.010887 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved