第8周项目3(2)用switch语句求多分支结构的函数值

本文介绍了一个使用C++实现的多分支函数计算程序案例。该程序根据输入的自变量x值,通过switch语句判断并计算出对应的因变量y值。具体地,当x小于2时,y等于x;当x介于2到6之间时,y等于x的平方加1;当x介于6到10之间时,y等于sqrt(x+1);当x大于等于10时,y等于1/(x+1)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*
*copyright (c)2014,烟台大学计算机学院
*All rights reserved
*文件名称:project.cpp
*作者:孙春红
*完成日期:2014年10月16号
*版本号:v1.0
*
*问题描述:计算函数的值:当x<2时,y=x;当2<=x<6时,y=x*x;当6<=x<10时,y=sqrt(x+1);当x>=10时,y=1/(x+1);
*输入描述;输入一个函数值,代表自变量x
*程序输出:输出一个函数值,代表因变量y
*/
#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    int x,y,t;
    cin>>x;
    t=(x<2)+(x<6)+(x<10);
    switch(t)
    {
    case 3:
        y=x;break;
    case 2:
        y=x*x+1;break;
    case 1:
        y=sqrt(x+1);break;
    case 0:
        y=1/(x+1);
    }
    cout << "y==" <<y<< endl;
    return 0;
}


 

 

 

知识点总结:

学会了用switch语句编写多分支结构求函数值

心得总结:

开始时忘记了声明x,y;导致了一些错误;然后就是编码时,忘记了inciude<cmath>,修改时还把math拼错了尴尬;开始时用的是double型,最后因为有switch为整型,所以有一个大大的错误难过。虽然错误有点多,但最后还是写对了。

### C语言中跳出 `switch` 语句的方法 在C语言中,有几种方法可以从 `switch` 结构内部提前退出。最常用的方式是在适当位置放置 `break` 语句来终止当前情况下的执行流程并离开整个开关结构[^4]。 当某个条件满足时,如果不希望继续执行后续的代码片段,则可以在该条件下加入 `return` 关键字返回函数值或直接结束函数调用过程,从而间接实现从 `switch-case` 中脱离的效果[^3]。 另外一种方式是利用循环控制指令如 `goto` 来指定跳转到特定标签处,不过这种方法并不推荐因为会使程序逻辑变得复杂难以维护[^1]。 #### 使用 `break` 这是最常见的做法,在每个处理分支之后加上 `break` 可防止所谓的“贯穿”现象发生——即一旦找到匹配项后会一直往下顺序执行直到遇见第一个显式的中断命令为止: ```c #include <stdio.h> int main(void){ int choice; printf("Enter your selection (1, 2): "); scanf("%d", &choice); switch(choice){ case 1: printf("Option one selected.\n"); break; /* Exit after handling option 1 */ case 2: printf("Option two selected.\n"); break; /* Exit after handling option 2 */ default: printf("Invalid input!\n"); } } ``` #### 利用 `return` 如果 `switch` 是在一个非void类型的函数体内,并且想要立即停止进一步的操作并给出结果给调用者的话,可以直接通过 `return` 返回相应的数值或者对象实例: ```c char getGrade(int score){ char grade; switch(score / 10){ case 9: case 8: grade=&#39;A&#39;; return grade; // Immediately returns &#39;A&#39; without checking other cases case 7: grade=&#39;B&#39;; return grade; ... } return &#39;?&#39;;// Default value if no match found. } ``` #### 不建议使用的 `goto` 尽管语法允许这样做,但在实际编程实践中应尽量避免使用无条件转移操作符 `goto` ,因为它可能会破坏代码清晰度并且增加调试难度 : ```c #include <stdio.h> #define MAX_SCORE 100 void evaluatePerformance(int performanceScore){ const char *evaluationMessage=""; switch(performanceScore/MAX_SCORE*5+1){ excellent: evaluationMessage="Excellent"; goto endEvaluation; good: evaluationMessage="Good"; goto endEvaluation; average: evaluationMessage="Average"; goto endEvaluation; poor: evaluationMessage="Poor"; goto endEvaluation; very_poor: evaluationMessage="Very Poor"; goto endEvaluation; default: evaluationMessage="Unknown Score Range!"; endEvaluation: puts(evaluationMessage); } ```
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值