不与最大数相同的数字之和 - 计蒜客题目

不与最大数相同的数字之和

输出一个整数数列中不与最大数相同的数字之和。

输入格式
输入分为两行:

第一行为 N(N 为接下来数的个数,N≤100);

第二行为 N 个整数,数与数之间以一个空格分开,每个整数的范围是 -1,000,000到 1,000,000。

输出格式
输出为 N 个数中除去最大数其余数字之和。

输出时每行末尾的多余空格,不影响答案正确性

要求使用「文件输入输出」的方式解题,输入文件为 sum.in,输出文件为 sum.out

样例输入
3
1 2 3
样例输出
3

思路:
1. 这道题需要寻找最大值,所以我们可以利用打擂台的思想. 如果目前这个数大于以前的最大数,则最大数更新.
2. 注意:这个数组中会出现负数,所以保存最大数的变量不可以为0,必须为一个极小的负数. 这里给大家推荐: -0x3f3f3f3f 这个数极小,等于: -1061109567

代码:

#include 
#include 
#include 
#include 
using namespace std;
int main() {
    freopen("sum.in", "r", stdin);
    freopen("sum.out", "w", stdout);

    int n;
    int maxn=-0x3f3f3f3f; //上面已经介绍过了
    int sum=0;

    cin>>n;//输入整数个数n
    int a[n+1]; //个人习惯,可以不加1,但是后面的for循环要改为从0-n哦!
    for(int i=1;i<=n;i++){
        cin>>a[i];//输入n个整数
    }
    for(int i=1;i<=n;i++){
        if(a[i]>maxn)	maxn=a[i];//记录最大值
    }
    for(int i=1;i<=n;i++)//计算除去与最大值相同的数的和
        if(a[i]!=maxn)
            sum+=a[i];

    cout<<sum<<endl;
    return 0; //华丽结束!
}

这是蒟蒻的第二篇博客,希望大佬们支持!!!
我们下一篇博客见!

你可能感兴趣的:(不与最大数相同的数字之和 - 计蒜客题目)