文章目录

题目描述:
计算函数值。如果x≥100或x<36,则输出y无定义的信息。
首先是整型变量的设置以及x的输入

int x,y
printf("请输入x:>");
scanf("%d",&x);

其次对输入的x进行判断
x≥100或x<36,或在c语言中用 “||”表示

if(x >= 100 || x < 36)
{printf("输入无效\n"):return ;
}

当我们输入的值在上述范围内时程序会直接跳出结束,我们可以用while循环来使程序一直运行。

while(!)
{printf("请输入x:>");scanf("%d",&x);if(x >= 100 || x < 36){printf("输入无效,请重新输入\n"):continue;}
}

当输入无效时continue跳出,重新进入循环,重新输入重新判断。
当输入有效x后,根据x进行相关函数的计算;有两种方法可以实现计算(if语句和switch语句)
方法一
if语句
根据输入的x进行判断,再进入相应的语句中

     if (x >= 81 && x < 100){y = x + 2;}if (x >= 64 && x < 81){y = 2 * x + 3;}if (x >= 49 && x < 64){y = 2 * x + 4;}if (x >= 36 && x < 49){y = 4 * x + 5;}

根据输入的x输出对应的y值

以下是运行过程的整个代码

#include<stdio.h>
int main()
{while (1){int x, y;printf("请输入x:>");scanf("%d", &x);if (x >= 100 || x < 36){printf("输入无效...\n");continue;}else{if (x >= 81 && x < 100){y = x + 2;}if (x >= 64 && x < 81){y = 2 * x + 3;}if (x >= 49 && x < 64){y = 2 * x + 4;}if (x >= 36 && x < 49){y = 4 * x + 5;}}printf("y=%d\n", y);break;}return 0;
}

不难发现用if分支实现求解过程很容易理解,但是连续使用if语句是整个代码看起来过于复杂,因此我们可以使用switch语句来简化上述过程。
方法二
switch语句
前面部分跟上述一样不同的是else语句后面,但是我们应如何得到case语句中的整形常量表达式

int t = (x >= 36) + (x >= 49) + (x >= 64) + (x >= 81);

当输入的x与判断条件匹配时,得到1,反之为0;
当81≤x<100时,t=1;
当64≤x<81时,t=2;
当49≤x<64时,t=3;
当36≤x<49时,t=4;
这种判断可以通过t的值得出case的整形常量表达式。
代码如下:

     int t = (x >= 36) + (x >= 49) + (x >= 64) + (x >= 81);switch (t){case 1:y = x + 2;break;case 2:y = 2 * x + 3;break;case 3:y = 2 * x + 4;break;case 4:y = 4 * x + 5;break;

运用switch解决了if语句的复杂
全部代码:

   #include<stdio.h>
int main()
{while (1){int x, y;printf("请输入x:>");scanf("%d", &x);if (x >= 100 || x < 36){printf("输入无效...\n");continue;}else{int t = (x >= 36) + (x >= 49) + (x >= 64) + (x >= 81);switch (t){case 1:y = x + 2;break;case 2:y = 2 * x + 3;break;case 3:y = 2 * x + 4;break;case 4:y = 4 * x + 5;break;}printf("y=%d\n", y);break;}return 0;
}

运行结果
总结:通过不同种方法巧妙化简代码的复杂性以及重复性,但是并不是所有的switch语句比if简单,根据实际情况再选择使用,做到简化代码,举一反三,为以后的代码打下坚实基础。这种方法也可用于计算个人所得税……

分段函数求法(if和switch)相关推荐

  1. matlab用switch画出分段函数,matlab用switch语句绘出分段函数 在 的图像

    matlab switch 语句: n=input('请输入成绩:');k=floor(n/10);switchkcase{8,9,10}disp('优秀')case7disp('良好')case6d ...

  2. 26 利用switch语句解决问题 【项目1:投票表决器】【项目2:成绩等级】【项目3:分段函数求值switch语句版】【项目4:本月有几天?】【项目5:个人所得税计算器switch语句版】

    /*项目1:投票表决器] 设计一个投票表决器,其功能是: 输入Y.y,打印agree 输入N.n,打印disagree 输入其他,打印lose */#include <stdio.h>in ...

  3. 分段函数(信息学奥赛一本通-T1051)

    [题目描述] 编写程序,计算下列分段函数y=f(x)的值.  y=-x+2.5; 0 <= x < 5  y=2-1.5(x-3)(x-3); 5 <= x < 10  y=x ...

  4. 分段函数返回字符c语言,C++对cin输入字符的判断及分段函数处理方法示例

    本文实例讲述了C++对cin输入字符的判断及分段函数处理方法.分享给大家供大家参考,具体如下: 这两个本来也不是什么问题,然而真正遇到还是有地方可以研究的.首先是C++对于cin输入的判断,有时候你定 ...

  5. python分段函数输入x的值求y的值_C语言编程题 有一分段函数如下,要求用scanf函数输入整数x的值,求y值并在屏幕上输出。有分段函数如下,编程实现输入整...

    C语言编程题 有一分段函数如下,要求用scanf函数输入整数x的值,求y值并在屏幕上输出. 有分段函数如下,编程实现输入整 www.zhiqu.org 时间: 2020-11-22 #include ...

  6. switch-case编写分段函数

    SWITCH-CASE编写分段函数 直接上代码 /*小问题:分段函数可以用switch case语句做嘛? */ int main() {int x;printf("请输入X=") ...

  7. c语言学习笔记之分段函数

    内容来自哔哩哔哩视频 [浙江大学]C语言入门与进阶 翁恺 学习笔记 分段函数 if ( x < 0 ) { f = -1; } else if ( x == 0 ) { f = 0; } els ...

  8. 【暑假自学C语言】 --8 练习题详解(分段函数)

    目录 ​​​ 一.利润计算 解题思路: 方法一代码如下: 代码理解: 方法二代码如下: 代码理解: 两种解法比较: 优点: 缺点: 二.成绩评定 解题思路: 方法一代码如下: 代码理解: 方法二代码如 ...

  9. c语言简单分段函数用多路分支与if else 级联的写法

    一,简单分段函数 f(x)= -1 (  X<0 ) 0     (X=0) 2x     (X>0) 二.代码 1.多路分支代码 int main() {  int i;  double ...

最新文章

  1. 科学家发现第三种磁性:或是量子计算又一突破
  2. 如何查看云服务器的系统版本,如何查看云服务器系统版本
  3. jupyter kernel_jupyter增加多版本python内核
  4. 【自适应(盲)均衡5】分数间隔均衡器基本原理及应用(更正数字通信翻译版中公式错误)
  5. xclock 不出来界面_macOS 使用 XQuartz 支持 X11 实现 Linux 图形化界面显示
  6. ubuntu14 lamp环境下安装swoole1.8.6
  7. 计算机网络-IP数据报计算(IP数据报分片)一个数据报部分长度为3400字节(使用固定首部)。现在经过一个网络传输,该网络的MTU为800字节:
  8. taro 如何使用dom_taro创建的小程序项目怎么引用ant design mobile UI库
  9. 用计算机录制声音让音质更好,电脑有什么好用的录音软件吗
  10. C# Winfrom MQTT 客户端与服务器【代码】
  11. 相见恨晚的 18 个 Linux 趣味命令,最后一个千万要尝试~
  12. 服务器虚拟机迁移的6个步骤,vmware 虚拟机迁移
  13. 强烈推荐:程序员接私活那点事
  14. 华为p4支持鸿蒙功能吗_华为鸿蒙系统支持哪些手机 鸿蒙系统支持以前的华为手机吗...
  15. 谷歌推出 Translatotron 2,一种没有深度伪造潜力的语音到语音直接翻译神经模型
  16. git 中 A C D M R T U X 分别解释
  17. 雷达革命,截止日期以及到达第四维度
  18. 一个因为兴趣而走上前端开发的程序员
  19. 使用GAN+RL来进行关键词生成
  20. hdu1158 Employment Planning【贪心dp】

热门文章

  1. 2022-2028全球与中国交通信号控制系统市场现状及未来发展趋势
  2. 大恒相机图像采集 linux+python
  3. 移植python到小米路由器记录。
  4. 3.10 Maya历法
  5. 关于已移除sd卡,手机不认卡的原因和解决办法(转)
  6. Oracle数据库之表空间(tablespace)---面试再也不害怕系列之一
  7. 移动指数加权平均笔记
  8. 法国语言学校c1,法国留学的语言要求是什么?
  9. 4.2.5 预测分析法与预测分析表的构造
  10. 深入Java集合ArrayList的源码解析