顺序结构程序设计 - 下
本部分题解主要顺序结构下的各种基础题目,包括了运算表达式、变量和常量、各种数据类型的输入输出、以及常见模拟数学题的锻炼,不包含任何分支选择循环等复杂结构,非常适合基础锻炼,感受程序的顺序执行过程!
文章目录
整型数据类型存储空间大小
题目描述:
分别定义int,short类型的变量各一个,并依次输出它们的存储空间大小(单位:字节)。
输入格式
- 无
输出格式
- 一行,两个整数,分别是两个变量的存储空间大小,用一个空格隔开。
样例输入
无
样例输出
无
解:
#include<iostream>
using namespace std;
int main() {
int a = 10;
short b = 20;
cout << sizeof(a) << ' ' << sizeof(b);
return 0;
}
浮点型数据类型存储空间大小
题目描述:
分别定义float,double类型的变量各一个,并依次输出它们的存储空间大小(单位:字节)。
输入格式
- 无
输出格式
- 一行,两个整数,分别是两个变量的存储空间大小,用一个空格隔开。
样例输入
无
样例输出
无
解:
#include<iostream>
using namespace std;
int main() {
float a = 10.0;
double b = 20.0;
cout << sizeof(a) << ' ' << sizeof(b);
return 0;
}
其他基本数据类型存储空间大小
题目描述:
分别定义bool,char类型的变量各一个,并依次输出它们的存储空间大小(单位:字节)。
输入格式
- 无
输出格式
- 一行,两个整数,分别是两个变量的存储空间大小,用一个空格隔开。
样例输入
无
样例输出
无
解:
#include<iostream>
using namespace std;
int main() {
bool a = false;
char b = '1';
cout << sizeof(a) << ' ' << sizeof(b);
return 0;
}
浮点数向零舍入
题目描述:
输入一个单精度浮点数,将其向零舍入到整数。
说明:向零舍入的含义是,正数向下舍入,负数向上舍入。
提示:可以使用强制类型转换来实现。
输入格式
- 一个单精度浮点数。
输出格式
- 一个整数,即向零舍入到整数的结果。
样例输入
2.3
样例输出
2
解:
#include<iostream>
using namespace std;
int main() {
float x;
cin >> x;
int y = x < 0 ? (int)x + 1 : (int)x;
cout << y;
return 0;
}
打印ASCII码
题目描述:
输入一个除空格以外的可见字符(保证在函数scanf中可使用格式说明符%c读入),输出其ASCII码。
输入格式
- 一个除空格以外的可见字符。
输出格式
- 一个十进制整数,即该字符的ASCII码。
样例输入
A
样例输出
65
解:
#include<iostream>
using namespace std;
int main() {
int y = (int)cin.get();
cout << y;
return 0;
}
打印字符
题目描述:
输入一个ASCII码,输出对应的字符。
输入格式
- 一个整数,即字符的ASCII码,保证存在对应的可见字符。
输出格式
- 一行,包含相应的字符。
样例输入
65
样例输出
A
解:
#include<iostream>
using namespace std;
int main() {
int x;
cin >> x;
cout << (char)x;
return 0;
}
整型与布尔型的转换
题目描述:
将一个整型变量的值赋给一个布尔型变量,再将这个布尔型变量的值赋给一个整型变量,得到的值是多少?
输入格式
- 一个整型范围内的整数,即初始时整型变量的值。
输出格式
- 一个整数,经过上述过程后得到的结果。
样例输入
3
样例输出
1
解:
#include<iostream>
using namespace std;
int main() {
int x;
cin >> x;
bool y = (bool)x;
cout << (int)y;
return 0;
}
Hello, World!的大小
题目描述:
还记得我们曾经输出过的“Hello, World!”吗?
我们可以用sizeof函数获得它所占用的空间大小。
请编程求出它的大小,看看跟你设想的是否一样?
输入格式
- 无
输出格式
- 一个整数,即“Hello, World!”的大小。
样例输入
无
样例输出
无
解:
#include<iostream>
using namespace std;
int main() {
// “Hello, World!”是字符串类型。
cout << sizeof("Hello, World!");
return 0;
}
糖果游戏
题目描述:
某幼儿园里,有5个小朋友编号为1、2、3、4、5,他们按自己的编号顺序围坐在一张圆桌旁。他们身上都有若干个糖果(键盘输入),现在他们做一个分糖果游戏。从1号小朋友开始,将自己的糖果均分三份(如果有多余的糖果,则立即吃掉),自己留一份,其余两份分给他的相邻的两个小朋友。接着2号、3号、4号、5号小朋友同样这么做。问一轮后,每个小朋友手上分别有多少糖果。
输入格式
- 5个小朋友的糖果数。
输出格式
- 游戏后5个小朋友的糖果数。(按5位宽度输出)
样例输入
8 9 10 11 12
样例输出
11 7 9 11 6
解:
#include<iostream>
#include <iomanip>
using namespace std;
int main() {
int num[5];
for (int i = 0; i < 5; i++) {
cin >> num[i];
}
num[0] = num[0] / 3;
num[1] += num[0];
num[4] += num[0];
for (int i = 1; i < 4; i++) {
num[i] /= 3;
num[i - 1] += num[i];
num[i + 1] += num[i];
}
num[4] /= 3;
num[0] += num[4];
num[3] += num[4];
for (int i = 0; i < 5; i++) {
cout << setw(5) << num[i];
}
return 0;
}
[编程基础]输入输出练习之精度控制1
题目描述:
输入一个单精度浮点数,输出保留三位小数输出
输入格式
- 一个单精度浮点数
输出格式
- 对应的三位小数的数字
样例输入
3.14159
样例输出
3.142
解:
#include<iostream>
// #include<iomanip>
using namespace std;
int main() {
float x;
cin >> x;
printf("%.3f", x); // C风格输出
// cout<<fixed<<setprecision(3)<< x; // C++风格输出
return 0;
}
[编程基础]输入输出练习之精度控制2
题目描述:
输入一个双精度浮点数,保留12位小数输出
输入格式
- 一个双精度小数
输出格式
- 保留12位的数字
样例输入
3.1415926535897932
样例输出
3.141592653590
解:
#include<iostream>
// #include<iomanip>
using namespace std;
int main() {
double x;
cin >> x;
printf("%.12f", x); // C风格输出
// cout<<fixed<<setprecision(12)<< x; // C++风格输出
return 0;
}
[编程基础]输入输出练习之精度控制3
题目描述:
输入一个字符,一个数字,一个单精度浮点数,一个双精度浮点数,按顺序输出它们四个
且数字指定占4个字符宽靠右对齐,单精度浮点数保留2位小数,双精度保留12位小数,占一行输出、空格分隔
输入格式
- 一个字符、一个数字、一个单精度小数、一个双精度小数,空格分隔,占一行
输出格式
- 按要求输出的四个数据
样例输入
C 99 12.1323 3.14159265358979
样例输出
C 99 12.13 3.141592653590
解:
#include<iostream>
#include<iomanip>
using namespace std;
int main() {
char a;
int b;
float c;
double d;
cin >> a >> b >> c >> d;
cout << a << ' ';
cout << setw(4) << b << ' ';
cout << fixed << setprecision(2) << c << ' ';
cout << fixed << setprecision(12) << d;
return 0;
}
[编程基础]输入输出练习之浮点数专题
题目描述:
输入一个双精度浮点数,输出这个浮点数的%f结果、保留5位小数的结果、%e、%g格式的结果
输入格式
- 一个双精度浮点数
输出格式
-
四个结果,各占一行
第一行,%f的结果
第二行,%f保留5位小数的结果
第三行,%e格式的输出
第四行,%g格式的输出
样例输入
3.14159265358
样例输出
3.141593
3.14159
3.141593e+00
3.14159
解:
#include<iostream>
using namespace std;
int main() {
double x;
cin >> x;
printf("%f\n", x);
printf("%.5f\n", x);
printf("%e\n", x);
printf("%g\n", x);
return 0;
}
字符菱形
题目描述:
给定一个字符,用它构造一个对角线长5个字符,倾斜放置的菱形。
输入格式
- 输入只有一行, 包含一个字符。
输出格式
- 该字符构成的菱形。
样例输入
*
样例输出
* *** ***** *** *
解:
#include<iostream>
using namespace std;
int main() {
char a = cin.get();
/*
int x = 5; // 菱形的对角线长度
for (int i = 0; i <= x / 2; i++) {
for (int o = x / 2 - i; o != 0; o--) {
cout << ' ';
}
for (int o = 0; o < i * 2 + 1; o++) {
cout << a;
}
cout << endl;
}
for (int i = x / 2 - 1; i >= 0; i--) {
for (int o = x / 2 - i; o != 0; o--) {
cout << ' ';
}
for (int o = 0; o < i * 2 + 1; o++) {
cout << a;
}
cout << endl;
}
*/
cout << " " << a << endl; // 可直接打印输出
cout << ' ' << a << a << a << endl;
cout << a << a << a << a << a << endl;
cout << ' ' << a << a << a << endl;
cout << " " << a << endl;
return 0;
}
苹果和虫子
题目描述:
你买了一箱n个苹果,很不幸的是买完时箱子里混进了一条虫子。虫子每x小时能吃掉一个苹果,假设虫子在吃完一个苹果之前不会吃另一个,那么经过y小时你还有多少个完整的苹果?
输入格式
- 输入仅一行,包括n,x和y(均为整数)。输入数据保证y <= n * x。
输出格式
- 输出也仅一行,剩下的苹果个数。
样例输入
10 4 9
样例输出
7
解:
#include<iostream>
using namespace std;
int main() {
int n, x, y;
cin >> n >> x >> y;
cout << (y % x == 0? n - (y / x): n - (y / x) -1);
return 0;
}
计算线段长度
题目描述:
已知线段的两个端点的坐标A(Xa,Ya),B(Xb,Yb),求线段AB的长度。
输入格式
- 共两行。
第一行是两个实数Xa,Ya,即A的坐标。
第二行是两个实数Xb,Yb,即B的坐标。
输入中所有实数的绝对值均不超过10000。
输出格式
- 一个实数,即线段AB的长度,保留到小数点后3位。
样例输入
1 1
2 2
样例输出
1.414
解:
#include<iostream>
using namespace std;
int main() {
double ax, ay, bx, by;
cin >> ax >> ay >> bx >> by;
double y = pow(ax - bx, 2) + pow(ay - by, 2);
y = pow(y, 1.0 / 2);
printf("%.3f", y);
return 0;
}
计算三角形面积
题目描述:
平面上有一个三角形,它的三个顶点坐标分别为(x1, y1), (x2, y2), (x3, y3),那么请问这个三角形的面积是多少。
输入格式
- 输入仅一行,包括6个单精度浮点数,分别对应x1, y1, x2, y2, x3, y3。
输出格式
- 输出也是一行,输出三角形的面积,精确到小数点后两位。
样例输入
0 0 4 0 0 3
样例输出
6.00
解:
#include<iostream>
// #include<iomanip>
using namespace std;
int main() {
float x1, x2, x3, y1, y2, y3;
cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3;
double a, b, c;
a = pow(pow(x1 - x2, 2) + pow(y1 - y2, 2), 1.0 / 2);
b = pow(pow(x2 - x3, 2) + pow(y2 - y3, 2), 1.0 / 2);
c = pow(pow(x3 - x1, 2) + pow(y3 - y1, 2), 1.0 / 2);
double d = (a + b + c) / 2;
// 使用海伦公式
double y = pow(d*(d - a)*(d - b)*(d - c), 1.0 / 2);
printf("%.2f", y); // C风格输出
// cout << fixed << setprecision(2) << y << endl; // C++风格输出
return 0;
}
等差数列末项计算
题目描述:
给出一个等差数列的前两项a1,a2,求第n项是多少。
输入格式
- 一行,包含三个整数a1,a2,n。-100 <= a1,a2 <= 100,0 < n <= 1000。
输出格式
- 一个整数,即第n项的值。
样例输入
1 4 100
样例输出
298
解:
#include<iostream>
using namespace std;
int main() {
long long a1, a2, n;
cin >> a1 >> a2 >> n;
long long o = a2 - a1;
for (int i = 1; i < n; i++) {
a1 += o;
}
cout << a1;
return 0;
}
A*B问题
题目描述:
输入两个正整数A和B,求A*B。
输入格式
- 一行,包含两个正整数A和B,中间用单个空格隔开。1 <= A,B <= 50000。
输出格式
- 一个整数,即A*B的值。
样例输入
3 4
样例输出
12
解:
#include<iostream>
using namespace std;
int main() {
long long a, b;
cin >> a >> b;
long long y = a * b;
cout << y;
return 0;
}
计算2的幂
题目描述:
给定非负整数n,求2n。
输入格式
- 一个整数n。0 <= n < 31。
输出格式
- 一个整数,即2的n次方。
样例输入
3
样例输出
8
解:
#include<iostream>
using namespace std;
int main() {
short n;
cin >> n;
long long y = 2;
for (int i = 1; i < n; i++) {
y *= 2;
}
cout << y;
return 0;
}