问题标题: 酷町堂:4204 奇偶大不同

0
0
已解决
宣雨楠
宣雨楠
高级守护
高级守护

题目描述 Description

输入一个整数k,然后输入一行正整数,输入-1时表示输入结束。

当k为奇数时,输出这一行正整数中所有奇数的和。

当k为偶数时,输出这一行正整数中所有偶数的平均值(保留两位小数)。

输入描述 Input Description

两行,第一行输入整数k。
第二行输入若干个正整数,以及最后一个数-1,用空格隔开。

输出描述 Output Description

一行,当k为奇数时输出奇数的和。
当k为偶数时输出偶数的平均值(保留两位小数)。

样例输入 Sample Input

【输入样例1】 3 5 7 2 4 8 -1 【输入样例2】 6 5 7 2 4 8 -1

样例输出 Sample Output

【输出样例1】 12 【输出样例2】 4.67

这是一个死循环代码:

#include<iostream>
#include<cstdio>
using namespace std;
long long sum;
int main(){
    int k,a;
    cin>>k>>a;
    while(a!=-1){
        if(k%2==1){
            sum+=a;
            cout<<sum;
        }
        else{
            sum+=a;
            printf("%.2f",sum/a);
        }
    }
    return 0;
}


0
已采纳
张帆
张帆
中级天翼
中级天翼

将cin>>a;

移至while循环下面一行,将在循环里面的printf去掉,在while循环外判断并输出。

0
王文博
王文博
缔造者之神
缔造者之神
核心代码:
cin>>k;
    if(k%2==0)
    {
        while(a!=-1)
        {
            cin>>a;
            if(a%2==0&&a!=-1)
            {
                cnt++;
                sum+=a;
            }
        }
        printf("%.2f",sum*1.0/cnt);
    }
    else
    {
        while(a!=-1)
        {
            cin>>a;
            if(a%2==1&&a!=-1) sum+=a;
        }
        cout<<sum;
    }

 

0
陈正朔
陈正朔
初级光能
初级光能

你的代码我没看懂啊

我的核心

do{
        cin>>n;
        if(k%2==0){
            if(n%2==0){
                sum+=n;
                cnt++;
            }
        }
        else{
            if(n%2==1){
                ans+=n;
            }
        }
    }while(n!=-1)

最后判断部分:

如果k是偶数,输出1.0*sum/cnt (注意保留小数)

否则,输出ans

 

我要回答