首页 > 试题广场 >

记负均正

[编程题]记负均正
  • 热度指数:283661 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
\hspace{15pt}对于给定的 n 个整数 a_1, a_2, \cdots, a_n,统计并计算:
\hspace{23pt}\bullet\,负整数的个数;
\hspace{23pt}\bullet\,正整数的平均值。

输入描述:
\hspace{15pt}第一行输入一个整数 n \left(1 \leqq n \leqq 2 \times 10^3\right) 代表整数的个数。
\hspace{15pt}第二行输入 n 个整数 a_1, a_2, \dots, a_n \left(-10^3 \leqq a_i \leqq 10^3\right) 代表输入的整数。


输出描述:
\hspace{15pt}先输出一个整数,代表负整数的个数;随后在同一行输出一个实数,代表正整数的平均值。

\hspace{15pt}由于实数的计算存在误差,当误差的量级不超过 10^{-6} 时,您的答案都将被接受。具体来说,设您的答案为 a ,标准答案为 b ,当且仅当 \tfrac{|a-b|}{\max(1,|b|)}\leqq 10^{-6} 时,您的答案将被接受。
示例1

输入

6
-1 3 -2 1 0 1

输出

2 1.66666666667
示例2

输入

3
0 0 0

输出

0 0

备注:
\hspace{15pt}本题输出要求已规范,允许细微误差(2025/01/16)。
#include <stdio.h>

#define NUM 2000

int main() {
    int groupnum;
    int a[NUM];
    int Sum1,Sum2,Sum3;
    Sum1 =0,Sum2=0,Sum3=0;
    if(scanf("%d",&groupnum)==EOF)
    {
        return -1;
    }
    for(int i=0;i<groupnum;i++)
    {
        if(scanf("%d",&a[i])==EOF)
        {
            return -1;
        }
        if(a[i]<0)
        {
            Sum1++;
        }

    }

    for(int i=0;i<groupnum;i++)
    {
        if(a[i]>0)
        {
            Sum2=Sum2+a[i];
            Sum3++;
        }
       
    }
    printf("%d ",Sum1);
    if(Sum2==0)
    {
        printf("%.1f",0.0);

    }else
    printf("%.11f",(double)Sum2/Sum3);

    return 0;

}
发表于 2025-04-05 17:21:13 回复(0)
#include <stdio.h>

int main() {
    int a;
    scanf("%d",&a);
    int b;
    int flag1=0;
    int flag2=0;
    float sum=0;
    while(a)
    {
    scanf(" %d",&b);//%d前面空一格吞掉换行符和空格符
    if(b<0)
    {
        flag1++;
    }
    else if(b>0)
    {
        sum+=b;
        flag2++;
    }
    a--;
    }
    if(flag2==0)//flag2为0时,分母为0无法计算
    printf("%d %d",flag1,flag2);
    else
   {
    sum/=flag2;
    printf("%d %f",flag1,sum);
   }
    return 0;
}
发表于 2025-02-01 13:18:36 回复(0)
#include <stdio.h>

int main() {
    int n;
    while (scanf("%d", &n) != EOF) {
        int num, count1 = 0, count2 = 0;
        double sum = 0;
        while (n--) {
            scanf("%d", &num);
            if (num < 0) {
                count1++;
            }
            if (num > 0) {
                sum += num;
                count2++;
            }
        }
        printf("%d %.1f\n", count1, sum == 0 ? 0 : sum / count2);
    }
    return 0;
}

发表于 2024-09-13 00:26:56 回复(0)
#include <stdio.h>

int main() {
    int n,i;
    int result=0;
    int countzheng=0;
    int fushu=0;
    int num;
    scanf("%d", &n);
    for(i=0;i<n;i++){
        scanf("%d", &num);
        if(num<0){
            fushu++;
        }else if(num>0){
            countzheng++;
            result+=num;
        }
    }
    if(countzheng==0){
        printf("%d %.1f", fushu, 0.0);
    }else{
        printf("%d %.1f", fushu, (double)result/countzheng);
    }
    return 0;
}

发表于 2024-08-20 15:31:36 回复(0)
#include <stdio.h>

int main() {
    int inputCnt;
    int sum = 0;
    int zCnt = 0;
    int oCnt = 0;

    scanf("%d", &inputCnt);
    while(inputCnt--){
        int temp;
        scanf("%d", &temp);
        if(0 == temp){
            continue;
        }
        if(temp < 0){
            oCnt++;
        }else{
            zCnt++;
            sum += temp;
        }
    }
    printf("%d ", oCnt);
    if(0 == zCnt){
        zCnt = 1;
    }
    printf("%.1f\n",(float)sum/zCnt);
    return 0;
}

编辑于 2024-03-29 20:56:46 回复(0)
#include <stdio.h>
int main()
{
    int n = 0;
    while (scanf("%d", &n) != EOF)
    {
            int flage = 0;
            int ret = 0;
            int sum = 0;
        int arr[2000] = { 0 };
        for (int i = 0; i < n; i++)
        {
            scanf("%d", &arr[i]);
        }
        for (int i = 0; i < n; i++)
        {
            if (arr[i] < 0)
            {
                flage++;
            }
            if (arr[i] > 0)
            {
                ret++;
                sum += arr[i];
            }
        }
        printf("%d ", flage);
        if (ret == 0)
        {
            printf("0.0\n");
        }
        else
        {
            printf ("%.1f\n", (float)sum / (float)ret);
        }
    }
        return 0;
}

编辑于 2024-01-20 17:49:35 回复(0)
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
    int n = 0;
    scanf("%d", &n);
    int arr[1000] = { 0 };
    int count = 0;
    int a = 0;
    int b = 0;
    for (int i = 0; i < n; i++)
    {
        scanf("%d", &arr[i]);
        if (arr[i] < 0)
        {
            count++;
        }
        if (arr[i] == 0)
        {
            b++;
        }
        if (arr[i] > 0)
        {
            a += arr[i];
        }
    }
    if (b == n)
    {
        printf("0 0.0");
    }
    else
    {
        printf("%d %.1f", count, a * 1.0 / (n - count - b));
    }
    return 0;
}
发表于 2024-01-09 11:07:57 回复(1)
#include <stdio.h>

int main() {
    int n=0;
    while (scanf("%d", &n) != EOF) {
        int ret = 0;
        int flag = 0;
        float aver = 0;
        int digit = 0;
        while(scanf("%d",&digit) != EOF)
        {
            if(digit<0)
            {
                ret++;
            }
            if(digit >0)
            {
                flag++;
                aver += digit;
            }
        }
        printf("%d ",ret);
        if(flag == 0)
        {
            printf("0.0\n");
        }
        else {
            printf("%.1f\n",aver/flag);
        }
    }
    return 0;
}
发表于 2023-10-11 12:44:37 回复(0)
#include<stdio.h>

int main() {
    int n = 0;
    int i = 0;
    int count = 0;
    int add = 0;
    double sum = 0;
    double AVG = 0;
    scanf("%d", &n);
    int arr[2000] = { 0 };
    for (i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
    }
    for (i = 0; i <= n; i++) {
        if (arr[i] < 0)
            count += 1;
            else if(arr[i]==0);
        else {
            add++;
            sum += arr[i];
            AVG = sum / add;
        }
    }
    printf("%d %.1lf", count, AVG);
    return 0;
}

发表于 2023-08-29 11:01:08 回复(0)
#include <stdio.h>

int main() {
    int n = 0;
    scanf("%d", &n);

    int data[2001] = {0};
    for (int i = 0; i < n; i++) {
        scanf("%d", &data[i]);
    }

    int count = 0;
    int count_1 = 0;

    float sum = 0.0;

    for (int i = 0; i < n; i++) {
        if (data[i] < 0) {
            count++;
        }

        if(data[i] > 0) {
            sum += data[i];    
            count_1++;
        }

    }

    if (count_1 == 0) {
        printf("%d 0.0\n", count);
    } else {
        printf("%d %.1f\n", count, sum / count_1);
    }
    return 0;
}
发表于 2023-08-17 13:52:20 回复(0)
#include <stdio.h>
int main() {
    int n = 0;
    int i = 0;
    int arr[2001]={0};
    int negative_num = 0;//记录-1的个数
    double sum = 0;//正整数的总和
    int num = 0;//记录正整数的个数
    int zero_num = 0;//记录零的个数
    double aver_num = 0;//正整数的平均值
    scanf("%d",&n);
    for(i = 0;i<n;i++)
    {
        scanf("%d ",&arr[i]);
        if(arr[i]>0)
        {
            sum+=arr[i];
            num++;
        }     
        else if(arr[i]<0)
            negative_num++;
        else
            zero_num++;

    }
    if(zero_num==n)
        aver_num = 0;
    else
        aver_num=sum/num;
    
    printf("%d %.1lf",negative_num,aver_num);
    return 0;
}

发表于 2023-08-11 21:19:40 回复(0)
#include<stdio.h>

int main() {
    int n = 0;
    int arr[2000] = { 0 };
    scanf("%d", &n);
    int i = 0;
    int count = 0;
    int ret = 0;
    int sum = 0;
    for (i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
    }
    for (i = 0; i < n; i++) {
        if (arr[i] < 0) {
            count++;
        } else if (arr[i] > 0) {
            sum += arr[i];
            ret++;
        }
    }
    if (sum == 0)
        printf("%d %.1f",count,sum*0.0);
    else
    printf("%d %.1f", count, sum * (1.0) / ret);
    return 0;
}
发表于 2023-02-18 15:12:59 回复(0)
#include<stdio.h>
#include<stdlib.h>
int main() {
    int n = 0;
    while (scanf("%d", &n) != EOF) {
        int i = 0;
        int sum = 0;
        float ava = 0.0f;
        int cnt1 = 0;//记录负数
        int cnt2 = 0;//记录除0后的数
        int cnt3 = 0;//记录0的个数
        int* arr = (int*)malloc(n * sizeof(int));
        for (i = 0; i < n; i++) {
            scanf("%d", &arr[i]);
        }
        for (i = 0; i < n; i++) {
            if (arr[i] < 0) {
                cnt1++;
            } else if (arr[i] > 0) {
                sum += arr[i];
                cnt2++;
            } else {
                cnt3++;
            }
        }
        if (cnt3 == n) {
            printf("%d 0.0", cnt1);
        } 
        else {
            ava = (double)sum / cnt2;
            printf("%d %.1f", cnt1, ava);
        }
        free(arr);
        arr = NULL;
    }
    return 0;
}

发表于 2023-01-23 14:49:04 回复(0)
#include <stdio.h>

int main()
{
    //输入
    int n=0;
    scanf("%d\n",&n);
    int arr1[2000]={0};
    int i=0;
    for(i=0;i<n;i++)
    {
        scanf("%d\n",&arr1[i]);
    }

    //查找
    //第一次判断
    int *p=&arr1[0];
    int count1=0; //标志1 计负数的个数
    double count2=0;  //标志2 计正数的个数
    int count3=0;   //标志3 计0的个数
    int sum=0;
    int arr2[]={0};
    for(i=0;i<n;i++)
    {
        if(*(p+i)<0)
        {
            count1++;
        }
        //去掉负数
        else if(*(p+i)>0)
        {
            count2++;
            sum+=*(p+i);
        }

    }
    //计算
    double eve=0;
    eve=sum/count2;
    //输出
    if(count2==0)
    {
        printf("%d 0.0",count1);
    }
    else
    {
        printf("%d %.1lf",count1,eve);
    }




}

发表于 2022-12-31 15:36:17 回复(0)
#include <stdio.h>
int main()
{
    int n=0;
    int sum=0;
    int count1=0;
    int count2=0;
    float ave=0;
    scanf("%d",&n);
    int arr[2000];
    for(int i=0;i<n;i++)
    {
        scanf("%d",&arr[i]);
        if(arr[i]>0)
        {
            sum+=arr[i];
            count1++;
        }
        else if(arr[i]<0)
        {
            count2++;
        }
            
    }

    ave=sum/(float)count1;
    if(count1==0)
    {
        ave=0;
    }
    printf("%d %.1f",count2, ave);
    return 0;
}
发表于 2022-08-27 19:49:16 回复(0)
#include<stdio.h>
#include<string.h>
int main(){
    int n;
    int a;
    int sum=0,fu=0,zh=0;
    float aver;
    scanf("%d",&n);
    for(int i=0;i<n;i++)
    {
        scanf("%d",&a);
        if(a<0)
            fu++;
        else if(a>0)
        {
           zh++; 
           sum+=a;
        }
    }
    printf("%d ",fu);
    if(sum==0)
        aver=0.0;
    else if(sum>0)
        aver=(float)sum/zh;
    
    printf("%.1f",aver);
   
    return 0;
}

发表于 2022-07-24 16:06:35 回复(0)
#include<stdio.h>
int main()
{
	int n = 0;
	int temp = 0;
	int count1 = 0;//累计正数个数
	int count2 = 0;//累计负数个数
	float sum = 0;//计算正数和的平均值
	scanf("%d", &n);//读取输入整数的个数
	while (n > 0)
	{
		scanf("%d", &temp);
		if (temp > 0)
		{
			sum += temp;
			count1++;
		}
		else if (temp < 0)
		{
			count2++;
		}
		n--;
	}
    printf("%d ", count2);
    if (count1 == 0)
    {
        printf("0.0\n");
    }
    else 
    {
        printf("%.1f\n", sum / count1);
    }
	return 0;
}    

发表于 2022-07-12 18:51:27 回复(0)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void)
{
    int n,i=0,tmp = 0;
    int s = 0,negative_nums = 0,postive_nums = 0;
    float aver = 0;
    while(scanf("%d",&n)!=EOF)
    {
        s=0;
        negative_nums = 0;
        postive_nums = 0;
        for(i=0;i<n;i++)
        {
            scanf("%d",&tmp);
            if(tmp > 0)
            {
               postive_nums++;
               s += tmp; 
            }
            else if(tmp < 0)
            {
               negative_nums++; 
            }
        }
        if(postive_nums)
        {
            aver=(1.0*s/postive_nums);
        }
        else
        {
            aver=0;
        }
        printf("%d %.1f\n",negative_nums,aver);
    }
    return 0;
}
发表于 2022-06-19 19:34:07 回复(0)