用switch有一已知二次函数y ax,当y= -1 (x<0);y=0 (x=0);y=1(x<0),编一个程序,输入一

函数:y=x (-5&x&0) =x-1 (x=0) =x+1 (0&x&10) 编写一c语言程序,用switch语句,要求输入x,输出y的值。_百度知道
函数:y=x (-5&x&0) =x-1 (x=0) =x+1 (0&x&10) 编写一c语言程序,用switch语句,要求输入x,输出y的值。
提问者采纳
&lt,x&lt,&quot,
y = x,&lt,
break,x=&quot,&lt,default,case 5,&lt,&lt,&quot,&lt,case 3,y&lt,&lt,&lt,&lt,&quot,&lt,endl,
break,,&lt,&lt,case 0,
y == x+1,cout&lt,y&lt,
y = x-1,&lt,,y==&quot,&lt,&lt,&quot,x&lt,y==&quot,&quot,&lt,,&lt,&lt,&quot,&lt,&lt,&lt,case 7,
cout&lt, case -3,case 1,x=&quot,x=&quot,x&lt,x=&quot,case 4,,case 8,&quot,&lt,y&lt,&lt,endl,&lt,cout&lt,&lt,switch(x){ case -4,
break,x&lt,&lt,}其实想这种条件判断还是用if语句判断更方便些。,case 9, case -2,y&lt,case 6,&quot,&lt,y==&quot,case -1,endl,case 2,endl,
cout&lt,y==&quot,&lt,
谢谢,可是我加上头文件后调试时还是出现了错误,不知道哪里不对了
是不是没有?没有具体错误不知道错在哪里啊。另外那个X和Y的值可以是小数吗?如果可以是小数的话那么就不能用switch语句
提问者评价
恩,可能这个题目就没有出好,没有考虑到小数的问题。。。还是谢谢你
其他类似问题
函数的相关知识
按默认排序
其他2条回答
楼上的可以吧switch里的 只能是整形 所以比较麻烦,
函数没看太明白,给点标点符号吧
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁y=x (-5&x&0) y=x-1(x=0)
y=x+1 (0&x&10)_百度知道
y=x (-5&x&0) y=x-1(x=0)
y=x+1 (0&x&10)
用以下语句写(1)用嵌套的if语句(2)if-else语句(4)switch语句(3)不嵌套的if语句谢谢各位给我认真解答。在下感激不尽
先写个:不嵌套的if语句 int x,y; printf(&请输入数x: &); scanf(&%d&,&x);
if(-5&x&&x&0)y=x;
if(x==0)y=x-1;
if(x&0&&x&10)y=x+1;
printf(&你输入的是 %d,y的值为 %d&,x,y);
提问者采纳
1. int x,y; printf(&请输入数x: &); scanf(&%d&,&x); if(-5&x&&x&0)y=x; else
if(x==0)y=x-1;
else y=x+1;printf(&你输入的是 %d,y的值为 %d&,x,y); 2.#include&stdio.h&void main(){
printf(&输入一个数.&);
scanf(&%d&,&x);
if (-5&x&0) y=x;
else if (x=0) y=x-1;
else if (0&x&10) y=x+1;
printf (&你输入的是%d\n&,x);
printf (&y的值为%d\n&,y); }4.{int n,x,y;scanf(&%d&,&x);{ if(-5&x&0) n=1; else if(x=0) n=2; else if(0&x&10) n=3;}switch(n){
case'1': y=x;
case'2': y=x-1;
case'3': y=x+1;}printf(&你输入的是 %d,y的值为 %d&,x,y);}
提问者评价
谢谢。 感觉不足的是用嵌套的if语句中的 最后else没有关系表达式范围了,好像又只能加if表达式定范围
其他类似问题
按默认排序
其他1条回答
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁用C语言中的switch-case语句编写y=x(x&1),y=2x-1(1&=x&10),y=3x-11(x&=10)函数程序输入x的值,输出y的值。_百度知道
用C语言中的switch-case语句编写y=x(x&1),y=2x-1(1&=x&10),y=3x-11(x&=10)函数程序输入x的值,输出y的值。
提问者采纳
因为switch (x)
圆亥茧纪饧慌鉴苇降俩中的x只能是整型(包括字符)或枚举型,而输入的x可能为小数,所以要整形k转换一下;因为只有3种情况所以用3个判断就行了;代码如下: float y=0.0;
printf(&请输入一个浮点数字!\n&); scanf(&%f&,&x);
if(x&1)k=0; else if(x&=1&&x&10)k=1; else if(x&10) k=2; switch(k) { case 0:y=x; case 1:y=2*x-1; case 2:y=3*x-11; } printf(&y=%f&,y);
提问者评价
其他类似问题
函数的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁C语言编程题 -5&x&0, y=x; x=0, y=x-1; 0&x&10,y=x+1; 要求使用switch语句。_百度知道
C语言编程题 -5&x&0, y=x; x=0, y=x-1; 0&x&10,y=x+1; 要求使用switch语句。
就是个分段函数求解
提问者采纳
switch语句对应离散参数,对此例并不适用,除非你的X限定为了整型,建议用if else if else控制。像那个楼上的,基本上错误一大堆······#include&stdio.h&int main(void){
float x,y;
scanf(&%f&,x);
if(x&-5&&x&0)
printf(&y=%.2f\n&,y);
else if(x==0)
printf(&y=%.2f\n&,y);
else if(x&0&&x&10)
printf(&y=%2f\n&,y);
printf(&error date\n&);}}
提问者评价
其他类似问题
c语言编程的相关知识
其他5条回答
switch(x){
#include&stdio.h&int main(){
scanf(&%d&,&x);
swich('x')
case&x&-5&&x&0&:y=x:
case&x=0&:y=x:
case&x&0&&x&10&:y=x+1:
default:printf(&errior\n&):
printf(&y=%d\n&,y);
return 0;}内部存在一些符号错误,自己改下。
#include&stdio.h&void main(){ int x,y; scanf(&%d&,&x); switch(x) { case -4: case -3://都执行y=x case -2: case -1:
y=x; case 0:
y=x-1; case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9:
y=x+1; } printf(&y=%d&,y);}
把题目说清楚下,才能给你好的代码
#include&stdio.h&/* -5&x&0, y=x; x=0, y=x-1; 0&x&10,y=x+1; */void main(){
float x,y; scanf(&%f&,&x); if(x&-5&&x&0)
else if(x==0)
else if(x&0&&x&10)
printf(&错误\n&);
case 1:y=x;printf(&y=%.1f\n&,y);
case 2:y=x-1;printf(&y=%.1f\n&,y);
case 3:y=x+1;printf(&y=%.1f\n&,y);
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁跪 求计算机二级C语言公共基础部分的知识讲解(最好配习题),以及重庆市09,10和11年计算机二级C语言真题_百度知道
跪 求计算机二级C语言公共基础部分的知识讲解(最好配习题),以及重庆市09,10和11年计算机二级C语言真题
提问者采纳
无论是加减乘除还是大于小于,都需要用到运算符,在C语言中的运算符和我们平时用的基本上都差不多。运算符包括赋值运算符、算术运算符、逻辑运算符、位逻辑运算符、位移运算符、关系运算符、自增自减运算符。大多数运算符都是二目运算符,即运算符位于两个表达式之间。单目运算符的意思是运算符作用于单个表达式。(具体什么是表达式下一节再说)一、赋值运算符赋值语句的作用是把某个常量或变量或表达式的值赋值给另一个变量。符号为‘=’。这里并不是等于的意思,只是赋值,等于用‘==’表示。注意:赋值语句左边的变量在程序的其他地方必须要声明。得已赋值的变量我们称为左值,因为它们出现在赋值语句的左边;产生值的表达式我们称为右值,因为她它们出现在赋值语句的右边。常数只能作为右值。例如:count=5;total1=total2=0;第一个赋值语句大家都能理解。 第二个赋值语句的意思是把0同时赋值给两个变量。这是因为赋值语句是从右向左运算的,也就是说从右端开始计算。这样它先total2=0;然后total1=total2;那么我们这样行不行呢?(total1=total2)=0;这样是不可以的,因为先要算括号里面的,这时total1=total2是一个表达式,而赋值语句的左边是不允许表达式存在的。二、算术运算符在C语言中有两个单目和五个双目运算符。符号 功能+ 单目正- 单目负* 乘法/ 除法% 取模+ 加法- 减法下面是一些赋值语句的例子, 在赋值运算符右侧的表达式中就使用了上面的算术运算符:Area=Height*Wnum=num1+num2/num3-num4;运算符也有个运算顺序问题,先算乘除再算加减。单目正和单目负最先运算。取模运算符(%)用于计算两个整数相除所得的余数。例如:a=7%4;最终a的结果是3,因为7%4的余数是3。那么有人要问了,我要想求它们的商怎么办呢?b=7/4;这样b就是它们的商了,应该是1。也许有人就不明白了,7/4应该是1.75,怎么会是1呢?这里需要说明的是,当两个整数相除时,所得到的结果仍然是整数,没有小数部分。要想也得到小数部分,可以这样写7.0/4或者7/4.0,也即把其中一个数变为非整数。那么怎样由一个实数得到它的整数部分呢?这就需要用强制类型转换了。例如:a=(int) (7.0/4);因为7.0/4的值为1.75,如果在前面加上(int)就表示把结果强制转换成整型,这就得到了1。那么思考一下a=(float) (7/4);最终a的结果是多少?单目减运算符相当于取相反值,若是正值就变为负值,若是负数就变为正值。单目加运算符没有意义,纯粹是和单目减构成一对用的。三、逻辑运算符逻辑运算符是根据表达式的值来返回真值或是假值。其实在C语言中没有所谓的真值和假值,只是认为非0为真值,0为假值。符号 功能&& 逻辑与|| 逻辑或! 逻辑非例如:5!3;0||-2&&5;!4;当表达式进行&&运算时,只要有一个为假,总的表达式就为假,只有当所有都为真时,总的式子才为真。当表达式进行||运算时,只要有一个为真,总的值就为真,只有当所有的都为假时,总的式子才为假。逻辑非(!)运算是把相应的变量数据转换为相应的真/假值。若原先为假,则逻辑非以后为真,若原先为真,则逻辑非以后为假。还有一点很重要,当一个逻辑表达式的后一部分的取值不会影响整个表达式的值时,后一部分就不会进行运算了。例如:a=2,b=1;a||b-1;因为a=2,为真值,所以不管b-1是不是真值,总的表达式一定为真值,这时后面的表达式就不会再计算了。四、关系运算符关系运算符是对两个表达式进行比较,返回一个真/假值。符号 功能& 大于& 小于&= 大于等于&= 小于等于== 等于!= 不等于这些运算符大家都能明白,主要问题就是等于==和赋值=的区别了。一些刚开始学习C语言的人总是对这两个运算符弄不明白,经常在一些简单问题上出错,自己检查时还找不出来。看下面的代码:if(Amount=123) ……很多新人都理解为如果Amount等于123,就怎么样。其实这行代码的意思是先赋值Amount=123,然后判断这个表达式是不是真值,因为结果为123,是真值,那么就做后面的。如果想让当Amount等于123才运行时,应该if(Amount==123) ……五、自增自减运算符这是一类特殊的运算符,自增运算符++和自减运算符--对变量的操作结果是增加1和减少1。例如:--CCouter--;++AAmount++;看这些例子里,运算符在前面还是在后面对本身的影响都是一样的,都是加1或者减1,但是当把他们作为其他表达式的一部分,两者就有区别了。运算符放在变量前面,那么在运算之前,变量先完成自增或自减运算;如果运算符放在后面,那么自增自减运算是在变量参加表达式的运算后再运算。这样讲可能不太清楚,看下面的例子:num1=4;num2=8;a=++num1;b=num2++;a=++num1;这总的来看是一个赋值,把++num1的值赋给a,因为自增运算符在变量的前面,所以num1先自增加1变为5,然后赋值给a,最终a也为5。b=num2++;这是把num2++的值赋给b,因为自增运算符在变量的后面,所以先把num2赋值给b,b应该为8,然后num2自增加1变为9。那么如果出现这样的情况我们怎么处理呢?c=num1+++num2;到底是c=(num1++)+num2;还是c=num1+(++num2);这要根据编译器来决定,不同的编译器可能有不同的结果。所以我们在以后的编程当中,应该尽量避免出现上面复杂的情况。六、复合赋值运算符在赋值运算符当中,还有一类C/C++独有的复合赋值运算符。它们实际上是一种缩写形式,使得对变量的改变更为简洁。Total=Total+3;乍一看这行代码,似乎有问题,这是不可能成立的。其实还是老样子,'='是赋值不是等于。它的意思是本身的值加3,然后在赋值给本身。为了简化,上面的代码也可以写成:Total+=3;复合赋值运算符有下列这些:符号 功能+= 加法赋值-= 减法赋值*= 乘法赋值/= 除法赋值%= 模运算赋值&&= 左移赋值&&= 右移赋值&= 位逻辑与赋值|= 位逻辑或赋值^= 位逻辑异或赋值上面的十个复合赋值运算符中,后面五个我们到以后位运算时再说明。 那么看了上面的复合赋值运算符,有人就会问,到底Total=Total+3;与Total+=3;有没有区别?答案是有的,对于A=A+1,表达式A被计算了两次,对于复合运算符A+=1,表达式A仅计算了一次。一般的来说,这种区别对于程序的运行没有多大影响,但是当表达式作为函数的返回值时,函数就被调用了两次(以后再说明),而且如果使用普通的赋值运算符,也会加大程序的开销,使效率降低。七、条件运算符条件运算符(?:)是C语言中唯一的一个三目运算符,它是对第一个表达式作真/假检测,然后根据结果返回两外两个表达式中的一个。&表达式1&?&表达式2&:&表达式3&在运算中,首先对第一个表达式进行检验,如果为真,则返回表达式2的值;如果为假,则返回表达式3的值。例如:a=(b&0)?b:-b;当b&0时,a=b;当b不大于0时,a=-b;这就是条件表达式。其实上面的意思就是把b的绝对值赋值给a。八、逗号运算符在C语言中,多个表达式可以用逗号分开,其中用逗号分开的表达式的值分别结算,但整个表达式的值是最后一个表达式的值。假设b=2,c=7,d=5,a1=(++b,c--,d+3);a2=++b,c--,d+3;对于第一行代码,有三个表达式,用逗号分开,所以最终的值应该是最后一个表达式的值,也就是d+3,为8,所以a=8。对于第二行代码,那么也是有三个表达式,这时的三个表达式为a2=++b、c--、d+3,(这是因为赋值运算符比逗号运算符优先级高)所以最终表达式的值虽然也为8,但a2=3。还有其他的如位逻辑运算符,位移运算符等等,我们等到讲位运算时再说明。九、优先级和结合性 从上面的逗号运算符那个例子可以看出,这些运算符计算时都有一定的顺序,就好象先要算乘除后算加减一样。优先级和结合性是运算符两个重要的特性,结合性又称为计算顺序,它决定组成表达式的各个部分是否参与计算以及什么时候计算。下面是C语言中所使用的运算符的优先级和结合性:优先级 运算符 结合性(最高) () [] -& . 自左向右! ~ ++ -- + - * & sizeof 自右向左* / % 自左向右+ - 自左向右&& && 自左向右& &= & &= 自左向右== != 自左向右& 自左向右^ 自左向右| 自左向右&& 自左向右|| 自左向右?: 自右向左= += -= *= /= %= &= ^= |= &&= &&= 自右向左(最低) , 自左向右在该表中,还有一些运算符我们没有介绍,如指针运算符、sizeof运算符、数组运算符[]等等,这些在以后的学习中会陆续说明的。一个表达式的返回值都可以用来判断真假,除非没有任何返回值的void型和返回无法判断真假的结构。当表达式的值不等于0时,它就是“真”,否则就是假。一样个表达式可以包含其他表达式和运算符,并且基于整个表达式的运算结果可以得到一个真/假的条件值。因此,当一个表达式在程序中被用于检验其真/假的值时,就称为一个条件。一、if语句if(表达式) 语句1;如果表达式的值为非0,则执行语句1,否则跳过语句继续执行下面的语句。如果语句1有多于一条语句要执行时, 必须使用{和} 把这些语句包括在其中, 此时条件语句形式为: if(表达式){语句体1;}例如:if(x&=0) y=x;if(a||b&&c) {z=a+b;c+=z;}二、if--else语句除了可以指定在条件为真时执行某些语句外,还可以在条件为假时执行另外一段代码。在C语句中利用else语句来达到这个木的。if(表达式) 语句1;else 语句2;同样,当语句1或语句2是多于一个语句时,需要用{}把语句括起来。例如:if(x&=0) y=x;else y=-x;三、if--else if--else结构。if(表达式1) 语句1; else if(表达式2) 语句2; else if(表达式3) 语句3; . . . else 语句n; 这种结构是从上到下逐个对条件进行判断,一旦发现条件满点足就执行与它有关的语句, 并跳过其它剩余阶梯;若没有一个条件满足,则执行最后一个else 语句n。最后这个else常起着缺省条件的作用。同样,如果每一个条件中有多于一条语句要执行时,必须使用{和}把这些语句包括在其中。条件语句可以嵌套,这种情况经常碰到,但条件嵌套语句容易出错,其原因主要是不知道哪个if对应哪个else。例如: if(x&20||x&-10) if(y&=100&&y&x) printf(Good); else printf(Bad); 对于上述情况, Turbo C2.0规定: else语句与最近的一个if语句匹配, 上例中的else与if(y&=100&&y&x)相匹配。为了使else与if(x&20||x&-10)相匹配, 必须用花括号。如下所示: if(x&20||x&-10){ if(y&=100&&y&x) printf(Good); } else printf(Bad); 下面举几个例子:1.输入一个数,如果大于0,输出如果是负数,输出如果正好是0,则输出zero。main(){scanf(%f,&f);if(num&0)printf(plus\n);else if(num&0)printf(negative\n);elseprintf(zero\n); }先定义两个变量,然后输入一个数,然后判断这个数的范围,输出对应的字符串。2.输入一个数x,输出y。其中y是x的绝对值。main(){float x,y;scanf(%f,&x);if(x&=0) y=x;else y=-x;printf(%f\n,y);}程序比较简单,这儿就不分析了。其实Trubo C 2.0把一些常用的功能都写好了,我们只需要使用就可。例如求绝对值的功能在C的库里面就有。看下面的:#include math.hmain(){float x,y;scanf(%f,&x);y=fabs(x); /*求x的绝对值,然后赋值给y*/printf(%f\n,y);}这个程序和上面的程序完成的功能是一模一样的,都是求绝对值。可以看出,用下面这个方法比上面就要好一些。由于fabs()是一个函数,系统自带的,所以在使用它的时候,我们必须把它所在的库文件math.h包含都程序中,即程序最前面一行。类似的还有求开方sqrt(),求指数幂exp()等等,这些与数学方面有关的函数都在math.h里面。具体哪些有哪些没有,在什么库里面,可以查看一些手册。3.输入x,输出y,x和y满足关系:x&-5 y=x;-5&=x&1 y=2*x+5;1&=x&4 y=x+6;x&=4 y=3*x-2;程序如下:main(){float x,y;scanf(%f,&x);if(x&-5)y=x;else if(-5&=x&&x&1)y=2*x+5;else if(1&=x&&x&4)y=x+6;elsey=3*x-2;printf(%f\n,y);}这里要说明两点:(1).-5&=x&&x&1不能写成-5&=x&1;1&=x&&x&4也不能写成1&=x&4;在C语言中,不能认识连续不等式。(2).y=2*x+5不能写成y=2x+5;y=3*x-2也不能写成y=3x-2;这与我们平时所写的方法不一样。4.输入三个数x,y,z,然后按从大到小输出。main(){float x,y,z;scanf(%f%f%f,&x,&y,&z);if(x&=y&&x&=z){printf(%f\t,x);if(y&=z) printf(%f\t%f\n,y,z);else printf(%f\t%f\n,z,y);}else if(y&=x&&y&=z){printf(%f\t,y);if(x&=z) printf(%f\t%f\n,x,z);else printf(%f\t%f\n,z,x);}else{printf(%f\t,z);if(x&=y) printf(%f\t%f\n,x,y);else printf(%f\t%f\n,y,x);}}说明:这是一个典型的if语句嵌套结构,如果不使用括号,那么if和else的对应关系就乱了。四、switch--case语句在编写程序时, 经常会碰到按不同情况分转的多路问题, 这时可用嵌套if -else-if语句来实现, 但if-else-if语句使用不方便, 并且容易出错。对这种情况, Turbo C2.0提供了一个开关语句。开关语句格式为: switch(变量) { case 常量1: 语句1或空; case 常量2: 语句2或空; . . . case 常量n: 语句n或空; default: 语句n+1或空; } 执行switch开关语句时,将变量逐个与case后的常量进行比较,若与其中一个相等,则执行该常量下的语句,若不与任何一个常量相等,则执行default后面的语句。注意: 1.switch中变量可以是数值,也可以是字符,但必须是整数。2.可以省略一些case和default。3.每个case或default后的语句可以是语句体,但不需要使用{和}括起来。例如:main(){int x,y;scanf(%d,&x);witch(x){case 1:y=x+1; /*退出开关语句,遇到break才退出*/case 4:y=2*x+1;default:y=x--;}printf(%d\n,y);}从上面的例子可以看出,用开关语句编的程序一定可以用if语句做。那么在什么情况下需要用switch语句呢?一般在出现比较整的情况下或者能转化成比较整数的情况下使用。看下面的例子:例子:一个学生的成绩分成五等,超过90分的为'A',80-89的为'B',70-79为'C',60-69为'D',60分以下为'E'。现在输入一个学生的成绩,输出他的等级。(1).用if语句main(){scanf(%d,&num);if(num&=90) grade='A';else if(num&=80&&num&89) grade='B';else if(num&=70&&num&79) grade='C';else if(num&=60&&num&69) grade='D';else grade='E';printf(%c,grade);}(2).用switch语句main(){scanf(%d,&num);num/=10;switch(num){case 10:case 9:grade='A';case 8:grade='B';case 7:grade='C';case 6:grade='D';default:grade='E';}printf(%c,grade);}说明一点,并不是每个case里面有都语句,有时侯里面是空的,就好象这一题。switch语句执行的顺序是从第一case判断,如果正确就往下执行,直到break;如果不正确,就执行下一个case。所以在这里,当成绩是100分时,执行case 10:然后往下执行,grade='A';退出。想想看,这里为什么要用num/=10;?假设当程序中有浮点数时怎么办呢?
其他类似问题
计算机二级c语言的相关知识
等待您来回答
您可能关注的推广回答者:
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 ax bx 的文章

 

随机推荐