昨天学习了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; /*把年份定义成整形的变量,将输入的年份放到year中,然后判断*/
bool IsLeapYear; /*定义一个布尔类型 IsLeapYear*/
cout<<"Enter the year:";/*输入年份,int型*/
cin>>year;/*输入控制字符,从键盘输入*/
IsLeapYear=((year%4==0&&year%100!=0)||(year%400==0)); /*逻辑表达式的值传给布尔型IsLeapYear*/
if(IsLeapYear)
cout<<year<<"is a LeapYear"<<endl;/*end1是刷新输出缓冲区,显示为换行。*/
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;/*输入a,b,c三个整数*/
cout<<"Enter a and b:";/*在屏幕上显示Enter a and b:*/
cin>>a>>b;/*从键盘依次输入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;/*定义两人个数,一个用来输入整数N,一个用来变量输入*/
cout<<"请输入整数:"<<endl;
cin>>n;
for(k=1;k<n;k++)
if(n%k==0) cout<<k<<" ";
cout<<endl;
}
执行成功,遇到一个问题,我想每次输入的时候都检测n的数据类型,如果是int型,就可以执行,不是的话,就重新输入。不知道怎么实现。一会baidu一下。