分支结构学习总结

一.知识总结

分支结构程序设计这一单元主要学习了一些运算符、if语句、条件语句、switch语句的基础知识和应用。以下罗列一些重点和易错点(本文部分代码省去了头尾最基础的语句)

  • 关系运算符:1.不等号为!=,等于号为==(这里等号很容易错写成赋值号)2.比较大小时整型按数值大小比较,字符型则按ASCII码值比较。
    int a;
    cin>>a;
    a=a+5;//把a+5赋值给a
    if(a==4);//如果a=4
      cout<<"YES"<

     

  • 逻辑运算符:1.非!A 与A&&B  或A||B  2.非、等于不等于、与、或  四者优先级依次下降3.不能和数学中一样连着写关系表达式,连着写很容易错。
  • if语句:1.if和else需一一对应,else子句总是与离它最近的前一个if子句配对2.一个if下有多条语句需加{ }3.最好输入if和else后的语句都缩进,以便查验(可按tab自动缩进)。
int a,b,c=0,d=0;
cin>>a>>b;
if(a>b){
  c=a/b;
  d=a%b;
  }
cout<
  • 条件表达式:<表达式1>?<表达式2>:<表达式3>
  • switch语句:1.switch后表达式只能是整型、字符型、布尔型或枚举型2.case后表达式值必须各不相同3.执行过程中若需提前跳出switch语句,必须加break
  • C++中的函数rand()返回[0,RAND_MAX]之间的随机整数,其中,RAND_MAX一般为32767。在调用rand()之前一般要先设置“随机种子”,通常可用srand(time(0))来实现。产生a~b之间随机整数可表示为a+rand()%(b-a+1)。
  • 函数rand()和srand()需包含“cstdlib”头文件,函数time()需包含“ctime”头文件。
//p3-7-4
#include
#include//函数rand()的头文件
#include//函数time()的头文件
using namespace std;
int main(){
  int a,b,c;
  srand(time(0));//设置随机种子,以防每次取随机数都取同一个
  int x=1,y=9;
  a=x+rand()%(y-x+1);//产生x,y间的随机整数
  b=x+rand()%(y-x+1);
  x=1;
  y=4;
  c=x+rand()%(y-x+1);
  switch(c){
    case1:printf("%d+%d=%d\n",a,b,a+b);break;
    case2:printf("%d-%d=%d\n",a,b,a-b);break;
    case3:printf("%d*%d=%d\n",a,b,a*b);break;
    case4:printf("%d/%d=%d\n",a,b,a/b);break;
  }
  return 0;
}

二.感悟体会

  • 一开始只会从头到尾写if语句的我,经过本单元的学习,习惯于使用条件语句和switch语句进行程序编写。if语句中if、else以及{ }的使用常常给我带来诸多困惑,我经常会在else处出错,却不知该怎么改,改对了也不知为什么,而快写代码APP也存在if、else无法自动匹配问题,常常需要加好多{ }帮助软件更好的匹配每一对if、else。
//一元二次方程求解
#include
#include
using namespace std;
int main(){
	double a,b,c,x,x1,x2;
	cin>>a>>b>>c;
	if(a==0)
		{if(b==0)
			{if(c==0)
				cout<<"任意解"<=0){
				x1=(-b+sqrt(b*b-4*a*c))/(2*a);
				x2=(-b-sqrt(b*b-4*a*c))/(2*a);
				cout<=0)
					cout<<(-b)/(2*a)<<"+"<
  • 而条件语句和switch语句则帮助我很好的规避了这一问题的出现。当然条件语句和switch语句并非万能的,有些情况还是用if语句方便快捷,所以每看到一个题,我都会在脑子里构想这一题需要考虑哪些情况,哪种语句大概需要使用多少语句,进而判断使用哪种语句最为方便快捷,而不是以前那般不管三七二十一直接用if语句写(当然简单程序可以用脑子想,复杂程序就需要把大致思路写在纸上,然后进行比较)。
    //判断闰年
        int x;
        cin>>x;
        cout<<(x%400==0?"Y":(x%4==0?(x%100!=0?"Y":"N"):"N"))<

     

  • 做题过程中发现cin并不能输入空格等特殊字符,而这些特殊字符的输入则需要使用gets或getchar,导致我该题出现3次wrong answer,说明我的考虑还不够严密全面。
//奇偶ASCII值判断
#include
using namespace std;
int main(){
	char a;
	a=getchar();//任意输入一个字符
	if(a%2!=0)
		cout<<"YES"<
  • 最近所做题目大多数都可用两到三个语句写,这极大地吸引了我,让我不自觉的想用每一种语句写同一个题,我想这也是C++的一大魅力所在,一题多解成功激发了我对C++学习的兴趣。我将怀揣着这份兴趣,努力学习!

 

你可能感兴趣的:(分支结构学习总结)