初始c++
输入与输出
一、输入与输出
例子:
#include <bits/stdc++.h>//万能头文件
using namespace std;//std标准
int main()//主函数
{
cout << "Hello World"<<endl;//输出,输出语句是以“;”结尾的
//cout<< "Hello";
return 0;//程序结束
}
1.输出语句:cout<<…;
cout<<1+1<<endl;//输出数字,1+1可进行运算,结果为2
cout<<"1+1"<<endl;//输出字符串
cout<<1+2*3-4<<endl;//cout内可进行简单的运算
2.endl可进行换行
cout<<1+2;
cout<<1+2<<endl;
3.多重输出
cout<<"Hello"<<"World"<<endl;//输出两个部分
cout<<"Hello"<<""<<"World"<<endl;//输出三个部分
cout<<"Hello"<<endl<<"World"<<endl;//两部分会换行
cout<<"Hello";
cout<<"World";
变量
二、变量
1.数据类型名(常用)
字符型:char
布尔型:bool
长整型:long long
数值型:int
实型(小数点后一位):float
实型(小数点后两位):double
2.变量的定义
数据类型加名字,语法格式:数据类型名 变量名1,变量名2…;
例如:
int age,score;
double height,weight;
3.变量赋值
例如
int age=20,score=100;
变量未赋值前不推荐使用,注意“先赋值后使用”的规则
4.变量的命名规则
5.变量的读入(使用cin读入)
cin>>a;
cin>>b;
cin>>c;
cin>>a>>b>>c;
读入不同变量之间要用空格隔开
6.变量的四则运算
(1)加减乘(+,-,*)
变量的加减乘运算与数学中的加减乘一样。
除了运算的两个对象均为整型是结果为整型,若运算对象中有实型变量,结果为实型。
(2)除法(/)
若参与运算的两个对象均为整型,其结果为数学运算的整数部分
例如:3/2结果为1,而不是1.5
若运算对象中有实型,其结果为正常运算结果。
例如:7/5.0结果为1.4
(3)模运算(%)
参与运算对象均需为整型
例如:7%5结果为2
赋值语句
1.一般格式:变量名=表达式
例如:
a=3;
a=b+c;
a=a+1;
a和b进行换值
c=a;
a=b;
b=c;
2.关系表达式(结果为布尔类型:true/false)
3.逻辑运算符
if选择结构
1.if语句
语法格式:
if(判断条件){
条件成立时执行的语句
}else{
条件不成立时执行的语句
}
2.多重if重合
语法格式:
if(判断语句1){
语句1
}else{
if(判断语句2){
语句2
}else(){
if。。。
else。。。{
语句n
}
}
}
3.if内包含多重if语句
语法格式:
if(条件1){
if(条件2){
1,2都成立的执行语句
}else{
1成立,2不成立的执行语句
}
}else{
if(条件3){
1不成立,3成立的执行语句
}else{
1,3都不成立的执行语句
}
}
4.并列if语句
if(条件1){
结果1
}else if(条件2){
结果2
}else if(条件3){
结果3
}else if(条件4){
结果4
}
return 0;
while循环结构
1.while语句
语法格式:
while(条件表达式){
语句
}
注意:程序会一直持续到条件表达式不成立为止。
2.break
语法格式:
while(){
if(){
...
break;
}
...
}
注意:遇到break语句时,程序会终止循环,执行循环结束的下一条语句。
3.continue
语法格式:
while(){
if(){
...
continue;
}
...
}
4.常见算法例题解决方法
for循环结构
1.for语句
for(初始化;循环条件;变量变化){
执行语句
}
注意:循环语句中的初始化,循环条件,变量变化可部分或者全部省略,三部分其中的两个“;”不可省略 。
2.for循环语句中省略初始化,循环条件,变量变化的情况
for(;;){
执行语句
...
break;//终止循环
}
注意:上述循环若无break终止,将会一直执行下去,成为一个死循环。
算法练习例题
一、题目:输入3个整数,把这三个数从大到小输出
输入格式:
三个整数(每个整数之间用一个空格隔开)
输出格式:
把输入的三个整数从大到小输出(每个整数之间用一个空格隔开)
限制:
三个数的范围都是0到1000
样例 1 :
输入:
1 2 3
输出:
3 2 1
样例 2 :
输入:
0 1 1
输出:
1 1 0
#include <bits/stdc++.h>
using namespace std;
int main(){
int a,b,c;
cin>>a>>b>>c;
if(a>=b&&b>=c){
cout<<a<<" "<<b<<" "<<c;
}else if(a>=c&&c>=b){
cout<<a<<" "<<c<<" "<<b;
}else if(c>=b&&b>=a){
cout<<c<<" "<<b<<" "<<a;
}else if(c>=a&&a>=b){
cout<<c<<" "<<a<<" "<<b;
}else if(b>=a&&a>=c){
cout<<b<<" "<<a<<" "<<c;
}else if(b>=c&&c>=a){
cout<<b<<" "<<c<<" "<<a;
}
}
二、题目:已知矩形的大小为n×m,现用a×a的正方形填充该矩形。输入三个正整数n,m,a(n,m,a≤10^9),计算至多能填入多少正方形?(正方形可以正好碰到矩形边界,但不能超出矩形外)
输入格式:
一行三个用一个空格隔开的正整数n,m,a。
输出格式:
输出能填入正方形的数量。
样例 : 1
输入:
3 4 1
输出:
12
#include <bits/stdc++.h>
using namespace std;
int main(){
int n,m,a;
cin>>n>>m>>a;
cout<<(n/a)*(m/a);
}
注意:这道题目的陷阱之处在于,不能用整个大矩形面积除以小矩形面积,而应该用大矩形的长除以小矩形的边长,舍去小数部分(小数部分表示超出边界),大矩形的宽除以小矩形的边长,舍去小数部分。
三、题目:输入一个数n,求1~n之间所有7的倍数和末尾含7的数的和。
输入格式:
一个整数n(0<=n<=123456)
输出格式:
求1~n之间所有7的倍数和末尾含7的数的和
样例 1 :
输入:
21
输出:
59
说明:
7+14+17+21=59
#include <bits/stdc++.h>
using namespace std;
int main(){
int n,i,m=0;
cin>>n;
for(i=1;i<=n;i++){
if(i%7==0||(i-7)%10==0){
m=m+i;
}
}
cout<<m;//在for循环语句和if语句之外
}
四、题目:一个皮球从空中落下,每次落地反弹的高度是原来高度的一半(向下取整)
求问,当皮球初始高度为n米(n为整数且<10000)时,皮球一共可以反弹多少次,且皮球在空中经历的总距离是多少?
输入格式:
一个正整数n,n<10000
输出格式:
两个数,之间用空格隔开,第一个数为皮球的反弹次数,第二个数为皮球在空中飞行的总距离
样例 1 :
输入:
8
输出:
4 22
样例 2 :
输入:
80
输出:
7 236
#include <bits/stdc++.h>
using namespace std;
int main(){
int n,i,m=0,s=0;//m为次数,s为距离
cin>>n;
i=n;//将初始高度n赋值给i(后续将会使用i)
while(n>=1){
if(n>=1){
s=s+n*2;//距离应为初始高度+每次高度一半的二倍
m++;//每循环一次,m的值加一
}
n=n/2;//高度减半
}
cout<<m<<" "<<s-i;//初始高度加了两次,应再减去一次初始高度
return 0;
}