基础编程练习题
题号:
7-16
7-1 题意理解
7-2 补零
printf("%d%02d", EndTime/60, EndTime%60);
7-13 OJ 中输出格式的空格与回车问题。
7-15: 1. 阶乘一般会超出常整型。改用double
2. while 里阶乘,累加的循环中间变量每次都要初始化。 编程习惯
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int main()
{
float threshold;
float GeneralTerm = 1;
float Sum = GeneralTerm;
long long Denominator = 1, Numerator = 1;
cin >> threshold;
int n = 1;
while(GeneralTerm >= threshold){
Numerator = 1; // 循环变量每次都要初始化,编程习惯
Denominator = 1;
for(int i = 1; i <= n; i++){
Numerator *= i;
Denominator *= (2*i+1);
}
//cout << Numerator << " " << Denominator<< endl;
GeneralTerm = 1.0 * Numerator / Denominator;
Sum += GeneralTerm;
//cout << GeneralTerm << endl;
n++; // 需要注意,变量累加,编程习惯
}
printf("%.6f\n", Sum * 2.0);
return 0;
}
7-16 不会做 其实是暴力循环,三次遍历全部四个数
7-17 要重复写 基本的循环思考能力。
7-18 1. 函数系数,设为常量
2. 考察的是二分法,思路明确。
3. 思考问题全面,区间端点,中点。
7-25 对于数组,数字位数不确定,可以从前向后存入数组, i-- 输出。 模拟栈。
7-36 %+.f 的妙用, 可以有效判复数虚部的 正负号。
一、
编写C++风格的程序,解决百钱问题,将一元人民币兑换成1、2、5分的硬币,有多少种换法?
//法一:直接法
#include <iostream>
using namespace std;
int main()
{
int i,j,sum=0;
for(i=0; i<=20; i++)
for(j=0; j<=50; j++)
if(100-5*i-2*j>=0) //自己做的时候没有想到这样比较
{
sum++;
//cout<<100-5*i-2*j<<"\t"<<j<<"\t"<<i<<endl;
}
cout<<"sum is\t"<<sum<<endl;
return 0;
}
二、
如果已知英制长度的英尺foot和英寸inch的值,那么对应的米是(foot+inch/12)×0.3048。现在,如果用户输入的是厘米数,那么对应英制长度的英尺和英寸是多少呢?别忘了1英尺等于12英寸。
输入格式:
输入在一行中给出1个正整数,单位是厘米。
输出格式:
在一行中输出这个厘米数对应英制长度的英尺和英寸的整数值,中间用空格分开。
输入样例:
170
输出样例:
5 6
#include <iostream>
using namespace std;
int main()
{
int centi; //容易受到题目所给公式的影响,那个公式仅仅表示所求的整数值
int foot , inch;
double temp;
cin >> centi;
temp = centi / 100.0;
foot = temp/0.3048;
//inch = inch * 12 / 145;
temp = temp/0.3048-foot;
inch = temp*12;
cout <<foot<< " "<<inch<<endl;
return 0;
}
三、
有时候人们用四位数字表示一个时间,比如1106表示11点零6分。现在,你的程序要根据起始时间和流逝的时间计算出终止时间。
读入两个数字,第一个数字以这样的四位数字表示当前时间,第二个数字表示分钟数,计算当前时间经过那么多分钟后是几点,结果也表示为四位数字。当小时为个位数时,没有前导的零,即5点30分表示为530。注意,第二个数