代码错误
#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;
} 发错代码了,再来一次#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;
} 我又改正了一次,不知道为啥错#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;
}
swicth 的语法错误,不能这么用
case 后面是switch()括号中表达式/变量可能出现的值,而不是条件表达式。
条件表达式的值要么是1要么是0
switch(表达式/变量)
{
case值1 :
。。。
break;
case值2 :
。。。
break;
case值3 :
。。。
break;
case值4 :
。。。
break;
case值5 :
。。。
break;
default :
} 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
改成条件语句就可以了
题目要求用switch 4399king 发表于 2020-9-22 05:54
题目要求用switch
看看题目 xieglt 发表于 2020-9-22 09:21
看看题目
在我的相册里 本帖最后由 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;
}
把 删掉就是我的代码,可还是不行。 xieglt 发表于 2020-9-21 13:15
swicth 的语法错误,不能这么用
case 后面是switch()括号中表达式/变量可能出现的值,而不是条件表达式。
...
正解+1 本帖最后由 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;
}
xieglt 发表于 2020-9-22 10:16
大神,题目在我相册里,您能看看不,您的代码小弟有点看不懂 xieglt 发表于 2020-9-22 10:16
比如b/=a没看懂,还有b*10并强制转换成long不懂 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 分别是强制转换为整型和字符型 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的值做出相应操作了。 4399king 发表于 2020-9-22 12:36
大神,题目在我相册里,您能看看不,您的代码小弟有点看不懂
在你相册里,你得发出来大家才能看得到呀
4399king 发表于 2020-9-22 05:54
题目要求用switch
如果这个题目要求用 switch() 函数,那你的表述就是有问题的。能否将原题目展示出示出来,或告诉我们是哪里的题目,我们打开链接,前去验证 附加到附件 风过无痕1989 发表于 2020-9-22 16:17
在你相册里,你得发出来大家才能看得到呀
好像是等级不够发不了图片吧
页:
[1]
2