首页 > 试题广场 >

数字分类 (20)

[编程题]数字分类 (20)
  • 热度指数:108549 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
给定一系列正整数,请按要求对数字进行分类,并输出以下5个数字:
A1 = 能被5整除的数字中所有偶数的和;

A2 = 将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3-n4...;

A3 = 被5除后余2的数字的个数;

A4 = 被5除后余3的数字的平均数,精确到小数点后1位;

A5 = 被5除后余4的数字中最大数字。

输入描述:
每个输入包含1个测试用例。
每个测试用例先输入一个不超过1000的正整数N。
然后给出N个不超过1000的待分类的正整数。数字间以空格分隔。


输出描述:
对给定的N个正整数,按题目要求计算A1~A5并在一行中顺序输出。数字间以空格分隔,但行末不得有多余空格。
若其中某一类数字不存在,则在相应位置输出“N”。
示例1

输入

13 1 2 3 4 5 6 7 8 9 10 20 16 18

输出

30 11 2 9.7 9

说明

总共13个数字  
import java.util.*;
public class Main{
    public static void main(String []args){
        Scanner in=new Scanner(System.in);
        int N=in.nextInt();
        int num[]=new int[N];
        int A1=0,A2=0,A3=0,A4=0,A5=0,flag=1,count=0;
        for(int i=0;i<N;i++){
             num[i]=in.nextInt();
            if(num[i]%5==0){
                if(num[i]%2==0)
                A1+=num[i];
            }
            if(num[i]%5==1){
                    A2+=flag*num[i];
                    flag=-flag;
            }
             if(num[i]%5==2){
                A3++;
            }
             if(num[i]%5==3){
                A4+=num[i];
                count++;
            }
             if(num[i]%5==4){
                if(num[i]>A5)
                    A5=num[i];
            }
        }
        if(A1!=0){System.out.print(A1+" ");}
        else{System.out.print('N'+" ");}
        if(A2!=0){System.out.print(A2+" ");}
        else{System.out.print('N'+" ");}
        if(A3!=0){System.out.print(A3+" ");}
        else{System.out.print('N'+" ");}
        if(A4!=0){System.out.print(A4/count+"."+(int)((A4%count*100/count+5)/10)+" ");}
        else{System.out.print("N"+" ");}
        if(A5!=0){System.out.print(A5);}
        else{System.out.print("N");}
    }
}

发表于 2019-05-08 20:16:47 回复(0)
/** 不一定是最好方法,但是省点事 **/
/** 欢迎交流 **/

//空间换时间
//空间O(n)
//时间O(n)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdbool.h>
int main()
{
    int i,j,k;
    bool ifexist;
    int number;//指示n个数
    scanf("%d ",&number);
    int second[5][number];//存储第一次遍历结果
    int first[number];//存储输入的n个数
    int account[5];//存储第一次遍历后各元素个数
    memset(account,0,5*sizeof(int));//初始化
    //保存输入结果
    for(i = 0;i < number;i++){
        scanf("%d",&first[i]);
        if(i != number-1){
            scanf(" ");
        }
    }
    //开始处理
    for(i = 0;i < number;i++){
        j = first[i]%5;
        second[j][account[j]++] = first[i];
    }
    //A1 = 能被5整除的数字中所有偶数的和
    for(i = 0,ifexist = false,k = 0;i < account[0];i++){
        //是偶数
        if(second[0][i] % 2 == 0){
            ifexist = true;
            k += second[0][i];
        }
    }
    if(ifexist == false){
        printf("N ");
    }
    else{
        printf("%d ",k);
    }
    //A2 = 将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3-n4...;
    for(i = 0,ifexist = false,k = 0;i < account[1];i++){
        //偶加奇减
        if(i % 2 == 0){
            ifexist = true;
            k+=second[1][i];
        }
        else{
            k-=second[1][i];
        }
    }
    if(ifexist == false){
        printf("N ");
    }
    else{
        printf("%d ",k);
    }
    //A3 = 被5除后余2的数字的个数;
    printf("%d ",account[2]);
    //A4 = 被5除后余3的数字的平均数,精确到小数点后1位;
    for(i = 0,ifexist = false,k = 0;i < account[3];i++){
        k += second[3][i];
        ifexist = true;
    }
    if(ifexist == false){
        printf("N ");
    }
    else{
        float result = k;
        result/=account[3];
        printf("%.1f ",result);
    }
    //A5 = 被5除后余4的数字中最大数字。
    if(account[4] == 0){
        printf("N");
    }
    else{
        for(i = 1,k = 0;i < account[4];i++){
            if(second[4][i]>second[4][k]){
                k = i;
            }
        }
        printf("%d",second[4][k]);
    }
    return 0;
}

发表于 2019-01-12 23:36:23 回复(0)
import java.util.Scanner;
public class shuzifenlei{
public static void main(String[] args) {
    
int num1=0,num2=0,num3=0,num5=0,n=1;
float b=0.0f;
float num4 = 0.0f;
Scanner sc =new Scanner(System.in);
int N=sc.nextInt();
int [] array= new int[N];


for(int i=0;i<array.length;i++) 
   { 
    array[i]=sc.nextInt();
    if((array[i]%5==0)&&(array[i]%2==0)){//能被5整除并且为偶数
        num1+=array[i]; }
    if(array[i]%5==1) { //将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3-n4...;
        num2=num2+n*array[i];
        n=(-1)*n;
    }
    if(array[i]%5==2) {num3++;}//被5除后余2的数字的个数;
    if(array[i]%5==3) {num4=num4+array[i];// 被5除后余3的数字的平均数,精确到小数点后1位;
    b++;}//求平均数
    if(array[i]%5==4) {//被5除后余4的数字中最大数字。
        if(array[i]>num5) {
                    num5=array[i];
                    }
               }
   }
if(num1==0) 
{System.out.print("N ");}
else System.out.print(num1+" ");
if(num2==0) 
{System.out.print("N ");}
else System.out.print(num2+" ");
if(num3==0) 
{System.out.print("N ");}
else System.out.print(num3+" ");
if(num4==0) 
{System.out.print("N ");}
else System.out.print((float)(int)(num4/b*10+0.5)/10 +" ");
if(num5==0) 
{System.out.print("N ");}
else System.out.print(num5);
                                       }
感觉要疯了.
发表于 2018-11-11 22:12:27 回复(0)
一点一点按照步骤来。需要注意的如下:
1、如果没有满足条件的输出“N”而不是“nan”
2、最后一个数字不需要空格
3、他会 给出数字的个数,也就是第一个数字。测试的时候不用写eof
赞下再走呗~~~~~~~~~~~~~~
代码如下:
#include<iostream>
#include<stdlib.h>
#include<cstring> 
using namespace std;
#define N 10001
int one(int* a,int b)
{  int sum = 0;  for(int i = 0;i<b;i++)  {  if(a[i]%5==0&&a[i]%2==0)sum+=a[i];  }  return sum;
}
int two(int* a,int b)
{  int sum = 0;  bool la = true;  for(int i = 0;i<b;i++)  {  if(a[i]%5==1)  {  if(la==false)  {  sum-=a[i];la = true;  }  else {  sum+=a[i]; la = false;  }    }  }  return sum;
}
int there(int* a,int b)
{  int sum = 0;  for(int i = 0;i<b;i++)  {  if(a[i]%5==2)sum++;  }  return sum;
}
float four(int* a,int b)
{  int sum = 0;float num = 0.0;  for(int i = 0;i<b;i++)  {  if(a[i]%5==3){  sum+=a[i];  num+=1.0;  }  }  if(sum==0)return 0;  else return sum/num;
}
int five(int* a,int b)
{  int sum = 0;  for(int i = 0;i<b;i++)  {  if(a[i]%5==4){  sum = sum>a[i]?sum:a[i];  }  }  return sum;
}
int main()
{
    int a[N];
    int num = 0,k = 0;
    while(cin>>k)
    {  for(int i = 0;i<k;i++)cin>>a[i];  if(one(a,k)==0)cout<<"N ";  else cout<<one(a,k)<<" ";  if(two(a,k)==0)cout<<"N ";  else cout<<two(a,k)<<" ";  if(there(a,k)==0)cout<<"N ";  else cout<<there(a,k)<<" ";  if(four(a,k)==0)cout<<"N ";  else printf("%.1f ",four(a,k));  if(five(a,k)==0)cout<<"N"<<end;;  else cout<<five(a,k)<<endl;  }
    return 0;
}

编辑于 2017-12-27 22:28:06 回复(0)
#include<iostream>
using namespace std;
int main()
{
int n;
int A[5] = {0,0,0,0,0,};
double b=0;
int l = 0;
cin >> n;
for (int i = 0; i<n; i++)
{
int k;
cin >> k;

switch (k % 5)
{
case 0: {if (k % 2 == 0)
{
A[1] = k + A[1];
}
break;
}
case 1: {
l = l + 1;
if (l % 2 == 0)
{
k = k*(-1);
}
A[2] = A[2] + k;
break;
}
case 2: {A[3]++; break; }
case 3: { int j = 0; j = j + 1;
b = b + k; break; }
case 4: {
if (k > A[4])
A[4] = k;
break;
       }
}
}
if (A[1] == 0) cout << " N " << " ";
else cout << A[1] << " ";
if (l == 0) cout << " N " << " ";
else cout << A[2] << " ";
if (A[3] == 0) cout << " N " << " ";
else cout << A[3] << " ";
if (b == 0) cout << " N " << " ";
else cout << b << " ";
if (A[4] == 0) cout << " N " << endl;
else cout << A[4] << endl;
int p;
cin>> p;
return 0;
}
为什么提示我格式错误 该怎么改呢?求大神指点

发表于 2017-07-28 18:17:10 回复(1)


import java.util.Scanner;

public class FiveSort {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
int num = input.nextInt();
   int A1,A2,A3,A5;
   float A4 =0.0f;
   A1 = A2 = A3 = A5 = 0;
   int A2Num = 0;
   int A4Num = 0;
int[] arr = new int[num];
for(int i=0;i<num;i++){
if(input.hasNext())
arr[i] =  input.nextInt();
if(arr[i]%10==0) A1+= arr[i];
if(arr[i]%5==1){
A2Num ++;
if(A2Num%2!=0) A2+= arr[i];
if(A2Num%2==0) A2-= arr[i];
}
if(arr[i]%5==2) A3+=1;
if(arr[i]%5==3){
A4+= arr[i];A4Num++;
}
if(arr[i]%5==4&&arr[i]>A5) A5 = arr[i];
}
if(A1==0) System.out.print("N ");
else
System.out.print(A1 + " ");
if(A2==0) System.out.print("N ");
else
System.out.print(A2 + " ");
if(A3==0) System.out.print("N ");
else
System.out.print(A3 + " ");
if(A4==0) System.out.print("N ");
else{
A4 = ((float)(int)(A4/A4Num*10+0.5))/10;
System.out.print(A4 + " ");
}
if(A5==0) System.out.print("N");
else
System.out.print(A5);
}
}

发表于 2016-07-31 18:36:57 回复(0)
A1 = 能被5整除的数字中所有偶数的和;
A2 = 将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3-n4...;
A3 = 被5除后余2的数字的个数;
A4 = 被5除后余3的数字的平均数,精确到小数点后1位;
A5 = 被5除后余4的数字中最大数字。 
========割 ========
JAVA解题思路,个人愚见:
1.定义所需要的变量,A1,A2,A3,A4,A5。A4需要计算平均数,所以要定义一个COUNT用来计数。对于A2本人也定义了一个COUNT,一旦数字符合A2条件,COUNT++,然后根据COUNT是否能被2整除决定运算符号是 + 还是 -。
2.从控制台读取测试用例的总数,记为NUMS。
3.FOR循环NUMS次,每次都从控制台读取数字N。
4.设定不同的IF条件,将N进行分类。
5.输出结果。
注意:A4所说的保留一位精度经本人测试指的是四舍五入后保留一位精度,不是去尾法保留一位精度!

编辑于 2015-12-04 12:56:34 回复(0)
#include<iostream>
#include<iomanip>
using namespace std;
int main(){
    int num;
    int i = 0; 
    bool isadd = 1;
    int num_a4 = 0;
    while (cin >> num){
        int * arr = new int[num];
        int A1=0, A2=0, A3=0,  A5=0;
        double A4 = 0;
        for (i = 0; i < num; i++){
            cin >> arr[i];
            //A1
            if (arr[i] % 5 == 0 && arr[i] % 2 == 0){
                A1 += arr[i];
            }
            //A2
            if (arr[i] % 5 == 1){
                if (isadd){
                    A2 += arr[i];
                }
                else{
                    A2 -= arr[i];
                }
                isadd = !isadd;
            }
            //A3
            if (arr[i] % 5 == 2){
                A3++;
            }
            //A4
            if (arr[i] % 5 == 3){
                A4 += arr[i];
                num_a4++;
            }
            //A5
            if (arr[i] % 5 == 4){
                if (arr[i] > A5){
                    A5 = arr[i];
                }
            }
        }
        if (A1 == 0){
            cout << "N" << " ";
        }
        else{
            cout << A1 << " ";
        }


        if (A2 == 0){
            cout << "N" << " ";
        }
        else{
            cout << A2 << " ";
        }


        if (A3 == 0){
            cout << "N" << " ";
        }
        else{
            cout << A3 << " ";
        }


        if (A4 == 0){
            cout << "N" << " ";
        }
        else{
            cout << fixed << setprecision(1) << A4 / num_a4 << " ";
        }

        if (A5 == 0){
            cout << "N" << endl;
        }
        else{
            cout << A5 << endl;
        }


    }
}
发表于 2017-07-23 15:21:59 回复(0)
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int a1 = 0;
        int a2 = 0;
        int a3 = 0;
        double a4 = 0;
        int a5 = 0;
        int i = 0;
        int temp = 1;
        int count = 0;
        while (i++ < n){
            int value = scanner.nextInt();
            if (value % 5 == 0 && value % 2 == 0) a1 += value;
            if (value % 5 == 1){
                a2 += temp * value;
                temp *= -1;
            }
            if (value % 5 == 2) a3++;
            if (value % 5 == 3) {
                a4 += value;
                count++;
            }
            if (value % 5 == 4 && value > a5) a5 = value;
        }
        if (a1 != 0) System.out.print(a1 + " ");
        else System.out.print("N ");
        if (a2 != 0) System.out.print(a2 + " ");
        else System.out.print("N ");
        if (a3 != 0) System.out.print(a3 + " ");
        else System.out.print("N ");
        if (a4 != 0) System.out.format("%.1f ",a4/count);
        else System.out.print("N ");
        if (a5 != 0) System.out.print(a5);
        else System.out.print("N");
        scanner.close();
    }

}

发表于 2022-03-03 14:46:15 回复(0)
这个题目废了我太多时间
#include<iostream>
#include <algorithm>
#include<cstdio>
using namespace std;
const int maxn=1000+10;
int arr[6][maxn];
int count_0=0;
int count_1,count_2,count_3,count_4,count_5=0;
int n;
int  main(){
    cin>>n;
        //(cin>>arr[0][count_0]){
    for(int i=0;i<n;i++){
        cin>>arr[0][count_0];
        if(arr[0][count_0]%5==0){
            arr[1][count_1++]=arr[0][count_0++];
        }
        if(arr[0][count_0]%5==1){
            arr[2][count_2++]=arr[0][count_0++];
            
        }
        if(arr[0][count_0]%5==2){
            arr[3][count_3++]=arr[0][count_0++];
        }
        if(arr[0][count_0]%5==3){
            arr[4][count_4++]=arr[0][count_0++];
        }
        if(arr[0][count_0]%5==4){
            arr[5][count_5++]=arr[0][count_0++];
        }
    }//输入完成 建立起这些对应的组别
    int sum_1=0;
    int newway=0;
    for(int i=0;i<count_1;i++){
        if(arr[1][i]%2==0){
            sum_1+=arr[1][i];
            newway++;
        }
    }
    if(newway!=0){
		cout<<sum_1<<" ";
	}else{
		cout<<"N"<<" ";
	}
	int sum_2=0;
    for(int i=0;i<count_2;i+=2){
        sum_2+=arr[2][i];
    }
    for(int i=1;i<count_2;i+=2){
        sum_2-=arr[2][i];
    }
    if(count_2!=0){
        cout<<sum_2<<" ";
    }else{
        cout<<"N"<<" ";
    }
    if(count_3!=0){    
        cout<<count_3<<" ";
    }else{
        cout<<"N"<<" ";
    }
    double d=0;
    int sum_4=0;
    for(int i=0;i<count_4;i++){
        sum_4+=arr[4][i];
    }
    double sum_6=(double)sum_4;
	double count_6=(double)count_4;
	if(count_4!=0){
		d=sum_6/count_6;
    	printf("%.1f ",d);
	}else{
		cout<<"N"<<" ";
	}
	int b[count_5];
	for(int i=0;i<count_5;i++){
		b[i]=arr[5][i];
	}
	sort(b,b+count_5);
	if(count_5!=0){
        cout<<b[count_5-1];
    }else{
        cout<<"N"<<" ";
    }
}

发表于 2022-02-09 17:50:04 回复(0)
# include <stdio.h>
# include <vector>
# include <cmath>
# include <iostream>
# include <iomanip>
using namespace std;

void solve(vector<int> a, double temp[]) {
    int i = 0, n = 2, flag = 0;
    //A1
    while (i++ < a.size()) {
        if (!(a[i - 1] % 5) && !(a[i - 1] % 2))temp[0] += a[i - 1];
        if (a[i - 1] % 5 == 1) { temp[1] += pow(-1, n++) * a[i - 1]; }
        if (a[i - 1] % 5 == 2)temp[2] += 1;
        if (a[i - 1] % 5 == 3) { flag++, temp[3] += a[i - 1]; }
        if (a[i - 1] % 5 == 4) { if (temp[4] < a[i - 1])temp[4] = a[i - 1]; }
    }
    if(flag)temp[3] /= flag;
}
int main() {
    vector<int> a;
    int i = 0, n;
    double temp[5] = { 0 };
    cin >> n;
    while (cin >> i) {
        a.push_back(i);
    }
    solve(a, temp);
    for (int j = 0; j < 5; j++) {
        if (temp[j]) {
            if (j == 3)cout << fixed << setprecision(1) << temp[j] << " ";
            else cout <<int (temp[j]) << " ";
        }
        else cout << "N ";
    }
}
发表于 2021-10-19 18:53:27 回复(0)
封装。
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * Copyright (C), 2019-2020, CPS Lab
 *
 * @ProjectName: PATProjects
 * @Package: PACKAGE_NAME
 * @ClassName: PAT1002B
 * @Author: Tristan Shu
 * @CreateDate: 2020/10/19 7:00 下午
 * @Version: 1.0
 */
public class PAT1002B {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int N = scanner.nextInt();
        List<Integer> A1 = new ArrayList<>();
        List<Integer> A2 = new ArrayList<>();
        List<Integer> A3 = new ArrayList<>();
        List<Integer> A4 = new ArrayList<>();
        List<Integer> A5 = new ArrayList<>();
        for(int i = 0; i < N; i++){
            int temp = scanner.nextInt();
            switch (temp % 5){
                case 0:
                    A1.add(temp);
                    break;
                case 1:
                    A2.add(temp);
                    break;
                case 2:
                    A3.add(temp);
                    break;
                case 3:
                    A4.add(temp);
                    break;
                case 4:
                    A5.add(temp);
                    break;
                default:
                    break;
            }
        }
        System.out.print(getEvenSum(A1) + " ");
        System.out.print(getSpeSum(A2) + " ");
        System.out.print(getNum(A3) + " ");
        System.out.print(getAverage(A4) + " ");
        System.out.print(getMax(A5));
    }
    private static String getEvenSum(List<Integer> list){
        int sum = 0;
        if(list.isEmpty()){
            return "N";
        }
        while (!list.isEmpty()){
            if(list.get(0) % 2 == 0){
                sum += list.remove(0);
            }else {
                list.remove(0);
            }

        }
        return sum == 0 ? "N":String.valueOf(sum);
    }
    private static String getSpeSum(List<Integer> list){
        int sum = 0;
        if(list.isEmpty()){
            return "N";
        }
        while (!list.isEmpty()){
            sum += list.remove(0);
            if(!list.isEmpty()) {
                sum -= list.remove(0);
            }
        }
        return String.valueOf(sum);
    }
    private static int getNum(List<Integer> list){
        return list.size();
    }
    private static String getAverage(List<Integer> list){
        int num = getNum(list);
        if(list.isEmpty()){
            return "N";
        }
        float ans = 0;
        int sum = 0;
        while (!list.isEmpty()){
            sum += list.remove(0);
        }
        ans = sum/(float)num;
        return String.format("%.1f",ans);
    }
    private static String getMax(List<Integer> list){
        if(list.isEmpty()){
            return "N";
        }
        int max = Integer.MIN_VALUE;
        while(!list.isEmpty()){
            max = Math.max(max, list.remove(0));
        }
        return String.valueOf(max);
    }
}


发表于 2020-10-19 20:00:18 回复(0)
int main(){
  	int n;
  	cin>>n;
  	int a[6]={0},b[6]={0};
  	int a2=1,a4=0;
  	while(n--){
  		int x;
	  	cin>>x;
		switch(x%5){
			case 0:if(x%2==0){a[1]+=x;b[1]++;}break;
			case 1:a[2]+=x*a2;a2=-a2;b[2]++;break;
			case 2:a[3]++;b[3]++;break;
			case 3:a[4]+=x;a4++;b[4]++;break;
			case 4:a[5]=max(a[5],x);b[5]++;break;
		}
  	}
  	if(b[1]) cout<<a[1]<<" "; else cout<<"N ";
  	if(b[2]) cout<<a[2]<<" "; else cout<<"N ";
  	if(b[3]) cout<<a[3]<<" "; else cout<<"N ";
  	if(b[4]) cout<<fixed<<setprecision(1)<<(a[4]/(double)a4)<<" "; else cout<<"N ";
	if(b[5]) cout<<a[5]; else cout<<"N";
  	return 0;
}
太长了????去掉了头文件
发表于 2020-05-16 11:00:54 回复(0)
import java.util.Scanner;

public class Main2 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        int[] arr=new int[n];
        for(int i=0;i<n;i++){
            arr[i]=sc.nextInt();
        }
        int A1=0,A2=0,A3=0,A5=0;
        double A4=0.0;
        int flag=1,count=0; //flag是为了方便计算A2,count是为了方便计算A4
        for(int i=0;i<n;i++){
            //A1= 能被5整除的数字中所有偶数的和;
            if(arr[i]%10==0){
                A1+=arr[i];
            }
            //A2= 将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3-n4...;
            if(arr[i]%5==1){
                A2+=flag*arr[i];
                flag=-flag;
            }
            //A3= 被5除后余2的数字的个数;
            if(arr[i]%5==2){
                A3++;
            }
            //A4= 被5除后余3的数字的平均数,精确到小数点后1位;
            if(arr[i]%5==3){
                A4+=arr[i];
                count++;
            }
            //A5= 被5除后余4的数字中最大数字。
            if(arr[i]%5==4){
                if(A5<arr[i]){
                    A5=arr[i];
                }
            }
        }
        //按照题目上的要求输出即可
        if(A1!=0){
            System.out.print(A1+" ");
        } else{
            System.out.print('N'+" ");
        }
        if(A2!=0){
            System.out.print(A2+" ");
        } else{
            System.out.print('N'+" ");
        }
        if(A3!=0){System.out.print(A3+" ");
        } else{
            System.out.print('N'+" ");
        }
        if(A4!=0){
            System.out.printf("%.1f ",A4/count);
        } else{
            System.out.print("N"+" ");
        }
        if(A5!=0){
            System.out.print(A5);
        } else{
            System.out.print("N");
        }
    }
}

发表于 2019-12-04 10:03:54 回复(0)
#include<iostream>
#include <iomanip>
using namespace std;
int arr[1001];
int sum1=0;
int sum2=0;
int sum4=0;
int maxnum=0;
char c;
int a2=0,a3=0;
float a4=0;
int len;
int flag=0;
int main(){     int R;     cin>>len;     for(int i=0;i<len;i++){             cin>>arr[i];         c=cin.get();                  R=arr[i]%5;         if(R==0){             if(arr[i]%2==0){                 sum1+=arr[i];                 }         }else if(R==1){             if(flag==0){                 sum2+=arr[i];                 a2++;                 flag=1;             }else if(flag==1){                 sum2-=arr[i];                 a2++;                 flag=0;             }         }else if(R==2){             a3++;         }else if(R==3){             sum4+=arr[i];             a4++;         }else if(R==4){             if(maxnum<arr[i]){                 maxnum=arr[i];             }         }         if(c=='\n'){             break;         }     }     (sum1==0)?(cout<<"N"):(cout<<sum1);          if(sum2==0&&a2==0){         cout<<" "<<"N";     }else if(sum2==0){         cout<<" "<<0;     }else{         cout<<" "<<sum2;     }          (a3==0)?(cout<<" "<<"N"):(cout<<" "<<a3);     (a4==0)?(cout<<" "<<"N"):(cout<<" "<<fixed << setprecision(1) <<sum4/a4);     (maxnum==0)?(cout<<" "<<"N"):(cout<<" "<<maxnum);     return 0;
}




编辑于 2019-07-22 12:21:28 回复(0)
#include <iostream>
#include<iomanip>
using namespace std;

int main()
{
    int n,i,m;
    int sum1=0,sum2=0,sum4=0;
    int count1=0,count2=0,count3=0,count4=0,count5=0,max5=0,flag=1;
    float ave;
    cin>>n;
    for(i=1;i<=n;i++)
    {
        cin>>m;
        if((m%5==0)&&(m%2==0))
        {
            sum1+=m;
            count1++;
        }
        else if(m%5==1)
        {
            sum2=sum2+flag*m;
            flag*=-1;
            count2++;
        }
        else if(m%5==2)
        {
            count3+=1;
        }
        else if(m%5==3)
        {
            sum4+=m;
            count4++;
        }
        else if(m%5==4)
        {
            if(m>=max5)
            {
                max5=m;
            }
            count5++;
        }
    }
    if(count1==0)cout<<"N"<<" ";
    else cout<<sum1<<" ";
    if(count2==0)cout<<"N"<<" ";
    else cout<<sum2<<" ";
    if(count3==0)cout<<"N"<<" ";
    else cout<<count3<<" ";
    if(count4==0)cout<<"N"<<" ";
    else
    {
        ave=float(sum4)/(float(count4));
        cout<<fixed<<setprecision(1)<<ave<<" ";
    }
    if(count5==0)cout<<"N";
    else cout<<setprecision(0)<<max5;
}
题目不难,注意好格式即可,改成小数后要把格式再改回去,计算时用个类型转换,轻轻松松

发表于 2019-07-07 12:29:42 回复(0)
public class Main { public static void main(String[] args) { int n, num;  int a1, a2, a3, a4, a4Count, a5;  a1 = a2 = a3 = a4 = a4Count = 0;  a5 = Integer.MIN_VALUE;  boolean a2Add = true;  Scanner scanner = new Scanner(System.in);  n = scanner.nextInt();  for (int i = 0; i < n; i++) {
            num = scanner.nextInt();  if (num % 5 == 0 && num % 2 == 0) {
                a1 += num;  } if (num % 5 == 1) { if (a2Add) {
                    a2 += num;  } else {
                    a2 -= num;  }
                a2Add = !a2Add;  } if (num % 5 == 2) {
                a3++;  } if (num % 5 == 3) {
                a4 += num;  a4Count++;  } if (num % 5 == 4) { if (num > a5) {
                    a5 = num;  }
            }
        }
        scanner.close();  System.out.print(a1 != 0 ? a1 + " " : "N ");  System.out.print(a2 != 0 ? a2 + " " : "N ");  System.out.print(a3 != 0 ? a3 + " " : "N ");  if (a4Count == 0) {
            System.out.print("N ");  }else {
            System.out.printf("%.1f ",1.0 * a4 / a4Count);  }
        System.out.print(a5 != Integer.MIN_VALUE ? a5 : "N");   }
}

发表于 2019-04-01 22:30:11 回复(0)
importjava.text.DecimalFormat;//数字格式化包
importjava.util.*;
publicclassMain {
publicstaticvoidmain(String args[]) {
    Scanner sc=newScanner(System.in);
    inta=0,b=0,c=0,max=0,q=1,s=0;
    DecimalFormat df=newDecimalFormat("#.0");//创建格式化对象,格式为保留小数点后1位
    doubled=0.0;
    intN=sc.nextInt();//输入N
    intarr[]=newint[N];//创建数组容纳数据
    for(inti=0;i<arr.length;i++) {
        arr[i]=sc.nextInt();//开始写入数据
    }
    for(intx:arr) {//开始遍历数组
        if(x%5==0&&x%2==0) {//A1,能被5整除的偶数和
            a=x+a;
        }
         
        if(x%5==1) {//A2,将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3-n4...
            x=x*q;
            q=q*(-1);
            b=b+x;
        }
             
        if(x%5==2) {//A3,被5除后余2的数字个数
            c=c+1;
        }
         
        if(x%5==3) {//A4,被5除后余3的数字的平均数,精确到小数点后1位
            d=d+x;
            s=s+1;
        }
        if(x%5==4&&max<x) {
            max=x;
        }
    }
    if(d==0) {
        s=1;
    }
    d=(double)d/(double)s;//当s=0的时候,语***错误
                if(a==0){
                    System.out.print("N"+" ");
                }else{
                    System.out.print(a+" ");
                }
                if(b==0){
                    System.out.print("N"+" ");
                }else{
                    System.out.print(b+" ");
                }
                if(c==0){
                    System.out.print("N"+" ");
                }else{
                    System.out.print(c+" ");
                }
                if(d==0){
                    System.out.print("N"+" ");
                }else{
                    System.out.print(df.format(d)+" ");
                }
                if(max==0){
                    System.out.print("N");
                }else{
                    System.out.print(max);
                }
}
}

发表于 2018-04-13 17:08:35 回复(0)
#include<stdio.h>
#define MAX 1000
int main()
{
    int num[MAX], N, i, yushu, A1 = 0, A2 = 0, A3 = 0;
    int A5 = 0, count = 0, count3 = 0;
    float sum = 0, count2 = 0;
    scanf("%d", &N);
    for(i = 0; i < N; i++)
    {
        scanf("%d", &num[i]);
    }
    for(i = 0; i < N; i++)
    {
        yushu = num[i] % 5;
        switch(yushu)
        {
            case 0:
                if(!(num[i]%2))        //是偶数
                    A1 += num[i];
                break;
            case 1:
                if(!count)            //如果count为0
                    A2 = num[i];
                else if(count%2)       //如果为奇数个
                    A2 -= num[i];
                else
                    A2 += num[i];
                count++;
                break;
            case 2:
                A3++;
                break;
            case 3:
                sum += num[i];
                count2 += 1;
                count3++;
                break;
            case 4:
                if(num[i] > A5)
                    A5 = num[i];
                break;
            default:
                break;
        }
    }
    printf(!A1 ? "N " : "%d ", A1);
    printf(!count ? "N " : "%d ", A2);
    printf(!A3 ? "N " : "%d ", A3);
    printf(!count3 ? "N " : "%.1f ", sum/count2);
    printf(!A5 ? "N" : "%d", A5);
    
}
发表于 2018-03-30 13:56:26 回复(0)
#include<iostream>
#include<stdio.h>
using std::cin;
using std::cout;
int max(int a,int b){
     if(a>b) return a;
     else return b;
     }
int main(){
int a1,a2,a3,a5,n,k;
double a4,s;
int x,i,b2,b3;
a1=0;k=1;a2=0;a3=0;s=0;i=0;a5=0;b2=0;
 cin>>n;
 for (int j=1;j<=n;j++){
     cin>>x;
 if (x%5==0&&x%2==0)  {a1=a1+x;}
  else if(x%5==1) {a2=a2+k*x;k=k*-1;b2++;}
  else if(x%5==2) {a3++;b3=-1;}
  else if(x%5==3) {s=s+x;i++;}
  else {a5=max(a5,x);}
}
if(a1==0) printf("N ");else cout<<a1<<" ";
if(b2==0) printf("N ");else cout<<a2<<" ";
if(b3!=-1) printf("N ");else cout<<a3<<" ";
if(i==0) printf("N ");else printf("%.1f ",s/i);
if(a5==0) printf("N");else cout<<a5;
 system("pause");
}
发表于 2017-08-16 11:47:26 回复(0)