鱼C论坛

 找回密码
 立即注册
查看: 2314|回复: 26

[已解决]代码错误

[复制链接]
发表于 2020-9-21 12:56:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. #include<stdio.h>
  2. int main()
  3. {
  4.     int a,b,c,max;
  5.     scanf("%d %d %d", &a,&b,&c); // 这里是双引号
  6.     if (a > b && a > c)
  7.     {
  8.         max = a;
  9.     }
  10.     else {
  11.         if (b > c) {
  12.             max = b;
  13.         }
  14.         else {
  15.             max = c;
  16.         }
  17.     }
  18.     printf("%d", max);
  19.     return 0;
  20. }
复制代码
最佳答案
2020-9-25 19:35:04
  1. #include <stdio.h>

  2. int main(void){
  3.     int x;
  4.     double grade;
  5.     scanf("%d %lf",&x,&grade);
  6.     switch((int)(1.0*grade/x*10)){
  7.         case 0:
  8.         case 1:
  9.             printf("E");
  10.             break;
  11.         case 2:
  12.         case 3:
  13.             printf("D");
  14.             break;
  15.         case 4:
  16.         case 5:
  17.             printf("C");
  18.             break;
  19.         case 6:
  20.         case 7:
  21.             printf("B");
  22.             break;
  23.         default :
  24.             printf("A");
  25.     }
  26.     return 0;
  27. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-9-21 12:57:16 | 显示全部楼层
发错代码了,再来一次
  1. #include<stdio.h>
  2. int main()
  3. {
  4.   int a,b;
  5.   scanf("%d %d",&a,&b);
  6.   switch{
  7.     case (b>=a*0.8):
  8.   printf("A");
  9.       case(b<0.8*a&&b>=0.6*a):
  10.       printf("B");
  11.       
  12.       case(b<0.6*a&&b>=0.4*a):
  13.       printf("C");
  14. case(b<0.4*a&&b>=0.2*a):
  15.       printf("D");
  16.       
  17.   case(b<0.2a&&b>=0):
  18.       printf("E");
  19. return 0;
  20.   
  21. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-21 13:10:48 | 显示全部楼层
我又改正了一次,不知道为啥错
  1. #include<stdio.h>
  2. int main()
  3. {
  4.   int a,b;
  5.   scanf("%d %d",&a,&b);
  6.   switch(b){
  7.     case (b>=a*0.8):
  8.   printf("A");
  9.       break;
  10.       case(b<0.8*a&&b>=0.6*a):
  11.       printf("B");
  12.       break;
  13.       
  14.       case(b<0.6*a&&b>=0.4*a):
  15.       printf("C");
  16.       break;
  17. case(b<0.4*a&&b>=0.2*a):
  18.       printf("D");
  19.       break;
  20.       
  21.   case(b<0.2a&&b>=0):
  22.       printf("E");
  23.       break;
  24.   }
  25. return 0;
  26. }

  27.    
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-21 13:15:36 | 显示全部楼层
swicth 的语法错误,不能这么用
case 后面是switch()括号中表达式/变量可能出现的值,而不是条件表达式。
条件表达式的值要么是1要么是0
switch(表达式/变量)
{
    case  值1 :
         。。。
         break;
    case  值2 :
         。。。
         break;
    case  值3 :
         。。。
         break;
    case  值4 :
         。。。
         break;
    case  值5 :
         。。。
         break;
    default :
}
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-21 14:14:42 | 显示全部楼层
4399king 发表于 2020-9-21 13:10
我又改正了一次,不知道为啥错

switch() 函数里的 b 是个不确定的数,不便使用此函数,使用 if ... else if ... else 的语句比较合适;

switch() 函数是一个开关函数,对应的是 1、2、3、4、5、6 ... 各种情况;

case 若是多个语句组成的语句体,需要用花括号括起来,之后,用 break 中断本次选择,若没有 break 语句,程序将按顺序往下执行后面的各条语句。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-21 15:22:27 | 显示全部楼层
改成条件语句就可以了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-22 05:54:28 | 显示全部楼层
jhanker 发表于 2020-9-21 15:22
改成条件语句就可以了

题目要求用switch
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-22 09:21:44 | 显示全部楼层

看看题目
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-22 09:39:59 | 显示全部楼层

在我的相册里
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-22 09:49:52 | 显示全部楼层
本帖最后由 4399king 于 2020-9-22 10:01 编辑

#include<stdio.h>
int main()
{
&#160; int a,b,c;
&#160; scanf("%d %d",&a,&b);

&#160;&#160;&#160; if (b>=0&&b<0.2*a){
c=5;
}
&#160;
&#160;&#160;&#160;&#160;&#160;  else if(b<0.8*a&&b>=0.6*a){

c=2;}
&#160;&#160;&#160;&#160;&#160;
&#160;&#160;&#160;&#160;&#160;
&#160;&#160;&#160;&#160;&#160;  else if(b<0.6*a&&b>=0.4*a){
c=3;
}
else if(b<0.4*a&&b>=0.2*a){

c=4;
}
&#160;&#160;&#160;&#160;&#160;
&#160;&#160;&#160;&#160;&#160;
&#160; else{
c=1;
}
switch(c){
case 1:printf("A");break;
case 2:printf("B");break;
case 3:printf("C");break;
case 4:printf("D");break;
default:printf("E");break;
}
&#160;&#160;&#160;&#160;&#160;
return 0;
&#160;
}


把&#160删掉就是我的代码,可还是不行。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-22 09:53:59 | 显示全部楼层
xieglt 发表于 2020-9-21 13:15
swicth 的语法错误,不能这么用
case 后面是switch()括号中表达式/变量可能出现的值,而不是条件表达式。
...

正解+1
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-22 10:16:33 | 显示全部楼层
本帖最后由 xieglt 于 2020-9-22 10:22 编辑
  1. #include<stdio.h>

  2. int main()
  3. {
  4.         int a;
  5.         double b;
  6.         long flag = 0;
  7.        
  8.         scanf("%d,%lf",&a,&b);

  9.         if(a == 0)
  10.         {
  11.                 printf("input error!\n");
  12.                 return -1;
  13.         }

  14.         b /= a;
  15.        
  16.         flag = (long)(b * 10);
  17.        
  18.         switch(flag)
  19.         {
  20.                 case 10 :
  21.                 case 9 :
  22.                 case 8 :
  23.                         printf("A");
  24.                         break;
  25.                 case 7 :
  26.                 case 6 :
  27.                         printf("B");
  28.                         break;
  29.                 case 5 :
  30.                 case 4 :
  31.                         printf("C");
  32.                         break;
  33.                 case 3 :
  34.                 case 2 :
  35.                         printf("D");
  36.                         break;
  37.                 case 1:
  38.                 case 0:
  39.                         printf("E");
  40.                         break;
  41.                 default :
  42.                        printf("Input error!\n");
  43.                
  44.         }

  45.         printf("\n");
  46.         return 0;
  47. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-22 12:36:53 | 显示全部楼层

大神,题目在我相册里,您能看看不,您的代码小弟有点看不懂
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-22 12:39:00 | 显示全部楼层

比如b/=a没看懂,还有b*10并强制转换成long不懂
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-22 13:16:42 | 显示全部楼层
4399king 发表于 2020-9-22 12:39
比如b/=a没看懂,还有b*10并强制转换成long不懂

b/=a 等价于 b = b / a,就是说,将 b / a 的结果,再赋回给 b 这个变量;

(long)b*10 这是强制转换类型的做法,因为定义的 b 是 double 类型。类似的做还有:(int)b*10,(char)b*10 分别是强制转换为整型和字符型
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-22 13:43:09 | 显示全部楼层
4399king 发表于 2020-9-22 12:39
比如b/=a没看懂,还有b*10并强制转换成long不懂

假设输入100,95.5
那么 a = 100 , b = 95.5
b /= a 相当于 b = b/a 即 b = 95.5 / 100 = 0.955
flag = (long)(b * 10) 是把 b*10 强制转换为long 类型
b*10 =9.55,flag = (long)9.55 相当于去掉小数 即 flag = 9
这样就可以直接用switch 来根据flag的值做出相应操作了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-22 16:17:20 | 显示全部楼层
4399king 发表于 2020-9-22 12:36
大神,题目在我相册里,您能看看不,您的代码小弟有点看不懂

在你相册里,你得发出来大家才能看得到呀

工具.jpg
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-23 22:09:29 | 显示全部楼层

如果这个题目要求用 switch() 函数,那你的表述就是有问题的。能否将原题目展示出示出来,或告诉我们是哪里的题目,我们打开链接,前去验证
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-25 07:42:05 | 显示全部楼层
附加到附件

题目

题目
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-25 16:39:16 | 显示全部楼层
风过无痕1989 发表于 2020-9-22 16:17
在你相册里,你得发出来大家才能看得到呀

好像是等级不够发不了图片吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-1 05:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表