4399king 发表于 2020-9-21 12:56:36

代码错误

#include<stdio.h>
int main()
{
    int a,b,c,max;
    scanf("%d %d %d", &a,&b,&c); // 这里是双引号
    if (a > b && a > c)
    {
      max = a;
    }
    else {
      if (b > c) {
            max = b;
      }
      else {
            max = c;
      }
    }
    printf("%d", max);
    return 0;
}

4399king 发表于 2020-9-21 12:57:16

发错代码了,再来一次#include<stdio.h>
int main()
{
int a,b;
scanf("%d %d",&a,&b);
switch{
    case (b>=a*0.8):
printf("A");
      case(b<0.8*a&&b>=0.6*a):
      printf("B");
      
      case(b<0.6*a&&b>=0.4*a):
      printf("C");
case(b<0.4*a&&b>=0.2*a):
      printf("D");
      
case(b<0.2a&&b>=0):
      printf("E");
return 0;

}

4399king 发表于 2020-9-21 13:10:48

我又改正了一次,不知道为啥错#include<stdio.h>
int main()
{
int a,b;
scanf("%d %d",&a,&b);
switch(b){
    case (b>=a*0.8):
printf("A");
      break;
      case(b<0.8*a&&b>=0.6*a):
      printf("B");
      break;
      
      case(b<0.6*a&&b>=0.4*a):
      printf("C");
      break;
case(b<0.4*a&&b>=0.2*a):
      printf("D");
      break;
      
case(b<0.2a&&b>=0):
      printf("E");
      break;
}
return 0;
}

   

xieglt 发表于 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 :
}

乐乐学编程 发表于 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 语句,程序将按顺序往下执行后面的各条语句。

jhanker 发表于 2020-9-21 15:22:27

改成条件语句就可以了

4399king 发表于 2020-9-22 05:54:28

jhanker 发表于 2020-9-21 15:22
改成条件语句就可以了

题目要求用switch

xieglt 发表于 2020-9-22 09:21:44

4399king 发表于 2020-9-22 05:54
题目要求用switch

看看题目

4399king 发表于 2020-9-22 09:39:59

xieglt 发表于 2020-9-22 09:21
看看题目

在我的相册里

4399king 发表于 2020-9-22 09:49:52

本帖最后由 4399king 于 2020-9-22 10:01 编辑

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

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

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

c=4;
}
     
     
  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;
}
     
return 0;
 
}


把&#160删掉就是我的代码,可还是不行。

wsq999 发表于 2020-9-22 09:53:59

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

正解+1

xieglt 发表于 2020-9-22 10:16:33

本帖最后由 xieglt 于 2020-9-22 10:22 编辑

#include<stdio.h>

int main()
{
        int a;
        double b;
        long flag = 0;
       
        scanf("%d,%lf",&a,&b);

        if(a == 0)
        {
                printf("input error!\n");
                return -1;
        }

        b /= a;
       
        flag = (long)(b * 10);
       
        switch(flag)
        {
                case 10 :
                case 9 :
                case 8 :
                        printf("A");
                        break;
                case 7 :
                case 6 :
                        printf("B");
                        break;
                case 5 :
                case 4 :
                        printf("C");
                        break;
                case 3 :
                case 2 :
                        printf("D");
                        break;
                case 1:
                case 0:
                        printf("E");
                        break;
                default :
                     printf("Input error!\n");
               
        }

        printf("\n");
        return 0;
}

4399king 发表于 2020-9-22 12:36:53

xieglt 发表于 2020-9-22 10:16


大神,题目在我相册里,您能看看不,您的代码小弟有点看不懂

4399king 发表于 2020-9-22 12:39:00

xieglt 发表于 2020-9-22 10:16


比如b/=a没看懂,还有b*10并强制转换成long不懂

乐乐学编程 发表于 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 分别是强制转换为整型和字符型

xieglt 发表于 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的值做出相应操作了。

风过无痕1989 发表于 2020-9-22 16:17:20

4399king 发表于 2020-9-22 12:36
大神,题目在我相册里,您能看看不,您的代码小弟有点看不懂

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

乐乐学编程 发表于 2020-9-23 22:09:29

4399king 发表于 2020-9-22 05:54
题目要求用switch

如果这个题目要求用 switch() 函数,那你的表述就是有问题的。能否将原题目展示出示出来,或告诉我们是哪里的题目,我们打开链接,前去验证

4399king 发表于 2020-9-25 07:42:05

附加到附件

wsq999 发表于 2020-9-25 16:39:16

风过无痕1989 发表于 2020-9-22 16:17
在你相册里,你得发出来大家才能看得到呀

好像是等级不够发不了图片吧
页: [1] 2
查看完整版本: 代码错误