天天看点

C++语言基础知识学习笔记(二)

昨天学习了C++的基础知识,就是数据类型。相当于盖房子的砖头。没这些家底是没法盖房子的。

按照盖房子的进度,今天要画设计图了。咱以前看过,还跟别人讨论半天,没画过。呵呵,指点江山,却不知道江山是什么东西。丢人哪

一个房子的设计,是需要花费功夫的。因为设计的时候,就决定了房子的样式,房子需要的材料,房子的价格。这在程序设计表现为算法的设计。咱理想中想盖个那种大理石宫殿,豪华漂亮,里面有好看的书架,漂亮的小饰品,桌椅,等等,呵呵。算法就像是整个房子的框架。而好看的书架,桌椅,美女,就像是一个个的函数。有简单的函数,有复杂的函数。

算法的基本控制结构:

基本结构 说明 语句实现
顺序结构 就是一句一句往下读,毫无智能
选择结构

用来判断,可以根据条件选择的执行

就好像,丽丽喜欢你,婷婷也喜欢你。就要选择了

if(丽丽漂亮) 选丽丽

else 选婷婷

应该这样

if(丽丽比婷婷漂亮) 选丽丽

else 选婷婷

if(表达式1) 语句1

else 语句2

语句2可以为空,当语句2为空时,else可以不写

多重选择结构分为很多种:

嵌套的if机构:

if(表达式1) 

  if(表达式2) 语句1

  else  语句2

else

  if(表达式3) 语句3

  else 语句4

if…else if结构:

switch你语句:

也是选择结构

主要在每一次判断都是同一表达式的值的时候用,比如:

每次都要判断都是判断day这个变量的值,看下面的例子

循环

就是不停的执行语句,条件满足为止

例如:我隔一分钟吃一个馒头

程序如下:

吃几个就要写几个语句,麻烦,而且有时候并不知道吃几个才撑死。

所有用循环语句就比较简单:

从第一个开始,条件是直到撑死,语句就是吃一个馒头

for(表达式1;表达式2;表达式3)

语句

执行过程:

先计算表达式1的值,再就是表达式2(循环控制条件)的值,根据表达式的2的值看是否执行循环体,2为真,则执行循环体。每执行一次循环体后,计算表达式3的值。然后再计算表达式2的值,看是否执行循环

其中:

1,表达式1,2,3都可以省略,但分号不能省。

2,表达式2是循环的控制条件,如果省略,则循环无休止的进行

3,表达式1是给循环控制条件赋初值

coutinue 出现在循环体重,作用是结束本次循环,接着判断是否执行下一次循环
goto

用法如下:

goto 语句标号;

goto语句会破坏程序的结构,尽量少用。

简单选择

例:输入一个年份,判断是否为闰年。

算法,百度了下,闰年是这样算的,“四年一闰,百年不闰,四百年再闰”,小学学过,忘了。

如果输入的年份(数字)能被4,400,整除,但不能被100整除,就是闰年。试着写下程序。

程序如下:

#include<iostream.h>   

void main(void)

{    int year;                

      bool IsLeapYear;   

      cout<<"Enter the year:";

      cin>>year;

      IsLeapYear=((year%4==0&&year%100!=0)||(year%400==0));      

      if(IsLeapYear)

      cout<<year<<"is a LeapYear"<<endl;

      else

      cout<<year<<"is not a LeapYear"<<endl;

}

去运行下,看能运行否。郁闷,引号是中文的,不行。还有endl打成end1了。改下。

多重选择(嵌套if和if…else if)

例:比较两个数的大小。

算法:比较两个数,要么a>b,a<b,a=b.

程序如下:

#include<iostream.h>

void main()

{ int a,b,c;

   cout<<"Enter a and b:";

  cin>>a>>b;

  if(a>b) cout<<"a>b"<<endl;

else if(a<b) cout<<"a<b"<<endl;

else cout<<"a=b";

}

反正选择就是选择了。 记住选择的3种格式,就行了。

switch选择语句

switch语法结构 说明

switch选择语句的格式:

switch(表达式)

{case 常量表达式1:语句1

  case 常量表达式2:语句2

   ……

  case 常量表达式n:语句n

  default:语句n+1

首先计算switch表达式的值,然后再case语句中寻找相同的常量表达式,并由此开始执行

如果没找到,则从default执行

注意:各常量表达式的值不能相同,次序不影响结果

每个case语句应该加上break语句,否则会执行到switch结构的结束点

当若干分支需要执行同一种操作时,可以公用一组语句,使程序简化

例:输入一个0~6的整数,转换成星期输入。

算法:由于每次判断的都是星期数,同一个变量的值,就是同一个表达式的值,所有用switch语句比较适宜。

程序如下:

#include<iostream.h>

void main()

{ int day;

   cin>>day;

  switch(day)

{case 0:cout<<"Sunday"<<endl;break;

  case 1:cout<<"Monday"<<endl;break;

  case 2:cout<<"Tuesday"<<endl;break;

  case 3:cout<<"Wednesday"<<endl;break;

  case 4:cout<<"Thursday"<<endl;break;

  case 5:cout<<"Friday"<<endl;break;

  case 6:cout<<"Saturday"<<endl;break;

  default:cout<<"您输入的格式不正确"<<endl;break;

}}

又一个;写错了,看来,写代码的时候要注意格式问题,养成好习惯。

for循环

例,输入一个整数,求出他的所有因子。

算法,输入一个整数N,然后从1~N的除,能除尽的挑出来。

程序如下:

#include<iostream.h>

void main()

{int n,k;

  cout<<"请输入整数:"<<endl;

  cin>>n;

  for(k=1;k<n;k++)

    if(n%k==0) cout<<k<<" ";

   cout<<endl;

}

执行成功,遇到一个问题,我想每次输入的时候都检测n的数据类型,如果是int型,就可以执行,不是的话,就重新输入。不知道怎么实现。一会baidu一下。

继续阅读