鸡啄米:C++编程入门系列之六(算法的基本控制结构之选择结构)
转载自:
http://www.jizhuomi.com/software/34.html
上一讲鸡啄米为大家讲了运算符和表达式的知识,这一讲鸡啄米主要讲算法基本控制结构中的选择结构,同时教大家写比较简单的程序。
为了能写出简单的程序并看见它们的输出效果,鸡啄米先讲下数据的输入和输出。数据从一个对象到另一个对象的流动我们一般称之为“流”,比如程序中的数据在屏幕上显示出来,我们可以想成数据从程序流向屏幕,就是输出流。从键盘输入数据就是输入流了。从流中获取数据叫做提取操作,向流中添加数据叫做插入操作。cin是系统预定义的输入流,用来处理标准输入即键盘输入。cout是预定义的输出流,用来处理标准输出,即屏幕输出。
“<<”是预定义的插入符,它用在cout上可以实现屏幕输出。使用形式如下:cout<<表达式<<表达式...。这里可以连着多个表达式,输出多个数据到屏幕。这里的表达式可以是很复杂的表达式,系统会计算出这些表达式的值只把结果传给插入符<<,然后显示到屏幕上。例如,cout<<"a+b="<<a+b;会把"a+b="这个字符串和a+b的计算结果输出到屏幕。如果a=1,b=2;则屏幕上显示a+b=3。
“>>”是提取符,用到cin上用来把键盘上输入的数赋值给变量。使用形式为:cin>>表达式>>表达式...。这里的提取符也可以有多个,每个后边跟一个表达式,这里的表达式一般是用来存放输入值的变量。比如,int a,b; cin>>a>>b;后面这个语句要求从键盘上输入两个整型数,两个数之间用空格分隔,如果输入 3 4,则变量a的值为3,b的值为4。
再介绍几个操纵符,操纵符用来把输出值以特殊的格式显示出来。比如setw(int)用来设置域宽,就是设置数值的显示位数,setprecision(int)用来设置浮点数的小数位数(包括小数点),endl插入换行符,并刷新流。还有Dec,Hex,Oct是要求以几进制显示。
下面鸡啄米开始讲算法的基本控制结构。算法的基本控制结构包括顺序结构、选择结构和循环结构。顺序结构就是按照事物的逻辑一条语句一条语句的写下来,顺序执行,就像流水账,这种结构最常见,也最简单,这里就不讲了。这一讲鸡啄米主要讲选择结构,循环结构下一讲会讲到。
大家想想,如果有这样一个问题,若x<0,则y=-1,若x=0,则y=0,若x>0,则y=1。这里涉及到好几种选择,顺序结构肯定不行了,就要用到选择结构。
一.用if语句实现选择结构
if语句专门用来实现选择结构,使用形式为:
if (表达式)
语句1
else
语句2
这个结构的执行顺序是,先计算表达式的值,如果为true,则执行语句1,否则就执行语句2。比如,
if (x>y)
cout<<x;
else
cout<<y;
这段程序可以用来输出x和y中比较大的那个数。if语句中的else和语句2可以没有,变成:if (表达式) 语句。比如,if (x>y) cout<<x。
这里鸡啄米给大家一个程序例子,大家可以在vs2010中点File->New->Project创建一个Win32 Console Application。比如创建的新工程名叫Test,然后找到Test.cpp,里面有_tmain函数,实际上就是鸡啄米前面说的main函数,是程序的入口函数。我们就在这个main函数里写一段代码,用来判断输入一个年份时这个年份是不是闰年。大家知道,可以被4整除不能被100整除,或者能被400整除的年份都是闰年。下面是程序:
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int nYear;
bool bIsLeapYear;
cout<<"Enter the year:";
cin>>nYear;
bIsLeapYear = ((nYear%4==0 && nYear%100!=0) || (nYear%400==0));
if (bIsLeapYear)
cout<<nYear<<"is a leap year."<<endl;
else
cout<<nYear<<"is not a leap year."<<endl;
return 0;
}
因为vs2010里已经没有以前iostream.h文件,所以这里包含了iostream文件,这是最新的C++标准,里面同样包含了输入输出函数,using namespace std是说要用到std名字空间,名字空间鸡啄米以后会讲。开始debug运行,屏幕上会显示:Enter the year:,然后我们输入2000,点回车屏幕上接着显示:2000 is a leap year.可能你看不到这一句窗口就消失了,没关系,可以点debug->start without debugging,这样窗口就不会消失了。
二.多重选择结构
有些问题可能需要我们进行多次判断,这样就可以有几种方法:
1.嵌套的if语句
使用的语法形式:
if(表达式1)
if(表达式2) 语句1
else 语句2
else
if(表达式3) 语句3
else 语句4
语句1、2、3、4可以是复合语句。每一层的if都要与else配对,如果省略掉一个else则要使用{}把这一层的if语句括起来。鸡啄米建议大家写程序的时候最好每层都用大括号括起来这样会大大减少出错的概率,也比较整齐,即使是熟手也一样。鸡啄米再给大家举个例子:
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int x,y;
cout<<"Enter x and y:";
cin>>x>>y;
if (x!=y)
{
if (x>y)
cout<<"x>y"<<endl;
else
cout<<"x<y"<<endl;
}
else
{
cout<<"x=y"<<endl;
}
return 0;
}
运行这个程序,屏幕上会显示,Enter x and y:,然后输入3 5,按回车接着会显示x<y。
2.if...else if语句
若if语句的嵌套都在else分支下,就可以使用if...else if语句。使用的语法形式为:
if (表达式1) 语句1
else if (表达式2) 语句2
else if (表达式3) 语句3
...
else 语句n
这里的执行逻辑就是,如果表达式1为true,则执行语句1,如果表达式1为false,且表达式2为true则执行语句2,如果表达式1、表达式2为false,且表达式3为true则执行语句3...就这样一层一层判断着执行下去。
3.switch语句
我们进行判断选择的时候,有可能每次都是对同一个表达式的值进行判断,那么就没有必要在每一个嵌套的if语句里都计算一下它的值,而是使用switch来解决这个问题。语法形式为:
switch (表达式)
{
case 常量表达式1: 语句1
case 常量表达式2: 语句2
...
case 常量表达式n: 语句n
default: 语句n+1
}
此类语句的执行顺序是,先计算表达式的值,然后在case语句中寻找与之相等的常量表达式,跳到此处开始执行,若没有与之相等的则跳到default开始执行。使用switch语句时要注意以下几点:这些常量表达式的值不能相同,顺序可以随便;每个case语句的最后都要加break语句,不然会一直把下面所有的语句执行完;switch括号里的表达式必须是整型、字符型和枚举型的一种;每个case下的语句不需要加{};如果多个case下执行一样的操作,则多个case可以共用一组语句,比如
case 1:
case 2:
case 3: a++;
break;
鸡啄米再给大家举个switch的例子。如果整型变量a为0则输出“小鸡”,如果为1则输出“小啄”,如果为2则输出“小米”,其他情况下输出“鸡啄米”。程序如下:
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int a;
cout<<"Enter a:";
cin>>a;
switch (a)
{
case 0:
cout<<"小鸡"<<endl;
break;
case 1:
cout<<"小啄"<<endl;
break;
case 2:
cout<<"小米"<<endl;
break;
default:
cout<<"鸡啄米"<<endl;
break;
}
return 0;
}
运行时屏幕显示Enter a:,我们输入2,则会接着显示“小米”。
这一讲鸡啄米首先讲了输入输出流对象,然后讲了选择控制结构,举了几个程序例子,大家可以按照鸡啄米的程序上机调试运行下,也可以自己在此基础上改改程序然后看看结果是否如你所想,大家先找找编程的感觉,在编程入门的时候不要着急。
鸡啄米:C++编程入门系列之六(算法的基本控制结构之选择结构)相关推荐
- 鸡啄米:C++编程入门系列之五(运算符和表达式)
转载自: http://www.jizhuomi.com/software/32.html 上一讲鸡啄米给大家讲了一些数据类型,这一讲主要讲解编程入门知识-运算符和表达式.运算符,顾名思义,就是用于计 ...
- 鸡啄米:C++编程入门系列之二(原码、反码与补码)
转载自: http://www.jizhuomi.com/software/23.html 上一节进制数中鸡啄米讲了二进制.八进制.十进制和十六进制数的表示方法和相互转换关系.这节主要讲解二进制的几种 ...
- c语言类静态数据成员函数,鸡啄米:C++编程入门系列之二十一(C++程序设计必知:类的静态成员)...
鸡啄米在上一讲数据和函数中讲到,函数之间共享数据也就是此函数访问彼函数的数据主要是通过局部变量.全局变量.类的数据成员.类的静态成员及友元实现的,前三个已经讲过了,这一讲鸡啄米来讲讲静态成员.静态成员 ...
- 鸡啄米VS2010/MFC编程入门教程——学习1初次接触
2015年5月12日23:13:44 2013年~2014年,在九固开发伺服上位机的时候,刚开始的时候还想用VC6.0开发的,但是在WIN7下,各种不兼容,索性干脆直接换了VC2010. 原本想装VS ...
- 鸡啄米之VS2010/MFC编程入门之二十四(常用控件:列表框控件ListBox)
目录 一.目的: 1.点击列表框某个变量后,编辑框就显示出来这个变量名字 一.参考: 1.VS2010/MFC编程入门之二十四(常用控件:列表框控件ListBox) ①总结:good:亲测有效,适合多 ...
- 鸡啄米vc++2010系列11(非模态对话框的创建)
上一节鸡啄米讲了模态对话框及其弹出过程,本节接着讲另一种对话框--非模态对话框的创建及显示. 鸡啄米已经说过,非模态对话框显示后,程序其他窗口仍能正常运行,可以响应用户输入,还可以相互切换.鸡啄米会将 ...
- 鸡啄米vc++2010系列40(文档、视图和框架:分割窗口)
分割窗口概述 分割窗口,顾名思义,就是将一个窗口分割成多个窗格,在每个窗格中都包含有视图,或者是同一类型的视图,或者是不同类型的视图. MFC分割窗口的方式有两种,动态分割和静态分割. 动态分割窗口通 ...
- 鸡啄米vc++2010系列35(工具栏资源及CToolBar类)
工具栏简介 工具栏一般位于主框架窗口的上部,菜单栏的下方,由一些带图片的按钮组成.当用户用鼠标单击工具栏上某个按钮时,程序会执行相应的操作,如果鼠标没有点击,只是停留在某个按钮上一会后,会弹出一个小窗 ...
- 鸡啄米vc++2010系列12(属性页对话框)
前面讲了模态对话框和非模态对话框,本节开始鸡啄米讲一种特殊的对话框--属性页对话框.另外,本套教程所讲大部分对VC++各个版本均可适用或者稍作修改即可,但考虑到终究还是基于VS2010版本的,所以将& ...
- 鸡啄米vc++2010系列27(列表视图控件List Control 上)
列表视图控件简介 列表视图控件List Control同样比较常见,它能够把任何字符串内容以列表的方式显示出来,这种显示方式的特点是整洁.直观,在实际应用中能为用户带来方便. 列表视图控件是对前面讲到 ...
最新文章
- java 1.8 tar.gz_linux安装java1.8
- [Android工具]安卓百度云盘百度网盘资源搜索工具,安卓网盘搜索软件
- sql注入-error、boolean、time-based and 宽字节
- boost::geometry::detail::overlay::get_turn_info用法的测试程序
- cocos2d-x游戏开发(十四)用shader使图片背景透明
- java c++ python哪个好_程序员学java好还是python语言好 c++又如何
- 9_flutter_SimpleDialog(对话框),FloatingActionButton(浮动按钮),Slider(滑动器)
- Linux基本信息查看命令
- 常用HSQL汇总(不定时添加)
- 简单小方法教你如何快速提高记忆力
- 原生js获取元素非行内样式属性的方法
- 免费linux虚拟空间,linux免费虚拟主机(linux搭建虚拟主机)
- 苹果系统模拟器_开发者成功在苹果MacBook上通过模拟器正常运行Windows 10X版
- 计算机开机启动过程详解
- android和ios传文件怎么打开方式,安卓怎么给iPhone传文件?文件互传教程
- RCWL0516微波雷达传感器(基于传感器管理组件)
- 联想u310 u410已组好RAID即启用了IRST而因意外不能进入系统要(重装系统方法)
- go-zero 实战之 blog 系统
- Java:Random函数及其种子的作用
- 微信支付关键点技术解析