C++循环结构

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++循环结构相关的知识,希望对你有一定的参考价值。

#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
int main()
int s=1;
double n=1,t=1,pi=0;
while(fabs(t)>1e-7)
pi=pi+t;n=n+2;s=-s;t=s/n;
pi=pi*4;
cout<<"pi="<<setiosflags(ios::fixed)<<setprecision(6)<<pi<<endl;
return 0;
、、问一下,这句“while(fabs(t)>1e-7)”表示什么意思啊?
还有,这句“pi=pi+t”起什么作用?最后那句“setiosflags(ios::fixed)<<setprecision(6)”要与不要有什么关系?
谢谢各位学长学姐给个GOOD IDEA,答案 够详细的话我会加分的哟!!
对了,这个程序的题目是:
用下面的公式计算pi:
pi/4=1-1/3+1/5-1/7+1/9+.............

fabs 是求绝对值
fabs(t) > 1e-7 表示 t已经足够小
因为double类型不能直接和0比较,所以判断一个double是不是为0,需要用一个足够小的数来作判断,-1e-7 < t && t < 1e-7 。
pi = pi + t; 这个是利用pi的递推公式
setiosflags(ios::fixed)<<setprecision(6)是指定double类型输出的格式
参考技术A fabs(t)这是求浮点数绝对值的函数
pi=pi+t是累加t
setiosflags 是包含在命名空间iomanip 中的C++ 操作符,该操作符的作用是执行由有参数指定区域内的动作;
iso::fixed 是操作符setiosflags 的参数之一,该参数指定的动作是以带小数点的形式表示浮点数,并且在允许的精度范围内尽可能的把数字移向小数点右侧;
参考技术B pi=pi+t 使用来求和的,没循环一次,在现有pi的基础上加一次
setiosflags(ios::fixed)<<setprecision(6),是格式控制,表示输出结果保留六位小数,不要也没关系,只是小数点后面数位有所不同
while(fabs(t)>1e-7表循环结束条件,abs(t)>1e-7说的是当增加的一项,其绝对值(fabs)小于10的-7次方时,循环结束~

就是这样,希望对你有帮助~
参考技术C while(fabs(t)>1e-7)这句表示当t的绝对值大于1e-7时,循环开始执行,当这个条件不成立的时候,循环就终止了.
pi=pi+t;这句是把pi的当前值加上t之后得到的新值再重新赋给pi.也就是累加.
setiosflags(ios::fixed) 这个函数是用来设置输出格式的,setiosflags函数定义在头文件<iomanip>中,所以用到它的时候得包含这个头文件,fixed是一个流操纵符,它用来控制浮点数以定点格式输出,也就是输出一个浮点数,它总会显示六位小数,如果不够的话,它会补0.
setprecision也是一个函数,它会让输出的浮点数按指定的参数来显示小数位数,比如setprecision(3)它就会让浮点数输出时显示三位小数,其实这一句可以简化一下,写成下面这个样子:
cout << "pi=" << fixed << pi << endl;
因为fixed是让显示六位小数,而setprecision(6)还是让显示六位小数,有点重复.但如果setprecision接收的参数不是6的话,那它就不能省.比如:
cout << "pi=" << fixed << setprecision(5) << pi << endl;
此时输出的就是含5位小数了.
不要这两个函数的话,绝对是有区别的,当输出一个浮点数时,编译器只会输出六位有效数字,小数部分被截断时会发生四舍五入,同时不会显示后置0,例如:
double a = 3.141592;
double b = 3.141595;
cout << a << endl; // 输出3.14159, 一共六位有效数字
cout << b << endl; // 输出3.1416,发生四舍五入后不显示后置0
所以说这两个函数只是为了设置小数精度,也就是小数点后面有几位数.

C++学习--点滴记录004

4 程序流程结构

C++支持最基本的三种程序运行结构:顺序结构、选择结构、循环结构

  • 顺序结构:程序按顺序执行,不发生跳转
  • 选择结构:依据条件是否满足,有选择的执行相应功能
  • 循环结构:依据条件是否满足,循环多次执行某段代码

4.1 选择结构

4.1.1 if语句

作用: 执行满足条件的语句

if语句的三种形式

  • 单行格式if语句

  • 多行格式if语句

  • 多条件的if语句

  1. 单行格式if语句:if(条件) 条件满足执行的语句

示例:

#include <iostream>
using namespace std;


void test01()


    int num = 0;
    cout << "请输入一个数:" << endl;
    cin >> num;

    cout << "输入的数为: " << num << endl;

    //if语句
    if (num > 60)
    
        cout << "数大于60" << endl;
    



int main()

    test01();

    system("pause");
    return 0;

  1. 多行格式if语句:if(条件) 条件满足执行的语句 else 条件不满足执行的语句 ;

示例:

#include <iostream>
using namespace std;

void test01()


    int num = 0;
    cout << "请输入一个数:" << endl;
    cin >> num;

    cout << "输入的数为: " << num << endl;

    //if语句
    if (num > 60)
    
        cout << "数大于60" << endl;
    
    else
    
        cout << "数小于60" << endl;
    



int main()

    test01();

    system("pause");
    return 0;

  1. 多条件的if语句:if(条件1) 条件1满足执行的语句 else if(条件2)条件2满足执行的语句... else 都不满足执行的语句

示例:

#include <iostream>
using namespace std;


void test01()


    int num = 0;
    cout << "请输入一个数:" << endl;
    cin >> num;

    cout << "输入的数为: " << num << endl;

    //if语句
    if (num > 60)
    
        cout << "数大于60" << endl;
    
    else if(num>40)
    
        cout << "数大于40,小于60" << endl;
    
    else if (num > 20)
    
        cout << "数大于20,小于40" << endl;
    
    else
    
        cout << "数小于20" << endl;
    



int main()

    test01();

    system("pause");
    return 0;

4.1.2 三目运算符

作用: 通过三目运算符实现简单的判断

语法:表达式1 ? 表达式2 :表达式3

解释:

如果表达式1的值为真,执行表达式2,并返回表达式2的结果;

如果表达式1的值为假,执行表达式3,并返回表达式3的结果。

示例:

#include <iostream>
using namespace std;


void test01()


	int a = 10;
	int b = 20;
	int c = 30;

	c = a > b ? a : b;
	cout << "c = " << c << endl;

	(a > b ? a : b) = 100;

	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
	cout << "c = " << c << endl;



int main()

    test01();

    system("pause");
    return 0;

4.1.3 switch语句

作用: 执行多条件分支语句

示例:

#include <iostream>
using namespace std;


void test01()


	int score = 0;
	cout << "请输入分数" << endl;
	cin >> score;

	switch (score)
	
	case 10:
		cout << "10分" << endl;
		break;
	case 9:
		cout << "9分" << endl;
		break;
	case 8:
		cout << "8分" << endl;
		break;
	case 7:
		cout << "7分" << endl;
		break;
	case 6:
		cout << "6分" << endl;
		break;
	default:
		cout << "0分" << endl;
		break;
	



int main()

    test01();

    system("pause");
    return 0;

注意1:switch语句中表达式类型只能是整型或者字符型
注意2:case里如果没有break,那么程序会一直向下执行
总结:与if语句比,对于多条件判断时,switch的结构清晰,执行效率高,缺点是switch不可以判断区间

4.2 循环结构

4.2.1 while循环语句

作用: 满足循环条件,执行循环语句

语法: while(循环条件) 循环语句

解释:只要循环条件的结果为真,就执行循环语句

示例:

#include <iostream>
using namespace std;


void test01()


	int num = 0;
	while (num < 10)
	
		cout << "num = " << num << endl;
		num++;
	



int main()

    test01();

    system("pause");
    return 0;

4.2.2 do…while循环语句

作用: 满足循环条件,执行循环语句

语法: do 循环语句 while(循环条件);

注意: 与while的区别在于do…while会先执行一次循环语句,再判断循环条件

示例:

#include <iostream>
using namespace std;


void test01()


	int num = 0;

	do
	
		cout << num << endl;
		num++;

	 while (num < 10);



int main()

    test01();

    system("pause");
    return 0;


总结:与while循环区别在于,do…while先执行一次循环语句,再判断循环条件

4.2.3 for循环语句

作用: 满足循环条件,执行循环语句

语法: for(起始表达式;条件表达式;末尾循环体) 循环语句;

示例:

#include <iostream>
using namespace std;


void test01()


	for (int i = 0; i < 10; i++)
	
		cout << i << endl;
	



int main()

    test01();

    system("pause");
    return 0;

4.2.4 嵌套循环

作用: 在循环体中再嵌套一层循环

示例:

#include <iostream>
using namespace std;


void test01()


	for (int i = 0; i < 10; i++)
	
		for (int j = 0; j < 10; j++)
		
			cout << "*" << " ";
		
		cout << endl;
	



int main()

    test01();

    system("pause");
    return 0;

4.3 跳转语句

4.3.1 break语句

作用: 用于跳出选择结构或者循环结构

break使用的时机:

  • 出现在switch条件语句中,作用是终止case并跳出switch
  • 出现在循环语句中,作用是跳出当前的循环语句
  • 出现在嵌套循环中,跳出最近的内层循环语句

示例1:

#include <iostream>
using namespace std;


void test01()


	for (int i = 0; i < 10; i++)
	
		if (i == 5)
		
			break; //跳出循环语句
		
		cout << i << endl;
	



int main()

    test01();

    system("pause");
    return 0;


示例2:

#include <iostream>
using namespace std;


void test01()


	for (int i = 0; i < 10; i++)
	
		for (int j = 0; j < 10; j++)
		
			if (j == 5)
			
				break;
			
			cout << "*" << " ";
		
		cout << endl;
	



int main()

    test01();

    system("pause");
    return 0;

4.3.2 continue语句

作用:循环语句中,跳过本次循环中余下尚未执行的语句,继续执行下一次循环

示例:

#include <iostream>
using namespace std;


void test01()


	for (int i = 0; i < 10; i++)
	
		if (i % 2 == 0)
		
			continue;
		
		cout << i << endl;
	



int main()

    test01();

    system("pause");
    return 0;

注意:continue并没有使整个循环终止,而break会跳出循环

希望本文对大家有帮助,上文若有不妥之处,欢迎指正

分享决定高度,学习拉开差距

以上是关于C++循环结构的主要内容,如果未能解决你的问题,请参考以下文章

初识C++之程序流程结构

C++基础--循环初涉

C++基础2(运算符程序结构流程数组)

C++基础入门丨4. 程序结构有哪几种?——程序流程结构

C++基础入门丨4. 程序结构有哪几种?——程序流程结构

C++基础入门丨4. 程序结构有哪几种?——程序流程结构