精华内容
下载资源
问答
  • MATLAB实现SWITCH语句

    2009-05-31 12:46:08
    SWITCH语句MATLAB中的应用,条件一成立,执行条件一,条件二成立执行条件二语句,否则跳出循环
  • switch语句 m文件代码 clear clc price=input('请输入价格:'); taxes=0; fee=0; switch floor(price/1000) case {0,1} taxes=0; case {2,3,4} taxes=(price-2000)*0.02; otherwise taxes=(5000...

    1、 输入一组整数a,输出其中奇偶数、奇偶数的和、积以及个数。

    m文件代码

    clear
    clc
    n=input('输入数字个数');
    for i=1:n
         x(i)=input('输入数字:');
    end
    j=1;k=1;
    %y向量存奇数,z向量存偶数
    for i=1:n
         if mod(x(i),2)
             y(j)=x(i);
             j=j+1;
         else
             z(k)=x(i);
             k=k+1;
         end         
    end
    %输出奇数和偶数
    y
    z
    %输出所有奇数和、所有偶数和
    sum(y)
    sum(z)
    %输出所有奇数连乘积、所有偶数乘积
    prod(y)
    prod(z)
    %输出所有奇数个数、所有偶数个数
    length(y)
    length(z)
    


    其他方法(下面的方法输入必须是矩阵形式,如:[2 3 4 5 6 7 8],前一个用除法,后一个用find函数)

    clear
    a=input('input some numbers:')
    n=length(a);
    j=0;k=0;
    for i=1:n
       if rem(a(i),2)==0
          j=j+1;
          b(j)=a(i);
       else
          k=k+1;
          c(k)=a(i);
       end
    end
    a
    b,j
    c,k
    ----------------------
    a=input('input some numbers:')
    b=a(find(rem(a,2)==0))
    j=length(b)
    c=a(find(rem(a,2)~=0))
    k=length(c)
    -------------
    



    2、计算s=e-(1/1+1/1!+1/2!+...+1/N!)使得s<10^(-6),求最小的N

    m文件代码

    clear
    clc
    s=exp(1);
    i=0;
    while(1)
        s=s-1.0/factorial(i);
        if(s<1e-6)
            break;
        end
        i=i+1;
    end
    i

    结果为9

    注:阶乘除了可以用factorial(i),还可以用prod(1:i),prod是连乘函数

    3、 试计算以下循环语句将进行多少步操作

    (1) for i= 32768:32767

    (2) for j= 32768:32767

    (3) for k=2:4:3

    (4) for m=ones(5,5)

    m文件代码

    count=0;
    for i= -32768:32767
        count=count+1;
    end
    count
    count=0;
    for j= 32768:32767
        count=count+1;
    end
    count
    count=0;
    for k=2:4:3
        count=count+1;
    end
    count
    count=0;
    for m=ones(5,5)
        count=count+1;
    end
    count

    结果为65536、0、1、5

    4、 观察以下循环语句,试计算每个循环次数和循环结束之后iresx的值

    (1) ires=1;

    while mod(ires,10)~=0

    ires=ires+1;

    end

    (2) ires=2;

    while ires<=200

    ires=ires^2;

    end

    (3) ires=2;

    while ires>200

    ires=ires^2;

    end

    4x = 500;

    while x > 0

        if isprime(x)

            break;

        end

        x = x -1;

    end

    m文件代码

    ires=1;
    while mod(ires,10)~=0
    ires=ires+1;
    end
    ires
    ires=2;
    while ires<=200
    ires=ires^2;
    end
    ires
    ires=2;
    while ires>200
    ires=ires^2;
    end
    ires
    x = 500;
    while x > 0
        if isprime(x)
            break;
        end
        x = x -1;
    end
    x

    结果为:10、256、2、449

    注:isprime(x)为求素数函数,如果是素数返回1,否则返回0

    ISPRIME True for prime numbers.
        ISPRIME(X) is 1 for the elements of X that are prime, 0 otherwise.

    5、分别用ifswitch多分支语句计算税款,用户输入货价,输出相应的税款:

    货价<2000,免税;

    货价在20005000之间,超过2000部分抽税2%

    5000以上,除2%以外,5000以上抽税5%,加收手续费60元。

    if语句

    m文件代码

    clear  
    clc  
    price=input('请输入价格:'); 
    taxes=0;
    fee=0;
    if price<2000
        taxes=0;
    elseif price<5000
        taxes=(price-2000)*0.02;
    else
        taxes=(5000-2000)*0.02+(price-5000)*0.05;
        fee=60;
    end
    taxes
    fee
    

    switch语句

    m文件代码

    clear  
    clc  
    price=input('请输入价格:'); 
    taxes=0;
    fee=0;
    switch floor(price/1000)
        case {0,1}
            taxes=0; 
        case {2,3,4}
            taxes=(price-2000)*0.02; 
        otherwise
            taxes=(5000-2000)*0.02+(price-5000)*0.05;
            fee=60;        
    end        
    taxes
    fee
    

    6、分别用ifwhile做,m=1+2+2^2+...+2^n,直到1000为止,求最大的N

    只用if的话,用递归可以实现

    保存下面两个m文件

    sum2n.m

    %matlab递归计算1+2+2^2+...+2^n
    function num=sum2n(n)
    if n==0
        num=1;
    else
        num=2^n+sum2n(n-1);
    end
    
    sum2nbigm.m

    %判断1+2+2^2+...+2^n是否大于m,参数为m,n的初值(n的初值建议取0)
    %对于本题调用方法为sum2nbigm(1000,0)
    function num=sum2nbigm(m,n)
    if sum2n(n)>m
        num=n;
    else
        num=sum2nbigm(m,n+1);
    end

    然后调用sum2nbigm(1000,0),结果为9

    while循环方法

    m文件代码

    clear
    clc
    m=0;
    i=0;
    while m<1000
        m=m+2^i;
        i=i+1;
    end
    n=i-1;
    n

    7、‘The quick brown fox jumps over the lazy dog’,26个字母至少出现过一次,统计每个字母出现的次数。

    逐个遍历即可

    方法一:sum函数遍历

    m文件代码

    %利用sum函数遍历
    clear
    clc
    str='The quick brown fox jumps over the lazy dog';
    str=lower(str);       %将字符串中的大写转换为小写
    for i=1:26
        x(i)=sum(str==char('a'-1+i));
    end
    x

    方法二:逐个遍历累加

    m文件代码

    %逐个遍历累加
    clear
    clc
    str='The quick brown fox jumps over the lazy dog';
    str=lower(str);
    z=zeros(1,26);
    for i=1:length(str)
        if(str(i)<='z'&&str(i)>='a') 
            z(str(i)-'a'+1)=z(str(i)-'a'+1)+1;
        end
    end
    z

    8、输入一个字符,如果是大写字母,输出小写;如果是小写字母,输出大写;其他字符,原样输出。

    m文件

    clear
    clc
    n=input('请输入一个字符','s');
    n=n(1);%即使输入多个字符也只取第一个
    if(n>='a'&&n<='z')
        n=char(n-32);
    elseif(n>='A'&&n<='Z')
        n=char(n+32);
    else
        n=n;
    end
    n
    

    9、利用rand函数编制一个新的函数rand10,该函数能够产生在[-1010]之内的随机数。

    rand10.m

    function num=rand10()
    num=rand()*20-10;
    end
    


    10、对上题的函数加以修改,使得产生的随机数在[low,high]之间,其中lowhigh为用户输入参数。

    randLowToHigh.m

    %调用示例:randLowToHigh(-50,100)
    function num=randLowToHigh(low,high)
    num=rand()*(high-low)+low;
    end









    展开全文
  • %ex2_2.m arg=input('Input argument:'); total=0;...%switch语句开始 switch arg %分支1 case 1 i=1; %外层while语句开始 while(i<=5) total=total+1; i=i+1; j=1; %内层while语句开始
    %ex2_2.m
    arg=input('Input argument:');
    total=0;detail=0;
    %switch语句开始
    switch arg
        %分支1
        case 1
            i=1;
            %外层while语句开始
            while(i<=5)
                total=total+1;
                i=i+1;
                j=1;
                %内层while语句开始
                while(j<=2);
                    detail=detail+total;
                    j=j+0.1;
                    %内层while语句结束
                end
                %外层while语句结束
            end
            %分支2
        case 2
            total=0;
            detail=total;
            %分支其他
        case others
            error('invalid arguments');
    %switch语句结束
    end
    detail
    
    

    在这里插入图片描述

    展开全文
  • switch, case, otherwise语句是执行多组语句中的一组。 一.语法 switch switch_expression case case_expression statements case case_expression statements ... otherwise statements end 提示 ...

    目录

    一.语法

    二.说明

    三.示例

    1.比较单个值

    2.与多个值进行比较


    switch, case, otherwise语句是执行多组语句中的一组。

    一.语法

    switch switch_expression
       case case_expression
          statements
       case case_expression
          statements
        ...
       otherwise
          statements
    end

    提示

    • case_expression 不能包含关系运算符(例如 < 或 >)来与 switch_expression 进行比较。要测试不相等性,使用if,elseif,else语句。

    • MATLAB switch 语句不会像C语言的switch语句一样失效。如果第一个case语句为true,则 MATLAB 不会执行其他case语句。例如:
    result = 52;
    
    switch(result)
       case 52
          disp('result is 52')
       case {52, 78}
          disp('result is 52 or 78')
    end
    result is 52
    • 在该 case 内定义特定 case 中的代码所需要的变量。由于 MATLAB 仅执行任何 switch 语句的一个 case,因此一个 case 内定义的变量不适用于其他 case。例如,如果当前工作区不包含变量 x,则仅定义 x 的情况可以使用它:

    switch choice
       case 1
          x = -pi:0.01:pi;
       case 2
          % does not know anything about x
    end
    • MATLAB  break 语句会结束forwhile循环的执行,但不结束 switch 语句的执行。此行为不同于 C 语言中 break 和 switch 的行为。

    二.说明

    switch switch_expression, case case_expression, end 计算表达式并选择执行多组语句中的一组。每个选项为一个 case。

    switch 块会测试每个 case,直至一个 case 表达式为 true。case 在以下情况下为 true:

    • 对于数字,case_expression == switch_expression

    • 对于字符向量,strcmp(case_expression,switch_expression) == 1

    • 对于支持 eq 函数的对象,case_expression == switch_expression。重载的eq函数的输出必须为逻辑值或可转换为逻辑值。

    • 对于元胞数组 case_expression,元胞数组的至少一个元素与 switch_expression 匹配,如上述对数字、字符向量和对象的定义。

    当 case 表达式为 true 时,MATLAB® 执行对应的语句,然后退出switch块。

    计算的switch_expression必须为标量或字符向量。计算的case_expression必须为标量、字符向量或者标量或字符向量的元胞数组。

    otherwise块是可选的。仅当没有 case 为 true 时,MATLAB 才会执行这些语句。

    三.示例

    1.比较单个值

    根据在命令提示符下输入的值有条件地显示不同的文本。

    n = input('Enter a number: ');
    
    switch n
        case -1
            disp('negative one')
        case 0
            disp('zero')
        case 1
            disp('positive one')
        otherwise
            disp('other value')
    end

    在命令提示符下,输入数字 1。

    positive one

    重复执行该代码并输入数字 3。

    other value

    2.与多个值进行比较

    基于 plottype 的值确定要创建哪种类型的绘图。如果 plottype 为 'pie' 或 'pie3',则创建一个三维饼图。使用元胞数组包含两个值。

    x = [12 64 24];
    plottype = 'pie3';
    
    switch plottype
        case 'bar' 
            bar(x)
            title('Bar Graph')
        case {'pie','pie3'}
            pie3(x)
            title('Pie Chart')
        otherwise
            warning('Unexpected plot type. No plot created.')
    end

     

    展开全文
  • 因为写代码时候,发现这两个语句可以相互混着使用。然后搜了一下,这个blog总结的很好 ... 1 switch和if语句 的 使用的...总结:switch语句和if语句的区别:    ● 大于等于(>=)、小于等于(  ● switch语


    因为写代码时候,发现这两个语句可以相互混着使用。然后搜了一下,这个blog总结的很好

    http://www.cnblogs.com/pangchunlei/p/5420491.html


    1 switch和if语句 的 使用的区别

    下面是直接粘贴过来的

    总结:switch语句和if语句的区别:

         

        ● 大于等于(>=)、小于等于(<=)的判断用if语句,而等于(=)的判断用switch语句。

        ● switch语句中的case类似于if…else…else if…else,但是离散值的判断。

           (离散值的判断自认为是等于情况的判断)。

        ● switch一般都可以及用if重写,但是if不一定能用switch重写。

        ●不要忘了break.C#中break不写是不行的,除了合并case的情况。

        ● case 中的值必须是常量,不能是变量、表达式。



    2 switch和if语句 中是否加break的问题

    (1)首先,if语句是可以不加break的,一般在for循环或者在while循环里面,会通过加入if语句的判断,从而进行break

    比如下面这段代码,是我自己写的,是一个function里面的其中一段代码,在while循环里面加入if判断进行break,避免出现死循环,当然break语句前要加上输出命令,如果不赋值,那么即使break跳出,也会没有output


             while ((judcig1 == 0) || (cig2 == 1))
                    fprintf('\n\n Error! Invalid input!\n\nPlease enter ''f'' for female, ''m'' for male, ''x'' for third sex.\r\n');
                    % error report
                            if gbegin == 1 % judge the input of you       
                               gender_ = input ('\n\n please enter your gender. (f/m/x)\n\n','s');
                            elseif gbegin == 2 % judge the input of dreamy
                               gender_ = input ('\n\n please enter dreamy''s gender. (f/m/x)\n\n','s');
                            end
                    cig2 = isempty(gender_); % if it is an empty input
                    cig1 = strcmp(gender_,s1); % compare the input and the right answer
                    judcig1 = any(cig1); % use any to test is it any "1" in the answer
                            if (judcig1 == 1) % until the any is "1", end this loop
                                ansgend = gender_; %%% 原来在这里break的时候,ansgend 没有赋值,所以ingend函数没有返回值,所以出错。
                                break; % break the while loop
                            end
                    ansgend = gender_; % save the right answer        
                end % end, when it's the correct answer



    (2)但是在switch语句里面就不是这样的了

    switch语句中加break,是为了提高运算的效率问题

    下面是从这个百度问里面摘的https://zhidao.baidu.com/question/542504321.html

    switch起到的作用类似于跳转,满足switch的条件会跳转到对应的case下执行代码。

    如果不加break,代码会从那开始执行,一直执行到最后,所以不符合case的语句也会被执行。


    那么,如果要改,就相当于在每一个case语句后面加上一个break;,就可以了,提高效率

    比如下面这行代码,依然是在一个function文件里面的,是我自己的代码


                                switch(inpn) % 可以用 if 判断来代替 switch语句,但是貌似 switch语句的效率会更高
                                    case 1 % your name    
                                       inpc_ = input ('\n\n please enter your name or nickname.\n\n','s');
                                       break;
                                    case 2 % your country
                                       inpc_ = input ('\n\n Where are you from? (country name)\n\n','s');
                                       break;
                                    case 3 % your age
                                       inpc_ = input ('\n\n please enter your age\n\n','s'); 
                                       break;
                                    case 4 % your major
                                       inpc_ =  input ('\n\n What''s your major?\n\n','s');
                                       break;
                                    case 5 % dreamy's name
                                       inpc_ =  input ('\n\n please enter dreamy''s name or nickname.\n\n','s');
                                       break;
                                    case 6 % dreamy's country                              
                                       inpc_ = input ('\n\n Where is he/she from? (country name)\n\n','s');
                                       break;
                                    case 7 % dreamy's age
                                       inpc_ = input ('\n\n please enter dreamy''s age\n\n','s');
                                       break;
                                    otherwise % dreamy's major
                                       inpc_ = input ('\n\n dreamy''s major?\n\n','s');
                                       break;
                                end






    展开全文
  • MATLAB 循环和选择 for,while,if,switch

    千次阅读 2020-02-14 08:29:37
    MATLAB 循环和选择语句 for,while,if,switch 循环结构:for语句 格式: for 循环变量=表达式1:表达式2:表达式3 循环体 end 【注】:表达式1:循环变量初值, 达式2:步长,为1时,可省略; 表达式3:循环...
  • 循环switch语句中的continue、break

    千次阅读 多人点赞 2019-05-18 17:24:07
    1.在switch语句中,“case 常量表达式”只相当于一个语句标号, 表达式的值和某标号相等则转向该标号执行,但不能在执行完该标号的语句后自动跳出整个switch 语句,所以会出现继续执行所有后面case语句的情况。...
  • Matlab中continue语句

    千次阅读 2020-12-07 21:27:50
    continue语句跳过for或while循环中剩余的说明,并开始下一迭代。要完全退出循环,请使用break语句。 continue不是在for或while循环之外定义的。要退出函数,请使用return。 二.说明 continue将控制权传递...
  • 功能的实现采用的是matlab M文件的方法,源代码如下所示: 下面展示一些 内联代码片。 function f=score() z=0; j=0; k=0; l=0; n=input('班级的总人数为;'); v='该班级优秀人数为:%d人,良好的人数为%d,中等的人数...
  • 我想对于Matlab的两种M文件都已经清楚各自的功能并对函数的相关知识有了一定的了解,今天这篇将对Matlab的程序控制结构进行学习,首先要知道在Matlab中,具有四类程序控制结构方式,依次是:条件控制、循环控制、...
  • C++ #include<... switch (choice) { case '1': cout << 1; break; case '2': cout << 2; break; default: cout << 3; } } C #include<stdio.h> void main() {
  • Matlab中return语句

    2020-12-07 21:23:48
    目录 一.语法 二.... 三....1.将控制权返回给键盘 ...一....二....return强制 MATLAB®在到达调用脚本或函数的末尾前将控制权交还给调用程序。...如果直接调用包含return的脚本或函数,则...在条件块(例如if或switch)或循环控制语...
  • matlab if&&for&&switch语句

    千次阅读 2016-09-08 23:06:46
    if else 语句   a=input('please input a'); b=input('please input b'); c=input('please input c'); if(b^2-4*a*c&lt;0) disp('complex roots'); elseif(b^2-4*a*c==0)%%注意else和if是连在一起的 disp...
  • Matlab变量、分支语句循环语句

    万次阅读 2016-01-27 02:11:52
    一、Matlab的变量1、变量的命名Matlab的变量名由数字、字母和下划线组成,但是只能由字母开头。大小写敏感,最大长度为63个字符,不能使用Matlab的关键字作为变量名,应当避免使用函数名作为变量名,如果变量名采用...
  • 1.C语言 http://c.biancheng.net/c/32/ 1.1 if语句 #include <stdio.h> int main(){ char c; printf("Input a character:"); c=getchar(); if(c<32) printf("This is a control charac...
  • 2.退出循环之后,循环变量的值就是向量最后的元素值。 3.当向量为空时,循环体一次也不执行。 例1:求 1-2+3-4+…+(-1)n-1n y=0; g=-1; n=input('n=?'); for i=1:n g=-g; y=y+g*i; end y //法一 n=input('n=?'...
  • matlab的if、switch、while语句

    千次阅读 2017-05-11 10:00:42
    %%计算分段函数 % n=24; % fprintf(‘n=%d’,n) % fprintf(‘n=%f’,n) % x=input(‘请输入X:’); % if x~=0 % y=sin(x)/x;...% %多分支If语句 % n=input(‘n=’) % %判断输入数的正负性 % if n<=0 a=
  • matlab——02.条件与循环

    千次阅读 2019-10-21 19:51:16
    一、MATLAB 有两种条件结构: if 语句switch 语句。其中 if 语句是我们最常见的一种用法。 1、 if 语句的标准格式就是:if + 空格 + 逻辑条件 开头,end 结尾,中间行 true 条件下执行的一段代码。 if 语句...
  • Matlab中end语句

    千次阅读 2020-12-07 21:35:53
    1.终止条件语句和for循环 2.终止 switch 块 3.声明函数 4.访问向量的元素 5.访问矩阵的最后一行 终止代码块或指示最大数组索引。 一.语法 end 提示 类可以重载end函数以实现特殊的行为。有关详细...
  • MATLAB教程(1) MATLAB 基础知识

    万次阅读 多人点赞 2017-10-26 20:57:32
    去年看过一点点MATLAB,很久不用,遗忘惊人。为了加深自己的印象,扎实基础,现将官网上的基础教程做简单的翻译。 首先,以下从九个部分简单介绍基础入门知识。第一部分:MATLAB显示桌面的基本布局...
  • 利用switch语句判断学生成绩

    千次阅读 2020-05-24 13:03:27
    ##利用switch语句判断学生成绩 import java.util.Scanner; public class Test{ public static void main(String[] args){ Scanner input = new Scanner(System.in); System.out.println("请输入分数:"); int...
  • 决策与循环 1.if…end语句 if … end语句包含一个布尔表达式,后跟一个或多个语句。 2. if…else…end语句 if语句可以跟随一个可选的else语句,当布尔表达式为false时,else语句块将执行。 3. if…elseif…elseif...
  •  switch c %通过switch循环,自动每个成绩的等级进行判断  case 10  grade='满分';  case 9  grade='优秀';  case 8  grade='良好';  case 7  grade='中等';  case 6   grade='及格';  ...
  • 一、MATLAB 流程控制结构、 二、for 循环、 1、for 循环、 2、嵌套 for 循环、 三、while 循环、 二、分支结构、 1、if end 分支结构、 2、if else end 分支结构、 3、switch case end 分支结构、
  • 4、在switch语句中不管代码的顺序如何,永远都是会先判断case语句,然后没有符合的情况下才会执行default语句。 一般实现代码如下: import java . util . Scanner ; //使用switch语句,输入月份,判断季节...
  • Matlab:条件与循环

    千次阅读 2019-10-21 17:01:53
    Task 02:条件与循环 一、语法知识 ...1、循环控制语句: 1)for~end:用于要求重复多次执行for与end之间的程序语句。允许嵌套。其一般格式为 for 变量 = 起始值 :增量 :终点 程序语句 end ...
  • 您可以嵌套任意数量的 if 语句。每个 if 语句需要一个 end 关键字。 避免在 elseif 关键字 (else if) 内于 else 之后添加空格。空格会创建嵌套的 if 语句,该语句要求独立的 end 关键字。 使用 isequal ...
  • 收集了两种关于continue语句和break语句区别的说法,意思一样。  
  • switch语句实现成绩转换

    千次阅读 2017-10-24 11:49:18
    #include /*练习3-7 成绩转换 本题要求编写程序将一个百分制成绩转换为五分制成绩。...输入在一行给出一个整数的百分制成绩。 输出格式: 在一行输出对应的五分制成绩。 输入样例: 90 输出样例: A */ in

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,333
精华内容 533
关键字:

matlab中switch语句循环

matlab 订阅