为什么当赋值a为123时会显示不了?过后赋值12345会显示a=123?
#include <stdio.h>void main()
{
int a,b;
scanf("%5d%",&a);/*为什么当赋值a为123时会显示不了?过后赋值12345会显示a=123?*/
printf("a=%d",a);
} 如何删帖啊?原来是我搞错了!不好意思各位
删不了的,只能设置一个最佳答案。 王尧 发表于 2019-4-26 19:37
删不了的,只能设置一个最佳答案。
好的谢谢你!
还有这位同学晚上好!刚刚下班回家思考了一下,打出switch语句的运费问题
我想请教一下各位同学,我打得这个switch语句能不能再简短点呢?我感
觉我写的语句都很复杂!
一下是不才的我写的程序:
#include <stdio.h>
void main()
{
double p,w,s,f;
printf("Please input three number from keyboard:\n");
scanf("%lf%lf%lf",&p,&w,&s);
switch(s<250?1:0)
{
case 1:
{
f=p*w*s;
printf("%lf",f);
break;
}
case 0:
{
switch(s<500?3:2)
{
case 3:
{
f=p*w*s*0.98;
printf("%lf",f);
break;
}
case 2:
{
switch(s<1000?5:4)
{
case 5:
{
f=p*w*s*0.95;
printf("%lf",f);
break;
}
case 4:
{
switch(s<2000?7:6)
{
case 7:
{
f=p*w*s*0.92;
printf("%lf",f);
break;
}
case 6:
{
switch(s<3000?9:8)
{
case 9:
{
f=p*w*s*0.90;
printf("%lf",f);
break;
}
case 8:
{
f=p*w*s*0.85;
printf("%lf",f);
break;
}
}
}
}
}
}
}
}
}
}
} 1747128424 发表于 2019-5-14 19:38
好的谢谢你!
还有这位同学晚上好!刚刚下班回家思考了一下,打出switch语句的运费问题
我想请教一下各 ...
switch复杂了就用if呗 1747128424 发表于 2019-5-14 19:38
好的谢谢你!
还有这位同学晚上好!刚刚下班回家思考了一下,打出switch语句的运费问题
我想请教一下各 ...
#include <stdio.h>
void main()
{
double p,w,d,s;
printf("请输入基本运费!\n");
scanf("%lf",&p);
printf("请输入货物重量!\n");
scanf("%lf",&w);
printf("请输入距离!\n");
scanf("%lf",&s);
printf("运费:%1.2lf,货物重量:%1.2lf,距离:%1.2lf",p,w,s);
d=(0<s && 250>s)?0:0;
d=(250<=s && 500>s)?0.02:d;
d=(500<=s && 1000>s)?0.05:d;
d=(1000<=s && 2000>s)?0.08:d;
d=(2000<=s && 3000>s)?0.1:d;
d=(3000<=s)?0.15:d;
printf("折扣是:%1.1lf折!\n总运费是:%1.2lf\n",(1-d)*10,p*w*s*(1-d));
} 王尧 发表于 2019-5-15 22:04
switch复杂了就用if呗
好的!我在尝试 长路漫漫唯C作伴 发表于 2019-5-16 15:23
#include
void main()
同学晚上好!这个d=(0<s && 250>s)?0:0;的是函数case吗?这个d=的不太懂!没尝试过
1747128424 发表于 2019-5-21 20:23
同学晚上好!这个d=(0s)?0:0;的是函数case吗?这个d=的不太懂!没尝试过
这是一个判断语句。当()内结果为真,将 :前的值赋值给d; 当()内结果为假,将 :后的值赋值给d。 王尧 发表于 2019-5-21 21:47
这是一个判断语句。当()内结果为真,将 :前的值赋值给d; 当()内结果为假,将 :后的值赋值给d ...
好的!谢谢老师的解答,我还没学到后面的函数,emmm在学当中,甚是丢人{:10_269:}
本帖最后由 yennyfang 于 2019-5-23 19:59 编辑
其实你这种有范围顺序性规则条件,可以把低到高反过来
d= s>=3000 ?0.15 : s>=2000 ? 0.1 : s>=1000 ? 0.08 : s>=500 ? 0.05 : s>=250 ? 0.02 : s>=0 ? 0 : 0; //最后这里其实直接0都不需要s>=0,因为只要小于250都是0,
/*
d = (
s >= 3000 ? 0.15 :\
s >= 2000 ? 0.1 :\
s >= 1000 ? 0.08 :\
s >= 500 ? 0.05 :\
s >= 250 ? 0.02 :\
s >= 0 ? 0 : 0);
键入一定的换行符增加代码的可阅读性*/ yennyfang 发表于 2019-5-23 19:52
其实你这种有范围顺序性规则条件,可以把低到高反过来
d= s>=3000 ?0.15 : s>=2000 ? 0.1 : s>=1000 ? 0. ...
好的!谢谢同学的指导,我还没学到那么深入呢!还在学,学士疏漏不好意思,谢谢您 1747128424 发表于 2019-5-21 20:23
同学晚上好!这个d=(0s)?0:0;的是函数case吗?这个d=的不太懂!没尝试过
三元运算符,等价于
if(0<s && 250>s) d=0;
else d=0
页:
[1]