新手小白 学习C++ 记录贴
打卡第一天:Basic Programming Statements
第一次使用 CSDN 写博客。开这个帖子,每天学习一部分C++内容顺便复习一下英语(手动狗头)。
1.Declarative Statements
例如:求一个球体的体积。
做法:先定义半径变量,输入半径值;再定义一个结果变量,用于存放计算结果;最后输出结果。(或者直接输出结果)
#include <iostream>
using namespace std;
void s();
int main(){
s();
}
void s(){
double r;
cout<<" Please input radis of ball: ";
cin>>r
if(r < 0) return; //如果输入的半径小于0,则结束函数运行。
cout<<" The Sphere of ball is "<< 4/3*3.14*r*r*r<<"\n";
}
注意点:使用函数前,要进行声明。C++中任何名称再使用之前都要声明。
2.Conditional Statements
例如:比较两者大小
int max(int a, int b){
if(a > b)
return a;
return b; //此处可以省略 else
}
例如:判断是否为毕业班学生
//利用 条件表达式
cout<<((year>=2016 && year<=2020)? "" : "Not")<<"Graduate\n";
注意点1:若条件值为0,则条件为假;若条件值为非0,则条件为真。
注意点2:在 if 语句的条件中定义的变量,只能在整个 if 语句范围内使用,否则无法通过编译
例如:对学生成绩进行分类
switch(grade){
case'A':cout<<"90 ~ 100\n";
break;
case'B':cout<<"80 ~ 89\n";
break;
case'C':cout<<"70 ~ 79\n";
break;
case'D':cout<<"60 ~ 69\n";
break;
case'E':cout<<"< 60\n";
break;
default:cout<<"404 Not Found!\n";
}
注意点1:最后一个case分支可以省略break语句。
注意点2:switch可以进行嵌套,其中case与default标号是与包含它的最小的switch相联系的。
3.Loop Statements
例如:求表达式1+2+3+···+100的值
int sum = 0;
for(int i = 1; i <= 100; i++){
sum += i;
}
cout<<sum<<endl;
//还可以写成
int sum = 0;
for(int i = 1; i <= 100; )
sum += i++;
cout<<sum<<endl;
//还可以写成
int sum = 0;
for(int i = 1; ; i++){
sum += i;
if(i>100) break;
}
cout<<sum<<endl;
//还可以写成
int sum = 0, i = 1;
for( ; i <= 100; i++){
sum += i;
}
cout<<sum<<endl;
例如:求表达式 n²-12n-46(n>0)在n取何值的时候为正。
int n = 1;
while(1){
if(n*n-12*n-46>0)
break;
else
++n;
}
cout<<n<<endl;
例如:输出如下图形:-------A
------------------------------A A
----------------------------- A A A
----------------------------- A A A A
做法:一共四行,每行增加一个字符,所以循环应该4次,每次输出一行,其循环模式可以写为:for(int i = 1; i <= 10; ++i){
------------------------------ 输出第 i 行;
------------------------------ 换行;
--------------------------- }
行 | A的数量 |
---|---|
1 | 1 |
2 | 2 |
3 | 3 |
4 | 4 |
#include<iostream>
using namespace std;
int main(){
for(int i = 1; i <= 4; i++){
for(int j = 1; j <= i; j++){ //输出第 i 行,其长度依赖于i
cout<<"A";
}
cout<<endl; //换行
}
}
例如:输出如下图形:------- A A A A A A A
---------------------------------A A A A A
----------------------------------- A A A
--------------------------------------A
做法:一共四行,先输出若干个空格,在输出若干个A,接着换行。
第 i 行 | 空格数 | A的数量 |
---|---|---|
1 | 0 | 7 |
2 | 1 | 5 |
3 | 2 | 3 |
4 | 3 | 1 |
可以得出结论:第 i 行的空格数为i-1,A的数量为9-2i
#include<iostream>
using namespace std;
int main(){
for(int i = 1; i <= 5; ++i){
for(int j = 1; j <= i-1; ++j) //输出 空格
cout<<"";
for(int k = 1; k <= 9-2*i; ++k) //输出 字符A
cout<<"A"
cout<<endl; //换行
}
}
例如:输出如下图形:--------------------- A
--------------------------------------- A B C
------------------------------------ A B C D E
----------------------------------A B C D E F G
做法:一共四行,先输出若干个空格,在输出若干个字符,接着换行。
第 i 行 | 空格数 | 字符的数量 |
---|---|---|
1 | 3 | 1 |
2 | 2 | 3 |
3 | 1 | 5 |
4 | 0 | 7 |
可以得出结论:第 i 行的空格数为4-i,A的数量为2i-1
#include<iostream>
using namespace std;
int main(){
for(int i = 1; i <= 4; ++i){
for(int j = 1; j <= 4-i; ++j) //输出 空格
cout<<"";
for(int ch = 'A'; ch <= 'A'+2*i-1; ++ch) //输出 字符
cout<<ch
cout<<"\n"; //换行
}
}
例如:判断一个数是否为素数
#include<iostream>
using namespace std;
int main(){
cout<<"Please input a number:\n";
int m;
cin>>m;
for(i = 2; i < m; ++i)
if(m % i == 0){
cout<<m<<"is not a prime.\n";
}
cout<<m<<"is a prime.\n";
}
#include<iostream>
#include<cmath>
using namespace std;
int main(){
cout<<"Please input a number:\n";
int m;
cin>>m;
double sqrtm = sqrt(m * 1.0);
for(int i = 2; i <= sqrtm; ++I)
if(m % i == 0){
cout<<"is not a prime.\n";
return 1;
}
cout<<m<<"is a prime.\n";
}
4.I/O Statements
例如:上述倒三角形用流状态来写
#include<iostream>
#include<iomanip>
using namespace std;
int main(){
for(int n = 1; n <= 10; ++n)
cout<<setfill('')<<setw(n)<<""
<<setfill('A')<<setw(9-2*n)<<"A"<<endl;
}
例如:将输入文件a.in的内容复制到输出文件a.out
#include<fstream>
using namespace std;
int main(){
ifstream in("a.in"); //定义输入流in
ofstrean out("a.out"); //定义输出流out
for(string str; getline(in, str); ) //从输入文件流中读入一行数据放到string变量str中
out<<str<<endl;
}
5.Move Statements
例如:输出1~100中不能被3整除的数
for(int n = 1; n <= 100; ++n)
if(n % 3 == 0)
continue;
cout<<n<<endl;
}
注意点:continue语句只结束本次循环的执行,而不终止整个循环;而break语句则是结束整个循环,不再进行循环条件判断。