hznu.dodo C++ 实验三 循环

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;  
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值