C++1——控制语句章节

一、C++语言的控制语句分为三类: 顺序控制语句 选择控制语句 循环控制语句

1.顺序语句

1)赋值号“=”,与逻辑等号“==”区别。

例题1:求 2x2 + 8x + 6 = 0的根

根据求根公式x1,2 =−b±√b^2−4ac/2a,先对常量a、b、c赋值,然后再计算x1和x2

#include<iostream> 
using namespace std; 
int main() 
{     
double a = 2, b = 8, c = 6;     
double x1, x2;    
 x1 = ( -b + sqrt(b * b – 4 * a * c )) / ( 2 * a );     
x2 = ( -b - sqrt( b * b – 4 * a * c )) / ( 2 * a );     
cout << "x1 =" << x1 << "\t  x2 =" << x2 <<endl;     r
eturn 0; 
}

例题2:交换两个变量的值

注:需要一个中间变量temp;

#include<iostream>
using namespace std;
int main()
{
	int a = 3, b = 5, temp;
	temp = a; 
	a = b;
	b = temp;
	cout << "a = " << a << "\tb = " << b <<endl;
	return 0;
}

//使用库函数实现交换
#include<iostream>
using namespace std;
int main()
{
	int a = 3, b = 5;
	swap(a, b);
	cout << "a = " << a << "\tb = " << b <<endl;
	return 0;
}

 例题3:提取一个整数n的百位a、十位b和个位c

#include<iostream>
using namespace std;
int main()
{
	int n;
	cout << "输入一个整数:";
	cin >> n;
	int a = (n / 100) % 10;
	int b = (n / 10) % 10;
	int c = n)% 10;
	cout << "百位数是" << a << endl;
	cout << "十位数是" << b << endl;
	cout << "个位数是" << c << endl;
	return 0;
}

2.选择语句

选择控制语句——单分支选择结构 双分支选择结构 多分支的if-else-if结构 switch语句

 例题1:单分支选择结构——给定的三个数,求最大数的平方

if(条件表达式)

{     若干语句1;

}

若干语句2

#include<iostream>
using namespace std;
int main()
{ 
	int a = 5, b = 9, c = 7, max;
	max = a;
	if (b>max) 
	{
		max = b; 
	}
	if (c>max) 
	{ 
		max = c; 
	}
	cout << "最大数的平方为:" << max * max <<endl;
	return 0;
}

2.双分支选择结构

if(条件表达式)

{     语句块1; }

else

{     语句块2; }

语句块3;

例题:计算: y =

#include<iostream>
using namespace std;
int main()
{
	double x, y;
	cin >> x;
	if( x < 5 && x > -5 )
		y = sqrt(25 - x * x);
	else
		y = sqrt(x * x - 25);
	cout << "y = " << y << endl;
	return 0;
}

 3.多分支的if-else-if结构

if (条件表达式1)   

 {程序段1;}

else if (条件表达式2)   

 {程序段2;}    

…      

else if (条件表达式n)     

{程序段n;}

else     

{程序段n+1;}

例题:根据月份判断季节

#include<iostream>
using namespace std;
int main()
{ 
	int month ;
	cin>>month;
	if(month == 12 || month == 1 || month == 2) 
		cout << month << "月是冬天" << endl;
	else if(month == 3 || month == 4 || month == 5) 
		cout << month << "月是春天" << endl;
	else if(month == 6 || month == 7 || month == 8) 
		cout << month << "月是夏天" << endl;
	else if(month == 9 || month == 10 || month == 11) 
		cout << month << "月是秋天" << endl;
	else 
		cout << "不合法的月份";
	return 0;
}

4.switch语句

定义:switch语句是一个多分支选择语句,也叫开关语句。它可以根据一个整型表达式有条件地选择一个语句执行。

switch(变量名称或表达式)

{

case 常量1:

语句1;  

break;

case 常量2:

语句2;

break;

default:

语句N;

 break;

}

  • switch小括号中的控制表达式结果必须是整型或字符
  • case后面可以为常数,也可以是常数计算的表达式。但不能是变量, 整形变量也不可以!
  • break表示跳出整个switch语句,不要把它丢了!!!

三、循环语句

  • for循环语句
  • while循环语句
  • 循环嵌套

1.for循环语句

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

{    

循环体语句块;

}

表达式1:循环变量赋初值   表达式2:循环条件   表达式3:增量表达式

例题1:计算从1加到100的和

#include<iostream>
using namespace std;
int main() 
{
	int sum=0; 
	for(int i = 1; i <= 100; i++)
	{
		sum = sum + i;
	}
	cout << "1 + 2 + 3 + ... + 100 = " << sum << endl;
	return 0;
}

例题:输入10个整数,统计偶数个数

#include<iostream>
using namespace std;
int main()
{
	int x, cnt = 0;
	for (int i=0; i<=9; i++)
	{
   		cin>>x;
		if ( x % 2 == 0 )
		{
			cout << x << "是偶数" << endl;
			cnt++;
		}
	}
	cout << "共有" << cnt << "个偶数" << endl;
	return 0;
}

while循环语句

1)while语句

2)do-while语句

 1)例题:老汉卖瓜

老汉卖西瓜,第一天卖西瓜总数的一半多一个,第二天卖剩下的一半多一个
以后每天都是卖前一天剩下的一半多一个,到第10天只剩下一个。求西瓜总数是多少? 

算法分析:
设共有x个西瓜,卖一半多一个后,还剩下x/2 - 1个
每天的西瓜数可以用迭代表示: xn = (xn+1 + 1) * 2
卖了9天之后(第10天),x = 1
这是可以用循环来处理的迭代问题

#include<iostream>
using namespace std;
int main()
{
	//第10天的西瓜是1个,x代表前一天的西瓜数,y代表今天的西瓜数,
	//由y=x-x/2-1得x=2*(y+1)
	int i=1, x=1;
	 //循环9次,每次都求出前一天的西瓜数
	while(i<=9)
	{
		x=(x+1)*2; //求出前一天的西瓜数
		i++;
	}
	cout << " x = " << x << endl;
	return 0;
}

转向语句

1)break语句

跳出switch结构,继续执行后续语句

终止整个循环,继续执行后续语句

2)continue语句

终止单次循环,继续执行下一次循环

———————————————————————————————————————————

例题练习:

求3位数所有的“水仙花数”
水仙花数是指一个 3 位数 ( n≥3 )
它的每个位上的数字的 3 次幂之和等于它本身
(例如:1^3 + 5^3 + 3^3 = 153) 

#include<iostream>
using namespace std;
int main()
{
	for(int i=100;i<=999;i++)
	{
		int a=i/100;
		int b=(i/10)%10;
		int c=i%10;
		if(i==a*a*a+b*b*b+c*c*c)
			cout<<i<<endl;
	}
	return 0;
}

用*打印三角形

int main()
{
	for (int i = 1; i <= 6; i++) //6次循环输出6行
	{ 
		//每次循环,输出6-i个空格
		for (int j = 1; j <= 6 - i; j++)
			cout << " "; 
		//每次循环,输出2*i-1个*
		for (int j = 1; j <= 2 * i - 1; j++)
			cout << "*"; 
		cout << endl;
	}
	return 0;
}

【例】求2~100之间的素数
算法分析:判断数字n是否为素数
只需检验n是否能被2、3、4、…、n1/2整除。
n % k == 0 (k = 2,3,4,……,sqrt(n))
#include<iostream>
using namespace std;
int main()
{
	for (int i = 2; i <= 100; i++)		//依次判断2~100是否为素数
	{
		bool isPrime = true;
		for (int j = 2; j <= sqrt(i); j++)	//判断i是否能被某个因数整除
		{
			if (i % j == 0)
			{
				isPrime = false;
				break;
			}
		}
		if (isPrime)		//如果isPrime仍为真,说明i是素数
			cout << i << '\t';
	}
	cout << endl;
	return 0;
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值