标题:(新手学C。)运行零错误,检查不出哪儿错了,求指导。
只看楼主
cquwt
Rank: 1
等 级:新手上路
帖 子:41
专家分:2
注 册:2013-12-24
结帖率:69.23%
已结贴  问题点数:20 回复次数:18 
(新手学C。)运行零错误,检查不出哪儿错了,求指导。
/*本题要求用if……else if的多分支选择结构(单边走)实现
题目:输入三个正整数,分别代表三门功课成绩。若三门课都≥80,输出“很好!”,若至少一门≥80,另两门均≥70,输出“好!”,若至少一门<60,输出“要好好努力哦!”
要求:按题目要求编制程序并上机调试运行该程序
测试该程序的三组数据为:80,85,92
                        70,75,88
                        52,60,73*/
#include<stdio.h>
void main()
{  int a,b,c;
   printf("please input a,b,c:");
   scanf("%d%d%d",&a,&b,&c);
   if(a>=80&&b>=80&&c>=80)
     printf("很好!");
   else if(a>=70&&b>=70||b>=70&&c>=70||a>=70&&c>=70)
       printf("好!");
   else if(a<=60||b<=60||c<=60)
       printf("要好好努力哦!");
}


死活不知道那错了 输入任何值显示都是:要好好努力哦!
搜索更多相关主题的帖子: include please 正整数 三门 
2014-04-06 23:09
Andrew_Lee
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:185
专家分:626
注 册:2014-3-21
得分:5 
80,85,92
70,75,88
52,60,73
这些输入之间的逗号用空格代替
或者将scanf("%d%d%d",&a,&b,&c);
改为scanf("%d,%d,%d",&a,&b,&c);

在一个就是提醒最好像a>=80&&b>=80&&c>=80这样判断条件的语句用括号分隔优先级,防止优先级问题出现意外。。
2014-04-06 23:20
神机军师
Rank: 7Rank: 7Rank: 7
来 自:游鱼潜水
等 级:黑侠
威 望:2
帖 子:202
专家分:542
注 册:2013-12-21
得分:0 
a>=70&&b>=70||b>=70&&c>=70||a>=70&&c>=70 应该是优先级问题。。
(a >= 70 && b >= 70) || (b >= 70 && c >= 70) || (a >= 70 && c >= 70)用括号控制好判定顺序,你试试~~

未知令人期待!
2014-04-06 23:34
cquwt
Rank: 1
等 级:新手上路
帖 子:41
专家分:2
注 册:2013-12-24
得分:0 
回复 2楼 Andrew_Lee
噢,真是这样啊,刚刚运行了下,没问题,谢谢啊。再帮我看下这道。他始终有个这样的错误:error C2018: unknown character '0xa1'这是怎么回事呢,看起来没问题啊

/*题目:显示水果的价格:有4种水果分别是:苹果(apples)、梨(pears)、桔子(oranges)和葡萄( grapes),每千克单价分别是6.00元,4.10元,1.5元和10.2元。编程实现下述功能:
1.在屏幕上显示一个菜单(4种水果的编号和名字),如:
[1] apples
[2] pears
[3] oranges
[4] grapes
2.输入该水果的编号,输出其单价(保留2位小数),如果输入不正确的编号,显示单价为0。*/
#include<stdio.h>
void main()
{  printf("[1] apples\n");
   printf("[2] pears\n");
   printf("[3] oranges\n");
   printf("[4] grapes\n");
   double a,p,o,g;
   a=6,p=4.1,o=1.5,g=10.2;
   int c;
   printf("Input c:");
   scanf("%d",&c);
  switch(c)
  {   case 1:printf("5.2f\n",a);
               break;
    case 2:printf("5.2f\n",p);
              break;
    case 3:printf("5.2f\n",o);
             break;
    case 4:printf("5.2f\n",g);
            break;
    default:printf("0元/千克.\n");
  }
}
2014-04-06 23:37
chqwhlily
Rank: 2
等 级:论坛游民
帖 子:9
专家分:16
注 册:2011-5-11
得分:2 
a=6,p=4.1,o=1.5,g=10.2;
改为:
 a=6;p=4.1;o=1.5;g=10.2;
要弄清楚初始化和赋值的格式。
2014-04-07 00:21
chqwhlily
Rank: 2
等 级:论坛游民
帖 子:9
专家分:16
注 册:2011-5-11
得分:2 
a=6,p=4.1,o=1.5,g=10.2;
改为:
int a,p,o,g;
 a=6;p=4.1;o=1.5;g=10.2;
或者:
int a=6,p=4.1,o=1.5,g=10.2;
2014-04-07 00:25
邂逅电脑
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2014-4-5
得分:0 
switch()里面编译有错,应该是你打字时弄乱了,建议你重打一遍!
case 1:printf("%5.2f\n",a);break;
case 2:printf("%5.2f\n",p);break;
case 3:printf("%5.2f\n",o);break;
case 4:printf("%5.2f\n",g);break;
default:printf("0元/千克");
我重打一遍没问题!
2014-04-07 00:37
安宁1991
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:76
专家分:123
注 册:2014-4-3
得分:8 
错误太多,重新整理了代码如下,自己对照找出错误。
程序代码:
#include<stdio.h>
void main()
{
    char c;
    double a,p,o,g;
   a=6;p=4.1;o=1.5;g=10.2;//注意定义变量和赋值的写法
   printf("[1] apples\n");
   printf("[2] pears\n");
   printf("[3] oranges\n");
   printf("[4] grapes\n");
   printf("Input c:");
   scanf("%c",&c);//因为用户只需输入一个字符来选择,所以把c定义成字符型较合适
  switch(c)
  {  

  case '1':printf("%.2f\n",a);//注意case的语法高亮,如果函数正确但是单词没有高亮,注意检查语句是否有错?重新写一次代码
               break;
  case '2':printf("%.2f\n",p);//注意,不要少了格式符%,少了百分号程序就无法编译,另外,1234应该加上单引号,否则程序将跳过case语句,直接执行default分支。
               break;
  case '3':printf("%.2f\n",o);
               break;
  case '4':printf("%.2f\n",g);
               break;
  default :printf("0元/千克.\n");
  }
}



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

因为有你,所以做什么都有动力。z,爱你。
2014-04-07 00:44
qq656582033
Rank: 1
等 级:新手上路
帖 子:2
专家分:4
注 册:2014-4-6
得分:1 
回复 楼主 cquwt
这是修改后的代码:
#include<stdio.h>
void main()
{  int a,b,c;
   printf("please input a,b,c:");
   scanf("%d%d%d",&a,&b,&c);
   if(a>=80&&b>=80&&c>=80)
     printf("很好!");
   else if(a>=70&&b>=70&&c>=80||b>=70&&c>=70&&a>=80||a>=70&&c>=70&&b>=80)
       printf("好!");
   else if(a<=60||b<=60||c<=60)
       printf("要好好努力哦!");
}
楼主。第一个else if这个逻辑是不对的,按楼主这样判断的话若输入71,71,59,会输出“好!”,不符合题目要求。其余部分没有修改,我复制楼主的代码后在我电脑运行,并没有出现楼主所说的结果。我猜楼主可能是输入成绩的时候用逗号隔开了,建议输入成绩的时候用空格或者回车键。我也是初学者,楼主可以加我QQ,用问题互相交流。
2014-04-07 09:14
Andrew_Lee
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:185
专家分:626
注 册:2014-3-21
得分:1 
抱歉,昨天回宿舍了,,这个安宁1991 是对的,char c; double a,p,o,g;最好放在前面(C语言的不允许随时定义变量,所有定义的变量都只能放在函数开头),在一些编译器里面,你原来那样写是可能会报错的,,如果是C++的话就不会这样。


[ 本帖最后由 Andrew_Lee 于 2014-4-7 10:15 编辑 ]
2014-04-07 09:38



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




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

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