程序设计与算法(一)C语言程序设计CAP 第四周
来源:互联网 发布:java url encode 编辑:程序博客网 时间:2024/06/06 03:33
1.
所谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘3加1,如果是偶数,则除以2,得到的结果再按照上述规则重复处理,最终总能够得到1。如,假定初始整数为5,计算过程分别为16、8、4、2、1。
程序要求输入一个整数,将经过处理得到1的过程输出来。
5
5*3+1=1616/2=88/2=44/2=22/2=1End
#include <iostream>#include <cstdio>using namespace std;int main(){ long long n; //题中的限制超过 int范围 cin >> n; while ( n != 1) { long long t; if( n%2) { t=3*n+1; cout << n<< "*3+1="<< t << endl; } else { t=n/2; cout << n <<" /2="<< t << endl; } n=t; // 必不可少 缺少便会形成死循环 }cout << "end" << endl; return 0; }
注意:本题最重要的是数据类型的选区,以及循环结束后是否就行 n和t 的值交换。
2.
监护室每小时测量一次病人的血压,若收缩压在90 - 140之间并且舒张压在60 - 90之间(包含端点值)则称之为正常,现给出某病人若干次测量的血压值,计算病人保持正常血压的最长小时数。
4100 8090 50120 60140 90
2
#include <iostream>#include <cstdio>using namespace std;int main(){int n ; //n表示输入的次数 t表示合格次数 int t=0;int low,high;cin >> n;for( int i=0 ; i<n ; i++){ cin >> high>> low; if ( high >= 90 && high <= 140 && low <= 90 && low >= 60) ++t; else t=0; } cout << t <<endl; return 0; }3.
给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2)。
样例 #1:123样例 #2:-380
样例 #1:321样例 #2:-83
#include <iostream>#include <cstdio>using namespace std;int main(){int n;cin >> n;int r=0; //r表示更换后的数字while( n ){ r=r*10+(n%10); n=n/10; } cout << r << endl; return 0; }注解:该题重点是替换的想法,先进行求余运算 在进行除法运算。保证完成交换。这样交换避免了最低位为零的问题4.
一个十进制自然数,它的七进制与九进制表示都是三位数,且七进制与九进制的三位数码表示顺序正好相反。编程求此自然数,并输出显示。
#include <iostream>#include <cstdio>using namespace std;int main(){for ( int i= 49 ; i < 342 ; i++){int n=i;int p1= n % 7; n=n/7;int p2=n % 7;n=n/7;int p3= n% 7 ;if ( p1*81+p2*9+p3==i){ cout << i << endl; cout << p1 << p2 << p3 << endl; cout << p3 << p2 << p1 << endl; break; }}return 0;}注意:本题主要把握七进制三位的最小输入 100 和最大输入 342 这是题目隐藏的限制。使用for语句完成即可
5.
雇佣兵的体力最大值为M,初始体力值为0、战斗力为N、拥有X个能量元素。
当雇佣兵的体力值恰好为M时,才可以参加一个为期M天的战斗期,战斗期结束体力值将为0。在同一个战斗期内,雇佣兵每连续战斗n天,战斗力就会上升1点,n为当前战斗期开始时的战斗力。
一个战斗期结束后,雇佣兵需要用若干个能量元素使其体力恢复到最大值M,从而参加下一个战斗期。每个能量元素恢复的体力值不超过当前的战斗力。每个能量元素只能使用一次。
请问:雇佣兵的战斗力最大可以到达多少。
5 2 10
6
#include <iostream>#include <cstdio>using namespace std;int main(){int M,N,X;cin >> M >> N >> X;while( X > 0){ int t= M/N; N=t+N; if( N > M) { cout << N <<endl; break; } else --X;}if( X =0)cout << "能量已经用完" << endl;return 0;}注意: 要留意break 在不使用break代码的情况下 会使程序会一直循环。
方法二:
#include <iostream>#include <cstdio>using namespace std;int main(){int M,N,X;cin >> M >> N >> X;while(X > 0) {int t = M / N;if( M % N)++t;if( X < t )break;X -= t;t = M / N;N += t;}cout << N;return 0;}
6.
请统计某个给定范围[L, R]的所有整数中,数字2出现的次数。
比如给定范围[2, 22],数字2在数2中出现了1次,在数12中出现1次,在数20中出现1次,在数21中出现1次,在数22中出现2次,所以数字2在该范围内一共出现了6次。
样例 #1:2 22样例 #2:2 100
样例 #1:6样例 #2:20
#include <iostream>#include <cstdio>using namespace std;int main(){int L,R;int total = 0;cin >> L >> R; for(int i = L; i <= R; ++i) {int n = i;while(n) {if( n % 10 == 2)++ total;n /= 10;}}cout << total ;return 0;}
- 程序设计与算法(一)C语言程序设计CAP 第四周
- 程序设计与算法(一)C语言程序设计CAP 第一周
- 程序设计与算法(一)C语言程序设计CAP 第二周编程作业
- 程序设计与算法(一)C语言程序设计CAP 第三周编程作业
- 1:角谷猜想(程序设计与算法(一)第四周测验(2017夏季))
- 4:求特殊自然数(程序设计与算法(一)第四周测验(2017夏季))
- 2:正常血压(程序设计与算法(一)第四周测验(2017夏季)
- 6:数字统计( 程序设计与算法(一)第四周测验(2017夏季)
- 程序设计与算法 第四周测验
- 慕课-程序设计与算法(大学先修课)-郭炜-第四周练习题
- C++程序设计实验报告(三十五)---第四周任务一
- c语言程序设计(第一周)
- C语言程序设计笔记(一)
- C语言程序设计入门(一)
- C语言程序设计(一)-基础知识
- 《C语言程序设计教程》(一)
- c语言程序设计现代算法第8章第9题
- 《程序设计》第四周作业
- 【BZOJ2301】[HAOI2011]Problem b
- 每天一个java小程序之冒泡排序
- 我的第一篇java初学代码
- deeplearning.ai之神经网络和深度学习
- 自动生成 Makefile 尝试
- 程序设计与算法(一)C语言程序设计CAP 第四周
- 【考研】第十六周总结
- jq实现批量上传+裁剪功能
- 初学Android
- 机房总结二
- [黑科技]__gnu_cxx::rope STL中的可持久化数组
- 数据结构--线性表
- 跨浏览器的事件处理程序
- 高效分布式操作解决方案