1.
【描述】
计算数列1+1/3+1/5+…的前n项之和。
【输入】
输入一个正整数n。
【输出】
输出数列前n项的和。
【输入示例】
10
【输出示例】
2.13326
#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
int main(){
int n;
cin >> n;
double total_sum=0;
for(int i=1;i<=n;i++){
total_sum += 1.0/(2.0*i-1);
}
cout << total_sum;
return 0;
}
2.
【描述】
计算如下式子:
的值,计算到最后一项的值小于给定的阈值时为止。
【输入】
输入在一行中给出小于1的阈值。
【输出】
在一行中输出满足阈值条件的式子值,结果保留6位小数。
【输入示例】
0.000001
【输出示例】
2.718282
#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
long jiecheng(int n);
long jiecheng(int n){
int ans_jiecheng=1;
for(int i=1;i<=n;i++){
ans_jiecheng *= i;
}
return ans_jiecheng;
}
int main(){
double n;
cin >> n;
double total_sum=1.0;
for(int i=1;;i++){
if(1.0/jiecheng(i) < n){
cout << fixed << setprecision(6) << total_sum;
break;
}
total_sum += 1.0/jiecheng(i);
}
return 0;
}
3.
【描述】
输入若干个整数,如果输入0,输入即终止。判定读入的整数中有多少个正整数、多少个负整数,并计算这些整数的总和和平均值(0不计算在内)。平均值结果保留2位小数。
【输入】
输入若干个整数,如果输入0,输入即终止。
【输出】
分行输出这些整数中的正整数个数、负整数个数、总和、平均值(0不计算在内)。
若只输入0,则输出:No input。
【输入示例】
-1 -2 -3 -4 -5 6 7 8 9 0
【输出示例】
4 5 15 1.67
#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
int main(){
int n;
cin >> n;
int zheng_shu=0,fu_shu=0,total_sum=0;
double average = 0.0;
while(n!=0){
total_sum += n;
if(n > 0) zheng_shu += 1;
else if(n < 0) fu_shu += 1;
cin >> n;
}
if(total_sum == 0) cout << "No input";
else cout << zheng_shu << endl << fu_shu << endl << total_sum << endl << fixed << setprecision(2) << total_sum/(double)(zheng_shu + fu_shu);
return 0;
}
4.
【描述】
计算数列1+(1+2)+(1+2+3)+(1+2+3+4)+…的前n项之和。
【输入】
输入一个正整数n。
【输出】
输出数列前n项的和。
【输入示例】
3
【输出示例】
10
#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
int total_sum(int n){
int ans_sum = 0;
for(int i=1;i<=n;i++){
ans_sum += i;
}
return ans_sum;
}
int main(){
int n;
cin >> n;
int sum=0;
for(int i=1;i<=n;i++){
sum += total_sum(i);
}
cout << sum;
return 0;
}
5.
【描述】
某工地需要搬运砖块,已知男人一人搬3块,女人一人搬2块,小孩两人搬1块。用45人正好搬45块砖,问有多少种搬法?
【输入】
没有输入。
【输出】
输出搬砖的男人、女人和小孩数。
【输出示例】
A,B,C A、B、C分别表示男人、女人、小孩数。
#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
int main(){
int total_zhuan=0,total_people=0;
for(int i=0;i<15;i++)
{
for (int j = 0; j <23 ; j++)
{
for (int k = 0; k <= 90; k+=2)
{
if(i+j+k==45 && 3*i + 2*j + 0.5*k == 45)
cout<<i<<","<<j<<","<<k<<endl;
}
}
}
return 0;
}
6.
【描述】
给定一个十进制正整数,求其对应的二进制数中1的个数。
【输入】
第一个正整数表示有n(n > 0)个测试数据,其后n行是对应的测试数据,每行为一个正整数。
【输出】
分行输出n个正整数对应的二进制数中1的个数。
【输入示例】
4 2 100 1000 66
【输出示例】
1 3 6 2
#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
int one_number(int x){
int one_total = 0;
while(x>0){
if(x % 2 != 0) one_total+= 1;
x /= 2;
}
return one_total;
}
int main(){
int n;
cin >> n;
while(n--){
int number;
cin >> number;
cout << one_number(number) << endl;
}
return 0;
}
7.
【描述】
在杭师大校园里,没有自行车,上课办事会很不方便。但实际上,并非去办任何事情都是骑车快,因为骑车总要找车、开锁、停车、锁车等,这要耽误一些时间。假设找到自行车,开锁并骑上自行车的时间为27秒;停车锁车的时间为23秒;步行每秒行走1.2米,骑车每秒行走3.0米。请判断走不同的距离去办事,骑车快还是走路快。
【输入】
第一个正整数表示有n(n > 0)个测试数据,其后n行是对应的测试数据,每行为一次办事要行走的距离,单位为米。
【输出】
对应每个办事要行走的距离,如果骑车快,输出一行“Bike”;如果走路快,输出一行“Walk”;如果一样快,输出一行“All”。
【输入示例】
4 50 90 120 180
【输出示例】
Walk Walk Bike Bike
#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
int main(){
int n;
cin >> n;
while(n--){
double distance;
cin >> distance;
double time_walk=0,time_bike=0;
time_walk = distance / 1.2;
time_bike = 27.0 + 23.0 + distance / 3.0;
if(time_bike > time_walk) cout << "Walk" << endl;
else if(time_bike < time_walk) cout << "Bike" << endl;
else cout << "All" << endl;
}
return 0;
}
8.
【描述】
输入一个正整数,从小到大输出该数所有的质因子。
质因数(质因数)是指能整除给定正整数的质数(素数)。
【输入】
输入一个正整数。
【输出】
分行从小到大输出该数所有的质因子。
【输入示例】
120
【输出示例】
2 2 2 3 5
#include <iostream>
using namespace std;
int main()
{
int n;
cin>>n;
for(int i=2;i*i<=n;i++)
{
if(n%i==0)
{
cout<<i<<"\n";
n = n/i;
i--;
}
}
cout<<n;
return 0;
}
9.
【描述】
编写程序,用迭代法求立方根
求立方根的迭代公式为:
当满足如下条件时:
迭代停止。
【输入】
输入一个数。
【输出】
输出该数的立方根。
【输入示例】
27
【输出示例】
3
#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
int main(){
double a;
cin>>a;
double guess = a,newGuess,epsilon = 0.000001,difference;
do{
newGuess = (2.0*guess + a/(guess * guess))/3.0;
difference = abs(newGuess - guess);
guess = newGuess;
}while(difference > epsilon);
if(a != 0) cout << newGuess;
else cout << 0;
return 0;
}
10.【描述】
编写程序,根据输入的字符以及棱形的边长,输出以该字符为填充字符的棱形。
【输入】
输入在一行中给出字符和边长。
【输出】
输出以该字符为填充字符,相应边长的棱形。
【输入示例】
A 5
【输出示例】
A AAA AAAAA AAAAAAA AAAAAAAAA AAAAAAA AAAAA AAA A
#include <iostream>
#include <string>
using namespace std;
void printDiamond(char fillChar, int size) {
for (int i = 0; i < size; ++i) {
for (int j = 0; j < size - i - 1; ++j) {
cout << " ";
}
for (int j = 0; j < 2 * i + 1; ++j) {
cout << fillChar;
}
cout << endl;
}
for (int i = size - 2; i >= 0; --i) {
for (int j = 0; j < size - i - 1; ++j) {
cout << " ";
}
for (int j = 0; j < 2 * i + 1; ++j) {
cout << fillChar;
}
cout << endl;
}
}
int main() {
char fillChar;
int size;
cin >> fillChar >> size;
printDiamond(fillChar, size);
return 0;
}