2.1:回顾输入与输出
我们用做题的方式来回顾上一讲的内容。
例1:换行输出
题目描述:
输入两个整数,换行输出它们。
输入:
一行,两个整数,用空格隔开。
输出:
换行输出两个整数。
样例输入:
987 654
样例输出:
987
654
这道题很简单,请看答案:
程序清单2.1.1
//程序清单2.1.1.cpp
#include <bits/stdc++.h>
using namespace std;
int main(){
int n1,n2; //定义输入的两个整数
cin>>n1>>n2; //输入,可以用scanf("%d %d",&n1,&n2);代替
cout<<n1<<endl<<n2<<endl; //输出,可以用printf("%d\n%d",n1,n2);代替
return 0;
}
这道题非常简单,我就不多说了。
2.2:C++中的运算
既然是一门语言,就有它自己的计算方法。 那么,在C++中,如何实现加法、减法、乘法等一系列运算呢?请看下面的代码:
程序清单2.2.1
//程序清单2.2.1.cpp
#include <bits/stdc++.h>
using namespace std;
int main(){
int a,b,c;
cin>>a>>b;
c=a+b; //运算表达式
cout<<c<<endl;
return 0;
}
程序清单2.2.1解析与探讨
这串代码中,用到了“c=a+b;”这个语句。我们知道,在数学中,“a+b”表示两个代数相加。而这两个代数已经有了一个确定的值,所以计算机会对其进行加法运算。相加之后,前面还有一个“c=”语句,所以,a和b相加的值就会传递给变量c。这种运算被称为“赋值运算”,也就是将运算结果赋值给另外一个变量。当然,这个运算是可以改变的。
请看下面的程序:
程序清单2.2.2
//程序清单2.2.2.cpp
#include <bits/stdc++.h>
using namespace std;
int main(){
int a,b,c; //定义三个变量
cin>>a>>b>>c; //输入三个数
cout<<(a+b)*c<<endl; //输出表达式的结果
return 0;
}
程序清单2.2.2解析与探讨
上面的程序中,用到了“(a+b)*c”的表达式。计算机碰到表达式之后,会自动计算结果。但是这个表达式是在“cout”输出流里面的,所以程序会自动输出表达式的结果。
重点知识1:
下面是表达式的运算符,都是一些常用的。
+ | 加法 |
---|---|
- | 减法 |
* | 乘法 |
/ | 除法 |
% | 模除(求两个数相除的余数) |
这些都是常见的运算符,每个C++程序员都要熟练地掌握。
2.3:顺序结构的使用
通常,我们把从上往下执行的程序叫做“顺序结构”。
下面我们来看一道例题:
例2:简易计算器
题目描述:
输入两个数,分别输出它们经过加、减、乘、除(自动取整数部分,忽略小数部分。注意:不是四舍五入)后的运算结果。
输入:
输入两个整数。
输出:
换行输出它们的运算结果。
样例输入:
36 11
样例输出:
47
25
396
3
下面是参考答案:
程序清单2.3.1
//程序清单2.3.1.cpp
#include <bits/stdc++.h>
using namespace std;
int main(){
int a,b;
cin>>a>>b;
cout<<a+b<<endl; //加法运算
cout<<a-b<<endl; //减法运算
cout<<a*b<<endl; //乘法运算
cout<<a/b<<endl; //除法运算
return 0;
}
例题解析:
这道题是让我们知道各种运算如何运用,通过输出流,对运算结果进行输出。为了更方便大家观察,所以我把输出打成了四行。
当然,如果有C语言基础,你也可以看看下面的代码:
程序清单2.3.2
//程序清单2.3.2.cpp
#include <bits/stdc++.h>
using namespace std;
int main(){
int a,b;
scanf("%d %d",&a,&b); //C风格输入函数
//下面是输出语句块:
printf("%d\n",a+b);
printf("%d\n",a-b);
printf("%d\n",a*b);
printf("%d\n",a/b);
return 0;
}
例3:计算梯形面积
题目描述:
给定一个梯形的上底、下底和高,求这个梯形的面积。
输入:
输入三个数,依次是:上底、下底和高。
输出:
输出梯形的面积。
样例输入:
12 18 10
样例输出:
150
这道题只需要用到梯形面积计算公式,就可以解出来了。大家看一下参考代码:
程序清单2.3.3
//程序清单2.3.3.cpp
#include <bits/stdc++.h>
using namespace std;
int main(){
int s,x,h,m; //定义上底、下底和高
cin>>s>>x>>h;
m=(s+x)*h/2; //计算面积
cout<<m<<endl; //输出面积
return 0;
}
例题解析:
这道题中,让我们计算的是梯形的面积。这是梯形的面积计算公式:(上底+下底)*高/2。所以,在程序中,用到了“m=(s+x)*h/2;”这个语句。但是我们输入下面的数据,就会发现一些问题:
样例输入:
7 10 3
样例输出:
25
我们可以通过计算发现,(7+10)*3/2的结果是25.5,而它给出的答案是25。这说明我们的计算还不精确。我们这就要运用到浮点数(小数)。在第一讲中,我们知道了许多变量的命名前缀,命名浮点数(小数)最常用的前缀是“double”,所以,就有了下面的代码:
程序清单2.3.4
//程序清单2.3.4.cpp
#include <bits/stdc++.h>
using namespace std;
int main(){
double a,b,c,m; //定义浮点数变量
cin>>a>>b>>c;
m=(a+b)*c/2; //计算
cout<<m<<endl; //输出,可以使用printf("%g",m);
return 0;
}
程序清单2.3.4解析与探讨
这串代码中,只是把“int”改成了“double”,运行的结果就不一样。这就是整数与浮点数的区别。
2.4:练习题
满分:100分 建议完成时间:30分钟 难度:入门
一、单选题(共5题,每题4分,共20分)
1.下面说法正确的一项是:()。
A.C++中“=”是赋值符号 B.C++中,没有“%”这个运算符 C.C++中,只有顺序结构
2.下面说法正确的一项是:()。
A.变量定义前缀只能是“int” B.C++中,不能直接输出表达式的运算结果 C.C++中,有“/”运算符
3.下面代码正确的一项是:()。
A:
//选项A
#include <bits/stdc++.h>
using namespace std;
int main(){
int a,b,c,d;
cin>>a>>b>>c;
a+b+c=d;
cout<<d<<endl;
return 0;
}
B:
//选项B
#include <bits/stdc++.h>
using namespace std;
int main(){
double x,y,z;
cin>>x>>y;
z=x*y;
cout<<z<<endl;
return 0;
}
C:
//选项C
#include <bits/stdc++.h>
using namespace std;
int main(){
int a;
cin>>a;
cout<<a^10000000<<endl;
return 0;
}
4.下面说法错误的是:()。
A.C++中,运算表达式的结果可以保存到变量里 B.从下往上执行命令的是顺序结构 C.除了顺序结构外,没有其它结构
5.下面说法正确的是:()。
A.C++中只有五种运算符 B.C++中没有“^”符号 C.C++中,只有“bits/stdc++.h”这一个头文件
二、应用题(共4题,每题20分,共80分)
1.浮点数计算器
题目描述:
给定两个双精度浮点数,求它们通过四则运算后的值。
输入:
输入两个浮点数。
输出:
输出他们通过四则运算后的值和过程。
样例输入:
3.6 1.2
样例输出:
x+y=4.8
x-y=2.4
x*y=4.32
x/y=3
2.模除
题目描述:
给定两个数a和b,求a除以b的余数。
输入:
输入两个正整数。
输出:
输出一个整数,表示两个数相除的余数。
样例输入:
8 5
样例输出:
3
3.数字反转
题目描述:
输入一个不小于100且小于1000,同时包括小数点后一位的一个保留小数点后一位的浮点数,例如123.4 ,要求把这个数字翻转过来,变成4.321并输出。
输入:
一行一个浮点数。
输出:
一行一个浮点数,表示翻转过来的数。
样例输入:
123.4
样例输出:
4.321
4.三角形面积
题目描述:
一个三角形的一个底边和其对应的高分别是n和m,求三角形的面积。
输入:
输入两个数n和m。
输出:
输出三角形的面积。
样例输入:
20 20
样例输出:
200
2.5:练习题答案
一、1.(A) 2.(C) 3.(B) 4.(C) 5.(B)
二、
1:浮点数计算器
参考代码:
#include <bits/stdc++.h>
using namespace std;
int main(){
double x,y;
cin>>x>>y;
cout<<"x+y="<<x+y<<endl;
cout<<"x-y="<<x-y<<endl;
cout<<"x*y="<<x*y<<endl;
cout<<"x/y="<<x/y<<endl;
return 0;
}
2:模除
参考代码:
#include <bits/stdc++.h>
using namespace std;
int main(){
int a,b;
cin>>a>>b;
cout<<a%b<<endl;
return 0;
}
3:数字反转
参考代码:
#include <bits/stdc++.h>
using namespace std;
int main(){
char a,b,c,d,e;
cin>>a>>b>>c>>d>>e; //字符的输入没有空格
cout<<e<<d<<c<<b<<a<<endl;
return 0;
}
4:三角形面积
#include <bits/stdc++.h>
using namespace std;
int main(){
int a,b;
cin>>a>>b;
cout<<a*b/2<<endl;
return 0;
}