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(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语句
- 单行格式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;
- 多行格式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;
- 多条件的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++循环结构的主要内容,如果未能解决你的问题,请参考以下文章