东华期中考

水一篇博客。

1. 三个数的和、积与平均值

值得注意的有两点:

  1. 防止溢出
  2. fixed会使此行后的所有行都固定输出位数。
  3. 解决方法:
    1. double储存。其实这题似乎没有考虑到这个问题。
    2. 输出位数在前两个可以用强制转换为int来防止输出多位。
    3. 或者直接在每一行都加入一句setprecision();不需要的填入0,需要的填入需要保留的位数。
  4. 四舍五入:原数* 1 0 需 要 保 留 的 位 数 10^{需要保留的位数} 10+0.5再转换为int去尾。最后再除以 1 0 需 要 保 留 的 位 数 10^{需要保留的位数} 10还原。
#include <bits/stdc++.h>

using namespace std;

int main()
{
    double a,b,c;
    while(cin>>a>>b>>c){
        //和、乘积、平均数
        cout<<(int)(a+b+c)<<" ";
        cout<<(int)(a*b*c)<<" ";
        double temp = (a+b+c)/3.0;
        temp=(int)(temp*100+0.5);
        cout<<fixed<<setprecision(2)<<(temp/100)<<endl;
    }
    return 0;
}

2. 计算器
问题描述 :

请编程实现一个简单的计算器,支持+,-,*,/四种运算。只考虑输入为整数和0的情况。

(1)如果出现除数为0的情况,则输出:“zero”

(2)如果出现无效的操作符(即不为+,-,*,/之一),则输出:“error”(不包含双引号)

(3)如果能正常计算,则输出计算结果。如果是除法,保留两位小数,如果是其它运算,则输出一个整数。

正常条件判断皆可。

值得注意的是四舍五入的时候,正数+0.5;负数-0.5.

#include <bits/stdc++.h>

using namespace std;

int main()
{
    int a,b;
    char c;
    while(cin>>a>>b>>c){
        if(c!='+'&&c!='-'&&c!='/'&&c!='*'){
            cout<<"error"<<endl;
        }
        else if(b==0&&c=='/'){
            cout<<"zero"<<endl;
        }
        else{
            if(c=='+'){
                cout<<(int)(a+b)<<endl;
            }
            else if(c=='-'){
                cout<<(int)(a-b)<<endl;
            }
            else if(c=='*'){
                cout<<(int)(a*b)<<endl;
            }
            else{
                double temp = (a*1.0)/(b*1.0);
                if(temp<0)temp=(int)(temp*100-0.5);
                else temp=(int)(temp*100+0.5);
                cout<<fixed<<setprecision(2)<<(temp/100)<<endl;
            }
        }
    }
    return 0;
}
  1. 计数问题
    额,挺简单的。用一个数组的下标来用作需要查找的数,数组元素值对应该下标出现的次数。
#include <bits/stdc++.h>

using namespace std;

int main()
{
    int a,b;
    int c[10]={0};
    cin>>a>>b;
    for(int i=1;i<=a;i++){
        int temp = i;
        while(temp){
            c[temp%10]++;
            temp/=10;
        }
    }
    cout<<c[b];
    return 0;
}
  1. 数组求和

这题我CE就离谱。好像CB每一个变量都需要赋初值否则会出错。太久没用了。

注意:动态规划,每次只需要找到局部最优解就行了。
这种成环问题在遍历的时候可以通过取模(%)的方式来达到循环读每个数组元素的效果。

下面是我回来后刚写的,仅供参考。

#include <iostream>

using namespace std;

int main()
{
    int n,m;
    cin>>n>>m;
    int nums[1001]={0};
    for(int i=0;i<n;i++){
        cin>>nums[i];
    }
    int M=0;
    for(int i=0;i<m;i++){
        cout<<nums[i]<<endl;
        M+=nums[i];
    }
    int temp =0;
    for(int i=0;i<n;i++){
        for(int j=i,s=0;s<m;s++,j++){
            temp+=nums[j%n];
        }
        if(temp>M){
            M=temp;
        }
        temp = 0;
    }
    cout<<M<<endl;
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值