首页/文章/ 详情

C++程序流程控制

3月前浏览800
   

概述

       

编程的核心在于处理数据,即玩转数据,如何操控数据,涉及到程序的流程控制,就像是走路一样,选择哪一条路才能更方便的走到目的地是一门技术活,程序中的流程控制就是指引数据最终走到目的地。

C++提供了三种程序流程:顺序结构、选择结构和循环结构,下面依次讲解这三种程序控制结构。

顺序结构

     

从程序语句的执行来看,顺序结构是逐行执行语句,一直执行到程序结束,不走回头路。本系列帖子之前的大部分程序都是顺序结构。















#include <iostream>#include<string>
using namespace std;
int main(){  cout << "这是程序的第七行" << endl;
 cout << "这是程序的第九行" << endl;
 cout << "这是程序的第十一行" << endl;  system("pause");  return 0;}
 

上面的程序会依次输出




这是程序的第七行这是程序的第九行这是程序的第十一行
 

这就是顺序执行结构,一根直肠子,一杆子捅到底,不跳过任何语句,下面就开始有花花肠子了。

选择结构

       

选择结构,顾名思义,就是依据数据选择性的执行一些语句,这就意味着有些语句是会被跳过的






#include <iostream>#include<string>
using namespace std;
int main(){  float a = 0;
 cout << "Please input your data:\t" << endl;  cin >> a;  if (a > 600){    cout << "你的分数在600以上" << endl;  }  else if (500 < a && a  < 600){    cout << "你的分数在500~600" << endl;  }  else if (a < 500){    cout << "你的分数在500以下" << endl;  }  system("pause");  return 0;}
 

上面的程序依据输入的分数而选择性的执行一些数据,如果输入的数据是1000,则会有以下输出




Please input your data:10000你的分数在600以上
 

如果输入的数据是1,则会有以下输出




Please input your data:1你的分数在500以下
 

下面介绍switch语句,这种选择结构根据一个整型数值或者一个字符执行一些语句,下面的程序根据输入的分数判断电影的质量






#include <iostream>#include<string>
using namespace std;
int main() {
 //请给电影评分  //10 ~ 9   经典    // 8 ~ 7   非常好  // 6 ~ 5   一般  // 5分以下 烂片
 int score = 0;  cout << "请给电影打分" << endl;  cin >> score;
 switch (score)  {  case 10:  case 9:    cout << "经典" << endl;    break;  case 8:    cout << "非常好" << endl;    break;  case 7:  case 6:    cout << "一般" << endl;    break;  default:    cout << "烂片" << endl;    break;  }
 system("pause");
 return 0;}
 

如果输入的是10,输出如下




请给电影打分10经典
 

以上是选择结构,需要注意的是,switch选择结构中,case后面的只能是整型数据和单个字符;并且程序中一定要有break语句,不然会顺序执行所有程序。

下面介绍循环结构,这就能完成更加复杂的功能了。

循环结构

       

循环结构有好几种,首先介绍for型循环,for型循环的语句为




for(起始表达式;条件表达式;末尾循环体){\\程序语句}
 

        下面以一个输出9*9乘法表的程序为例讲解






#include <iostream>#include<string>
using namespace std;
int main() {  int i = 0;  int ii = 0;
 for (i = 1; i < 10; i++){    for (ii = 1; ii <= i; ii++){      if (ii == i){        cout << "\t" << i << "*" << ii << "=" << i*ii << endl;      }      else{        cout <<"\t"<< i<<"*"<<ii<<"=" << i*ii;      }    }  }
 system("pause");
 return 0;}
   

下面是输出的结果










        1*1=1        2*1=2   2*2=4        3*1=3   3*2=6   3*3=9        4*1=4   4*2=8   4*3=12  4*4=16        5*1=5   5*2=10  5*3=15  5*4=20  5*5=25        6*1=6   6*2=12  6*3=18  6*4=24  6*5=30  6*6=36        7*1=7   7*2=14  7*3=21  7*4=28  7*5=35  7*6=42  7*7=49        8*1=8   8*2=16  8*3=24  8*4=32  8*5=40  8*6=48  8*7=56  8*8=64        9*1=9   9*2=18  9*3=27  9*4=36  9*5=45  9*6=54  9*7=63  9*8=72  9*9=81
 

上面的程序设置了两层循环,第一层循环决定了乘法表中第几行数据,第二层循环决定了每一行输出的终止位置

注意for语句后面的括号


(ii = 1; ii <= i; ii++)
 

这里的意思是,当ii大于i时候,跳出循环,在每一次循环中ii递增1;

如果我们想要反向输出乘法表呢,即第一行输出九个数字,那么我们只需要修改for循环中的语句为











    for (i = 9; i >=1; i--){    for (ii = i; ii >=1; ii--){      if (ii == 1){        cout << "\t" << i << "*" << ii << "=" << i*ii << endl;      }      else{        cout << "\t" << i << "*" << ii << "=" << i*ii;      }    }    }
 

输出的结果就变成










        9*9=81  9*8=72  9*7=63  9*6=54  9*5=45  9*4=36  9*3=27  9*2=18  9*1=9        8*8=64  8*7=56  8*6=48  8*5=40  8*4=32  8*3=24  8*2=16  8*1=8        7*7=49  7*6=42  7*5=35  7*4=28  7*3=21  7*2=14  7*1=7        6*6=36  6*5=30  6*4=24  6*3=18  6*2=12  6*1=6        5*5=25  5*4=20  5*3=15  5*2=10  5*1=5        4*4=16  4*3=12  4*2=8   4*1=4        3*3=9   3*2=6   3*1=3        2*2=4   2*1=2        1*1=1
 

循环结构中还有do...while循环,当满足某种条件时候,循环开始执行,如














#include <iostream>#include<string>using namespace std;int main() {  int a = 0;  do {    cout << "输入一个x小于10的数字,不然会一直输出这一句话!" << endl;    cin >> a;  } while (a > 10);
   system("pause");    return 0;}
 

当while语句后括号的值为1时候,程序会一直执行do后括号内的内容,当输入的数字小于10的时候,循环结束,如









输入一个小于10的数字,不然会一直输出这一句话!22输入一个小于10的数字,不然会一直输出这一句话!33输入一个小于10的数字,不然会一直输出这一句话!888输入一个小于10的数字,不然会一直输出这一句话!1
 

以上就是C++中经常使用的程序控制结构。

     
     
      


       

来源:有限元先生
System控制
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-09-28
最近编辑:3月前
外太空土豆儿
博士 我们穷极一生,究竟在追寻什么?
获赞 24粉丝 4文章 66课程 0
点赞
收藏
作者推荐

C++函数基础概念

零概述为了程序的模块化管理,任何计算机语言都会设计函数,将多次执行的程序封装为函数,以供任何时候调用。下面介绍C++中的函数使用。壹函数简介数据类型就是前文讲解的内容,经常使用的数据类型有:int、float等等,函数名称的命名与变量名称的命名要保持相同的法则,函数名后面开括号里的内容是调用函数的参数。依据输入和输出的类型,C++函数可以大致分为以下几类有输入,有输出有输入,无输出无输入,有输出无输入,无输出一个函数的完整使用过程,不但包括函数的具体定义,还要在主程序main函数之前进行声明,如#include&lt;iostream&gt;usingnamespacestd;\\函数声明输出类型函数名称(参数1,参数2...)intmain(){\\函数调用return0;}\\函额具体定义输出类型函数名称(参数1,参数2...){程序语句return函数返回值;}下面依次介绍这几种函数贰有输入,有输出设计一个简单的数学函数,这个函数分为三个阶段,x在不同的阶段y有不同对应的函数值,如y=x-1x&lt;0y=x^2x&gt;=0&amp;&amp;x&lt;10y=x^3x&gt;+10对应的C++程序为#include&lt;iostream&gt;#include&lt;string&gt;usingnamespacestd;doublesubroutine(doublex);intmain(){doublex=0;cout&lt;&lt;&quot;PleaseinputX:\t&quot;&lt;&lt;endl;cin&gt;&gt;x;cout&lt;&lt;&quot;TheYis:\t&quot;&lt;&lt;subroutine(x)&lt;&lt;endl;system(&quot;pause&quot;);return0;}doublesubroutine(doublex){if(x&lt;0){returnx-1;}elseif(x&gt;=0&amp;&amp;x&lt;10){returnx*x;}else{returnx*x*x;}}上面的程序首先向屏幕请求一个输入,然后将用户输入的数值传入函数中,函数判断x的范围并进行相应的计算,当输入的数值为56时,输出的内容为PleaseinputX:56TheYis:175616叁有输入,无输出这里设计一个函数,这个函向屏幕输出许多行字符,输出的行数是通过参数传进来,这个函数不向主程序返回任何数值,只是向屏幕输出以字符,如#include&lt;iostream&gt;#include&lt;string&gt;usingnamespacestd;voidsubroutine(intx);intmain(){intx=0;cout&lt;&lt;&quot;输入行数:\t&quot;&lt;&lt;endl;cin&gt;&gt;x;subroutine(x);system(&quot;pause&quot;);return0;}voidsubroutine(intx){for(inti=1;i&lt;=x;i++){cout&lt;&lt;&quot;第&quot;&lt;&lt;i&lt;&lt;&quot;行,共计&quot;&lt;&lt;x&lt;&lt;&quot;行。\n&quot;&lt;&lt;endl;}}上面的程序接受一个整型参数,这个参数数值就是函向屏幕输入的字符串行数,当输入的数值为8时,输出的结果为输入行数:8第1行,共计8行。第2行,共计8行。第3行,共计8行。第4行,共计8行。第5行,共计8行。第6行,共计8行。第7行,共计8行。第8行,共计8行。肆无输入,有输出下面的函数没有接接受输入,但是向主程序返回了一个整型的数值,并将该数值赋值给一个整型变量,并且向屏幕输出了结果#include&lt;iostream&gt;#include&lt;string&gt;usingnamespacestd;\\definefunctionintsubroutine();intmain(){intoutput=0;\\callsubroutineoutput=subroutine();cout&lt;&lt;output&lt;&lt;endl;system(&quot;pause&quot;);return0;}\\definefunctionintsubroutine(){cout&lt;&lt;&quot;这是一个无输入但是有数值输出的函数!&quot;&lt;&lt;endl;cout&lt;&lt;&quot;这个函数输出的数值内容为:&quot;&lt;&lt;endl;return23;}上面的函数输出结果为这是一个无输入但是有数值输出的函数!这个函数输出的数值内容为:23伍无输入,无输出无输入也无输出的函数定义为voidfunctionname(){\\codes}这种函数声明方式,不需要在函数中添加代码return,只需要设置输出类型为void即可。设置无输入也无输出函数也可以采用如下方式intfunctionname(){\\codesreturn0;}上面代码将函数输出类型设置为int,而且在函数程序中添加了return0,这意味着程序会返回一个0数值,这也是可行的。同样的道理,也可以stringfunctionname(){return&quot;&quot;;}这就返回了一个空的字符串,也是可行的。下面给出了一个无输入也无输出的函数示例#include&lt;iostream&gt;#include&lt;string&gt;usingnamespacestd;voidsubroutine();intmain(){subroutine();system(&quot;pause&quot;);return0;}voidsubroutine(){cout&lt;&lt;&quot;这是一个没有输入,也没有数值输出的函数。&quot;&lt;&lt;endl;cout&lt;&lt;&quot;这个函数仅仅向屏幕输出了这两句话。&quot;&lt;&lt;endl;}运行上述程序,只会向屏幕输出两句话,而没有任何的数值输出,输出结果为这是一个没有输入,也没有数值输出的函数。这个函数仅仅向屏幕输出了这两句话。陆函数与数组的联合使用函数不但可以用来接收一些简单的数据,还可以接收数组和指针类型的数据,这里介绍一个接收数组类型的函数例子假设要计算一个班级里面所有人一学期的签到次数,就需要创建一个数组,数组的索引就是第几个人,数组的数值就是一个人签到的次数,这里假设一个班级里面有8个人,设计如下程序#include&lt;iostream&gt;usingnamespacestd;constintpeople=8;intsum(intarr[],intn);//第六行代码改成这样也是可以运行的,intsum(int[],int);intmain(){intdata;//班级里面每个人额签到次数intarr[8]={1,2,3,4,5,6,7,8};//调用函数data=sum(arr,people);cout&lt;&lt;&quot;班级里所有人签到的总次数为:\t&quot;&lt;&lt;data&lt;&lt;endl;system(&quot;pause&quot;);return0;}intsum(intarr[],intn){intm=0;for(inti=0;i&lt;n;i++){m+=arr[i];}returnm;}注意第七行的注释,将intsum(intarrr[],intn)修改为intsum(int[],int)也是可以正确运行的,这是因为函数原型中的参数不需要准确的变量名称,只需要知道数据类型就行。关于函数、数组和指针的应用,会更加的有意思,下一部分帖子会重点讲解指针与数组的内容。来源:有限元先生

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈