C++基础语法二(双更)
昨天通宵刷完了《龙与虎》,只有一句话:龙虎一生推!!!
一、循环语句
1、for循环
上 代 码
#include<iostream>
using namespace std;
int main()
{
int i;
for (i = 0/*初始状态*/; i < 5/*条件判断*/; i++/*修正变量*/)
{
cout << "Hello.\n";//循环体
}
}
与c语言一样,括号内第一个语句i=0是循环变量的初始化。第二个语句i<5,是循环条件,当条件为真时,执行for后面{}花括号内的语句,条件为假时,说明循环结束,跳出for循环。执行下一条语句。第三句是对循环变量的修正,也就是对循环变量的改变。
有一点很有趣,就是因为C++与C一样,是以分号;来划分一个代码命令的,所以for循环的分号出现在循环体里而不是for的括号后面。
有趣的来了,计算1加到100的结果(很多种方法):
一
#include<iostream>
using namespace std;
int main()
{
int i,sum=0;
for (i = 1; i <= 100; i++)
sum += i;
cout << sum<<endl;
}
这里注意一下,endl可加可不加
endl:代码结束并打一个回车。
二
#include<iostream>
using namespace std;
int main()
{
int i,sum=0;
for (i = 1; i <= 100; )
sum += i++;
cout << sum<<endl;
}
这里将循环变量的赋值与累加赋值合并,进而可以省略for括号后的修正变量部分
三
#include<iostream>
using namespace std;
int main()
{
int i,sum=0;
for (i = 1; ; i++)
{
sum += i;
if(i=100)
break;
}
cout << sum<<endl;
}
这一段,很巧妙地运用了上一篇C++基础语法一里面的break内容,因为for中没有判断条件,所以巧妙地运用了if判断语句去实现在适当的时机去停止该循环。
四
#include<iostream>
using namespace std;
int main()
{
int i=1,sum=0;
for (;i<=100 ; i++)
{
sum += i;
}
cout << sum<<endl;
}
这次在循环外定义并给其赋初值,可以但是不推荐这么去做因为变量不明确(当循环体复杂的时候
2、while循环
while循环:
还是用累加的例子:
#include<iostream>
using namespace std;
int main()
{
int n=1;
while(i<=100)
sum+=i++;
cout<<sum<<endl;
}
当while的括号内判定为真的时候,执行循环,并跳回循环的判定。直到括号后的判定为假,才跳出循环。
do-while循环:
do-while循环,与前面的循环不一样,是先执行循环体后做判断。
故:do-while循环至少被执行一次。
int sum=0,i=1;
do
{
sum+=i++
}
while(i<=100);
像这样,也能求出累加的和。
但是要注意局部变量和全局变量,在do内定义的变量只能用在do内,不能用在其他的地方,否则会出错。
二、输入输出语句
1、标准的输入输出:
就是很简单的:cin>>就是从输入设备输入(键盘)
cout>>就是输出到输出设备(屏幕)
2、流状态:
showpos | 在正数前显示+ |
---|---|
showbase | 显示16/8进制前的0x或0 |
uppercase | 16进制字母强制大写 |
showpoint | 浮点数即使小数点后均为0也加小数点 |
boolalpha | 逻辑值1/0用true、false表示 |
left | 左对齐 |
right | 右对齐 |
dec | 十进制显示整数 |
hex | 16进制显示整数 |
oct | 八进制显示整数 |
fixed | 定点格式输出 |
scientific | 科学计数法输出 |
举个栗子:
cout<<hex<<18<<" "<<shoubase<<18 得到:12 0x12
若想取消操作流,就用noshowpos等等之类(就是在前面加一个no),另外,left和right,dec、oct、hex,这两组相互对立,设置了一个就取消了另外一个。
#include<iostream>
using namespace std;
int main()
{
int i,sum=0;
for (i = 1; i <= 100; i++)
sum += i;
cout <<hex<< sum<<"\n";
cout << i;
}
**像这样,输出就是13ba和65!而不是13ba和101!**因为cout已经在第一次出现的时候赋予了hex流,所以后面的i的输出也是16进制。若想为十进制,则需改为:
cout<<hex<<sum<<"\n";
cout<<dec<<i;
还有还有!!!
width(int) | 设置显示宽度 |
---|---|
fill(char) | 设置填充字符 |
precision(int) | 设置有效位数(普通)精度(定点或科学计数法) |
栗子:
cout.width(5);
cout.fill(‘s’);
cout<<23<<23
输出为:sss2323
注意:
输出的时候只有前面的23受影响,而后面的不受影响。
另外:也可以调用< iomanip >库来更直观表达:
setw(int) | 设置显示宽度 |
---|---|
setfill(char) | 设置填充字符 |
setprecision(int) | 设置有效位数(普通)精度(定点或科学计数法) |
具体用法:cout<<setw(6)<<setfill(’ ′ ) < < 27 得 到 : ')<<27 得到: ′)<<27得到:$$$$$27
三、转移语句
1、break语句
break用于循环语句for、while、do-while,和开关语句switch中。
常见的是在嵌套中,跳出当前if判断语句作用。
但是注意:break只跳出一个循环
栗子:
for(int i; ;)
{
for(;;)
{
......
if(i=1)
break;
}
a=1;//break跳出到这里
}
2.continue语句
直接举栗子:
for(int n=100;n<=200;++n)
{
if(n%3==0)
contimue;
cout<<n<<endl;
}
当3被整除时,执行continue,结束本次循环,即跳过cout语句。
但是一般用if(n%3!=0)代替。
continue不是必须,但可以为了逻辑上的清晰和美观(看自己啦~)。
3.go to语句(妃常惨
(在?为什么迫害真妃?《辉夜》梗)
几乎用不到的跳跃性语句
用法就不说
但是只用在一个地方
就是有很多层嵌套时,break跳出过于麻烦,可以用go to直接跳转到别的地方。
栗子:
for(...)
{for(...)
{ if(...)
go to End;
else
{
......
}
}
}
End:
..........
好啦今天先到这里了
三千多字打了将近两个半小时
下一篇有可能是一些总结性的栗子
或者
是下一章的内容,数据类型
一切随缘
最后
龙虎一生推!!!!!!(推荐大家看一下那个动漫,很治愈的。)