C语言初阶牛客网刷题—— HJ97 记负均正【难度:简单】 ...

十念  论坛元老 | 2025-1-25 17:30:55 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1025|帖子 1025|积分 3075

1. 标题描述

牛客网在线OJ题
1、首先输入要输入的整数个数 n ,然后输入 n 个整数。输出为 n 个整数中负数的个数,和全部正整数的平均值,
效果保留一位小数。
注意: 0 即不是正整数,也不是负数,不计入计算; 本题有多组输入用例。
输入描述:首先输入一个正整数 n ,然后输入 n 个整数。
输出描述:输出负数的个数,和全部正整数的平均值。
2. 代码实现

   比较简单,直接实现
在打印的时间必要注意是有小数点的
我在这里有一个总是不能通过
末了加了if else 判断
  1. #include <stdio.h>
  2. int main() {
  3.     int a;
  4.     int arr[2000] = {0};
  5.     while (scanf("%d ", &a) != EOF) {
  6.         int i = 0;
  7.         for(i = 0; i <a;i++)
  8.         {
  9.             scanf("%d",&arr[i]);
  10.         }
  11.         int count = 0;
  12.         double avg = 0;
  13.         double sum = 0;
  14.         int avg_count = 0;
  15.         for(i = 0;i <a;i++)
  16.         {
  17.             if(arr[i]<0)
  18.             {
  19.                 count++;
  20.             }
  21.             else if(arr[i]>0)
  22.             {
  23.                 sum+=arr[i];
  24.                 avg_count++;
  25.             }
  26.         }
  27.         if(count ==0&&sum == 0)
  28.         {
  29.          printf("%d %d\n",0,0);
  30.         }
  31.         else if(sum == 0&&avg_count == 0){
  32.         avg = 0;
  33.          printf("%d %lf\n",count,avg);
  34.         }
  35.         else {
  36.          avg = sum/avg_count;
  37.          printf("%d %lf\n",count,avg);
  38.         }
  39.       
  40.     }
  41.     return 0;
  42. }
复制代码

   总是出现这个nan

    NAN的产生缘故原由:
nan: not a number,表示“无效数字”。
1、对负数开方,如:−1.0‾‾‾‾‾√;
2、对负数求对数,如:log(−1.0);
3、0.0 / 0.0;
4、0.0 * inf;
5、inf / inf;
6、nf-inf这些操作都会得到nan。
(0 / 0会产生操作非常;0.0 / 0.0不会产生操作非常,而是会得到nan);
注意:nan是无序的(unordered),无法对其举行逻辑运算。它不大于、小于或便是任何数(包括它自己),将<,>,<=,和>=作用于nan产生一个exception。得到nan时就查看是否有非法操作,如果表达式中含有nan,那么表达式的效果为nan。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

十念

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表