如何从键盘接收十个整数,存储到数组k中 ,完成如下统计:1.统计大于零的数据个数?

从键盘接收十个整数,存储到数组k中 ,完成如下统计:1.统计大于零的数据个数;
2.统计小于零的数据个数;3.计算所有正数的平均值



#include<iostream>
using namespace std;
int main()
{
int k[10];
int count1 = 0, count2 = 0, sum = 0, count3 = 0;
for (int i = 0; i < 10; i++)
{
cin >> k[i];
if (k[i] > 0)
{
count1++;
sum += k[i];
count3++;
}
else if (k[i] < 0)
{
count2++;
}
}
cout << "大于零的数据个数为:" << count1 << endl;
cout << "小于零的数据个数为:" << count2 << endl;
cout << "所有正数的平均值为:" << (double)sum / count3 << endl;
return 0;
}
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7564075
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:题目:查找数组中第k大的奇数
  • 除此之外, 这篇博客: 两个排序数组中找第k大的数中的 解法二:游标计数 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  •     题目只要求第k大的数,没必要花力气将数组全部再排序,可以定义两个游标分别指向两个有序数组,按序移动,并用count计数,当count等于k时,返回两个游标指向的数中最小的那一个

        时间复杂度O(m+n),空间复杂度O(m+n)

  • 您还可以看一下 李飞老师的C语言开发之数据结构与算法四课程中的 查找无序数组中第K大元素小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:
    #首先定义一个空的列表k
    k=[]
    #通过for循环,让用户输入十个整数,并添加到列表k中
    for i in range(10):
        x=int(input('请输入一个整数: '))
        k.append(x)
    #定义三个变量,分别用于记录大于0的数个数,小于0的数个数以及所有正数的总和
    positive_count=0
    negative_count=0
    positive_sum=0
    #遍历列表k,分别判断每个数是大于0还是小于0,如果是大于0,则记录个数和总和;如果小于0,则记录个数
    for num in k:
        if num>0:
            positive_count+=1
            positive_sum+=num
        elif num<0:
            negative_count+=1       
    #如果k中有大于0的数,则计算平均数
    if positive_count>0:
        positive_avg=positive_sum/positive_count
    else:
        positive_avg=0
    #输出结果
    print('大于0的数据个数为:',positive_count)
    print('小于0的数据个数为:',negative_count)
    print('所有正数的平均值为:',positive_avg)