前言

Hello!小伙伴!
非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出~
 
自我介绍 ଘ(੭ˊᵕˋ)੭
昵称:海轰
标签:程序猿|C++选手|学生
简介:因C语言结识编程,随后转入计算机专业,有幸拿过国奖、省奖等,已保研。目前正在学习C++/Linux(真的真的太难了~)
学习经验:扎实基础 + 多做笔记 + 多敲代码 + 多思考 + 学好英语!

7-11 分段计算居民水费 (10 分)

题目

为鼓励居民节约用水,自来水公司采取按用水量阶梯式计价的办法,居民应交水费_y_(元)与月用水量_x_(吨)相关:当_x_不超过15吨时,y=4_x_/3;超过后,y=2.5_x_−17.5。请编写程序实现水费的计算。

输入格式:

输入在一行中给出非负实数x。

输出格式:

在一行输出应交的水费,精确到小数点后2位。

输入样例1:

12

输出样例1:

16.00

输入样例2:

16

输出样例2:

22.50

解答

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{int x;double y;cin >> x;if (x <= 15){y = 4 * x / 3.0;}else{y = 2.5 * x - 17.5;}cout << fixed << setprecision(2) << y << endl;return 0;
}

7-12 两个数的简单计算器 (10 分)

题目

本题要求编写一个简单计算器程序,可根据输入的运算符,对2个整数进行加、减、乘、除或求余运算。题目保证输入和输出均不超过整型范围。

输入格式:

输入在一行中依次输入操作数1、运算符、操作数2,其间以1个空格分隔。操作数的数据类型为整型,且保证除法和求余的分母非零。

输出格式:

当运算符为+、-、*、/、%时,在一行输出相应的运算结果。若输入是非法符号(即除了加、减、乘、除和求余五种运算符以外的其他符号)则输出ERROR。

输入样例1:

-7 / 2

输出样例1:

-3

输入样例2:

3 & 6

输出样例2:

ERROR

解答

#include <iostream>
using namespace std;
int main()
{int a, b;char c;cin >> a >> c >> b;switch (c){case '+':cout << a + b << endl;break;case '-':cout << a - b << endl;break;case '*':cout << a * b << endl;break;case '/':cout << a / b << endl;break;case '%':cout << a % b << endl;break;default:cout<<"ERROR"<<endl;break;}return 0;
}

7-13 日K蜡烛图 (15 分)

题目

股票价格涨跌趋势,常用蜡烛图技术中的K线图来表示,分为按日的日K线、按周的周K线、按月的月K线等。以日K线为例,每天股票价格从开盘到收盘走完一天,对应一根蜡烛小图,要表示四个价格:开盘价格Open(早上刚刚开始开盘买卖成交的第1笔价格)、收盘价格Close(下午收盘时最后一笔成交的价格)、中间的最高价High和最低价Low。
如果Close<Open,表示为“BW-Solid”(即“实心蓝白蜡烛”);如果Close>Open,表示为“R-Hollow”(即“空心红蜡烛”);如果Open等于Close,则为“R-Cross”(即“十字红蜡烛”)。如果Low比Open和Close低,称为“Lower Shadow”(即“有下影线”),如果High比Open和Close高,称为“Upper Shadow”(即“有上影线”)。请编程序,根据给定的四个价格组合,判断当日的蜡烛是一根什么样的蜡烛。

输入格式:

输入在一行中给出4个正实数,分别对应Open、High、Low、Close,其间以空格分隔。

输出格式:

在一行中输出日K蜡烛的类型。如果有上、下影线,则在类型后加上with 影线类型。如果两种影线都有,则输出with Lower Shadow and Upper Shadow。

输入样例1:

5.110 5.250 5.100 5.105

输出样例1:

BW-Solid with Lower Shadow and Upper Shadow

输入样例2:

5.110 5.110 5.110 5.110

输出样例2:

R-Cross

输入样例3:

5.110 5.125 5.112 5.126

输出样例3:

R-Hollow

解答

#include <iostream>
using namespace std;
int main()
{double open;double high;double low;double close;cin >> open >> high >> low >> close;string str = "";if (close < open){str += "BW-Solid";}else if (close == open){str += "R-Cross";}else{str += "R-Hollow";}string str2 = "";if (high > open && high > close && low < open && low < close){str2 += " with Lower Shadow and Upper Shadow";}else{if (high > open && high > close){str2 += " with Upper Shadow";}if (low < open && low < close){str2 += " with Lower Shadow";}  }cout << str << str2 << endl;return 0;
}

7-14 求整数段和 (15 分)

题目

给定两个整数_A_和_B_,输出从_A_到_B_的所有整数以及这些数的和。

输入格式:

输入在一行中给出2个整数A和B,其中−100≤A≤B≤100,其间以空格分隔。

输出格式:

首先顺序输出从A到B的所有整数,每5个数字占一行,每个数字占5个字符宽度,向右对齐。最后在一行中按Sum = X的格式输出全部数字的和X。

输入样例:

-3 8

输出样例:

-3 -2 -1 0 1
2 3 4 5 6
7 8
Sum = 30

解答

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{int a, b;cin >> a >> b;int i, sum = 0, k = 0;for (i = a; i <= b; i++){k++;if (k < 5){cout << setiosflags(ios::right) << setw(5) << i;}if (k == 5){cout << setiosflags(ios::right) << setw(5) << i << endl;k = 0;}sum = sum + i;}if (k != 0)cout << endl;cout << "Sum = " << sum << endl;return 0;
}

7-15 计算圆周率 (15 分)

题目

根据下面关系式,求圆周率的值,直到最后一项的值小于给定阈值。
2/π=1+31+3×52!+3×5×73!+⋯+3×5×7×⋯×(2n+1)n!+⋯

输入格式:

输入在一行中给出小于1的阈值。

输出格式:

在一行中输出满足阈值条件的近似圆周率,输出到小数点后6位。

输入样例:

0.01

输出样例:

3.132157

解答

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{double value;cin >> value;double sum = 1;int n = 0;long a = 1;double b = 1;double last = a / b;while (last >= value){++n;a *= n;b *= (2 * n + 1);last = a / b;sum += last;}cout << fixed << setprecision(6) << sum*2 << endl;return 0;
}

7-16 求符合给定条件的整数集 (15 分)

题目

给定不超过6的正整数A,考虑从A开始的连续4个数字。请输出所有由它们组成的无重复数字的3位数。

输入格式:

输入在一行中给出A。

输出格式:

输出满足条件的的3位数,要求从小到大,每行6个整数。整数间以空格分隔,但行末不能有多余空格。

输入样例:

2

输出样例:

234 235 243 245 253 254
324 325 342 345 352 354
423 425 432 435 452 453
523 524 532 534 542 543

解答

暴力枚举

#include <iostream>
using namespace std;
int main()
{int A;cin >> A;int count = 0;for (int i = A; i <= A + 3; ++i){for (int j = A; j <= A + 3; ++j){for (int k = A; k <= A + 3; ++k){if (i != j && i != k && j != k){cout << i * 100 + j * 10 + k;++count;if (count % 6 == 0){cout << endl;count = 0;}else{cout << " ";}}}}}return 0;
}


回溯

#include <iostream>
#include <vector>
using namespace std;
vector<int> temp;
void backtracking(vector<vector<int> > &res, vector<bool> &isused, vector<int> &nums)
{// 当temp数组的长度等于期望数组的长度时 returnif (temp.size() == 3){res.push_back(temp);return;}// 遍历所有选择for (int i = 0; i < nums.size(); ++i){// 对没有选择过的元素再进行抉择:选择它|不选择它if (isused[i]){// 选择该元素 选择后标记该元素为已选择 同时进行下一元素的抉择temp.push_back(nums[i]);isused[i] = false;backtracking(res, isused, nums);// 回复原来状态:未选择 同时从temp中pop出isused[i] = true;temp.pop_back();}}
}
vector<vector<int> > permute(vector<int> &nums)
{vector<vector<int> > res;vector<bool> isused(nums.size(), true);backtracking(res, isused, nums);return res;
}
int main()
{vector<vector<int> > ans;vector<int> nums;int N;cin >> N;for (int i = N; i <= N + 3; ++i){nums.push_back(i);}ans = permute(nums);int count = 0;for (int i = 0; i < ans.size(); ++i){for (int j = 0; j < ans[0].size(); ++j){cout << ans[i][j];}++count;if (count % 6 == 0){cout << endl;count = 0;}else{cout << " ";}}return 0;
}

7-17 爬动的蠕虫 (15 分)

题目

一条蠕虫长1寸,在一口深为N寸的井的底部。已知蠕虫每1分钟可以向上爬U寸,但必须休息1分钟才能接着往上爬。在休息的过程中,蠕虫又下滑了D寸。就这样,上爬和下滑重复进行。请问,蠕虫需要多长时间才能爬出井?

这里要求不足1分钟按1分钟计,并且假定只要在某次上爬过程中蠕虫的头部到达了井的顶部,那么蠕虫就完成任务了。初始时,蠕虫是趴在井底的(即高度为0)。

输入格式:

输入在一行中顺序给出3个正整数N、U、D,其中D<U,N不超过100。

输出格式:

在一行中输出蠕虫爬出井的时间,以分钟为单位。

输入样例:

12 3 1

输出样例:

11

解答

#include <iostream>
using namespace std;
int main()
{int N;int U;int D;cin >> N >> U >> D;int minutes = 0;while (N){++minutes;N -= U;if (N <= 0){cout << minutes << endl;break;}++minutes;N += D;}return 0;
}

7-18 二分法求多项式单根 (20 分)

题目

二分法求函数根的原理为:如果连续函数_f_(x)在区间[a,b]的两个端点取值异号,即_f_(a)f(b)<0,则它在这个区间内至少存在1个根_r_,即_f_(r)=0。

二分法的步骤为:

  • 检查区间长度,如果小于给定阈值,则停止,输出区间中点(a+b)/2;否则
  • 如果_f_(a)f(b)<0,则计算中点的值_f_((a+b)/2);
  • 如果_f_((a+b)/2)正好为0,则(a+b)/2就是要求的根;否则
  • 如果_f_((a+b)/2)与_f_(a)同号,则说明根在区间[(a+b)/2,b],令_a_=(a+b)/2,重复循环;
  • 如果_f_((a+b)/2)与_f_(b)同号,则说明根在区间[a,(a+b)/2],令_b_=(a+b)/2,重复循环。

本题目要求编写程序,计算给定3阶多项式f(x)=a3x3+a2x2+a1x+a0在给定区间[a,b]内的根。

输入格式:

输入在第1行中顺序给出多项式的4个系数a3、a2、a1、a0,在第2行中顺序给出区间端点a和b。题目保证多项式在给定区间内存在唯一单根。

输出格式:

在一行中输出该多项式在该区间内的根,精确到小数点后2位。

输入样例:

3 -1 -3 1
-0.5 0.5

输出样例:

0.33

解答

#include <iostream>
#include <math.h>
#include <iomanip>
using namespace std;
double f(double num, double a3, double a2, double a1, double a0)
{return a3 * pow(num, 3) + a2 * pow(num, 2) + a1 * num + a0;
}
int main()
{double a3, a2, a1, a0;double a, b;cin >> a3 >> a2 >> a1 >> a0;cin >> a >> b;while (1){double mid = a + (b - a) / 2.0;if (f(mid, a3, a2, a1, a0) == 0 || b - a < 0.000001){cout << fixed << setprecision(2) << mid << endl;break;}else if (f(mid, a3, a2, a1, a0) * f(a, a3, a2, a1, a0) > 0){// a mid 同号// 在mid-b间a = mid;}else if (f(mid, a3, a2, a1, a0) * f(b, a3, a2, a1, a0) > 0){// mid b 同号// 在 a-mid间b = mid;}else{// 不需要再处理了// 题目保证初始ab区间一定有解的}}return 0;
}

7-19 支票面额 (15 分)

题目

一个采购员去银行兑换一张_y_元_f_分的支票,结果出纳员错给了_f_元_y_分。采购员用去了_n_分之后才发觉有错,于是清点了余额尚有2_y_元2_f_分,问该支票面额是多少?

输入格式:

输入在一行中给出小于100的正整数n。

输出格式:

在一行中按格式y.f输出该支票的原始面额。如果无解,则输出No Solution。

输入样例1:

23

输出样例1:

25.51

输入样例2:

22

输出样例2:

No Solution

解答

#include <iostream>
using namespace std;
int main()
{int n;cin >> n;int flag = 1;for (int i = 0; i < 100 && flag == 1; ++i){for (int j = 0; j < 100; ++j){if (98 * i - 199 * j == n){cout << j << "." << i << endl;flag = 0;break;}}}if (flag == 1){cout << "No Solution" << endl;}return 0;
}

7-20 打印九九口诀表 (15 分)

题目

下面是一个完整的下三角九九口诀表:

11=1
1
2=2 22=4
1
3=3 23=6 33=9
14=4 24=8 34=12 44=16
15=5 25=10 35=15 45=20 55=25 1
6=6 26=12 3
6=18 46=24 56=30 66=36
1
7=7 27=14 37=21 47=28 57=35 67=42 77=49
18=8 28=16 38=24 48=32 58=40 68=48 78=56 88=64
19=9 29=18 39=27 49=36 59=45 69=54 79=63 89=72 9*9=81

本题要求对任意给定的一位正整数N,输出从11到NN的部分口诀表。

输入格式:

输入在一行中给出一个正整数N(1≤N≤9)。

输出格式:

输出下三角N*N部分口诀表,其中等号右边数字占4位、左对齐。

输入样例:

4

输出样例:

11=1
1
2=2 22=4
1
3=3 23=6 33=9
14=4 24=8 34=12 44=16

解答

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{int n;cin >> n;for (int i = 1; i <= n; ++i){for (int j = 1; j <= n; ++j){if (i >= j){cout << j << "*" << i << "=" << setiosflags(ios::left) << setw(4) << i * j;}}cout << endl;}return 0;
}

结语

文章仅作为学习笔记,记录从0到1的一个过程

希望对您有所帮助,如有错误欢迎小伙伴指正~

我是 海轰ଘ(੭ˊᵕˋ)੭

如果您觉得写得可以的话,请点个赞吧

谢谢支持❤️

C++初学必练基础题【第二期】相关推荐

  1. 小白学习Java必练基础题(一)

    1.请实现两个整数变量的交换 ​ int a = 1; ​ int b = 2; //经过交换之后,这里需要大家实现交换的代码 ​ System.out.println(a);//2 ​ System ...

  2. C++初学者必练基础编程题【第一期】

    前言 Hello!小伙伴! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出-   自我介绍 ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计 ...

  3. Hive sql语句必练50题

    1016 HQL36-50题 36.查询任何一门课程成绩在70分以上的姓名.课程名称和分数: select st.s_name,c.c_name,s_score from student st joi ...

  4. Java必会基础题,量不多,但每天进步一点也是好的

    1 指出下列程序运行的结果: public class Example{String str=new String("tarena");char[]ch={'a','b','c'} ...

  5. 要用计算机才能算的题,计算机基础题精选,要考90分以上的同学进考场前必看 -电脑资料...

    一.单选题练习 3.用一个字节最多能编出( D )不同的码, A. 8个                B. 16个          C. 128个           D. 256个 7.RAM代 ...

  6. 由浅入深学java iso_由浅入深学Java:基础、进阶与必做260题 PDF扫描版[47MB]

    由浅入深学Java:基础.进阶与必做260题讲解了Java方方面面的知识,全书共分为4篇共28章,第1篇从最基本的JDK安装讲起,包括基本语法与数据类型.数组.字符串.程序控制语句.面向对象编程.继承 ...

  7. 由浅入深学java pdf_由浅入深学Java:基础、进阶与必做260题 PDF_IT教程网

    资源名称:由浅入深学Java:基础.进阶与必做260题 PDF 第1篇  语言基础篇 第1章  Java入门(教学视频:18分钟) 1.1  Java简介 1.2  Java的特点 1.3  JDK的 ...

  8. 2014 计算机网络 考研真题,2014计算机网络考研试题过关必练

    2009全国硕士研究生入学考试过关必练_网络试题 一. 通过选择题过关必练 1. 常用的数据传输速率单位有Kbps.Mbps.Gbps与Tbps,1Mbps等于 A. 1×103bps B. 1×10 ...

  9. js逻辑训练题_二建冲刺必刷300题!精选历年真题+母子题+模考易错题!

    订阅公众号,回复[口诀],获取完整版实务口诀 你是不是常常疑惑为什么同样在做题,同样熬通宵,同样很努力,为什么有人顺利拿证,有人却因几分之差黯然落榜? 因为二建不仅拼努力的程度,更要拼对精准二建信息的 ...

最新文章

  1. JAVA 多用户商城系统b2b2c-服务容错保护(Hystrix依赖隔离)
  2. 计算机组成原理DMA方式原理,计算机组成原理4(程序查询方式、程序中断方式、DMA方式及其I/O接口电路)...
  3. python是一种什么编程语言-想自学一种编程语言,各种编程语言都有什么区别?...
  4. 屏幕截图在网页设计中应用的30个优秀案例
  5. 【经典面试题一】最长公共子序列(经典动态规划题)
  6. Python入门100题 | 第061题
  7. 前端开发工具vue.js开发实践总结
  8. 关于SQLSERVER的全文目录跟全文索引的区别
  9. floodlight ovs 更改拓扑_淘宝更改类目降权多久?被降权了怎么办?_推广运营(淘宝天猫)...
  10. 移动设备的界面设计尺寸
  11. VMware Player 12.5.0 中文免费版
  12. 快速寻找发外链论坛的方法
  13. 配置nginx 解决404 not found问题
  14. 给控件做数字签名之二:生成证书文件
  15. celery java_Celery(分布式任务队列) 的使用方法总结
  16. linux的shell版url爬虫
  17. pacman入门使用指南
  18. 1.11——Go语言适合做什么
  19. 决战平安京解包--专有模型格式转换成PMX
  20. TextView的居中显示、多行显示、单行显示且显示不完用省略号替代...

热门文章

  1. Pytorch中的repeat以及repeat_interleave用法
  2. 【Django】Python+Django 图文教程
  3. python开发中级_针对中级Python开发人员的13个项目构想
  4. 企业域名是什么?域名代表网站流量
  5. JS——unload事件
  6. 用理想低通滤波器在频率域实现低通滤波、高通滤波。
  7. 理解立刻执行函数(IIFE)的构造原理、运行机制
  8. Python 中 list 和 deque 性能对比
  9. 认识Web Workers
  10. 定时开关机的八种方法