1. 题目描述
1、首先输入要输入的整数个数 n ,然后输入 n 个整数。输出为 n 个整数中负数的个数,和所有正整数的平均值,
结果保留一位小数。
注意: 0 即不是正整数,也不是负数,不计入计算; 本题有多组输入用例。
输入描述:首先输入一个正整数 n ,然后输入 n 个整数。
输出描述:输出负数的个数,和所有正整数的平均值。
2. 代码实现
比较简单,直接实现
在打印的时候需要注意是有小数点的
我在这里有一个总是不能通过
最后加了if else 判断
c
#include <stdio.h>
int main() {
int a;
int arr[2000] = {0};
while (scanf("%d ", &a) != EOF) {
int i = 0;
for(i = 0; i <a;i++)
{
scanf("%d",&arr[i]);
}
int count = 0;
double avg = 0;
double sum = 0;
int avg_count = 0;
for(i = 0;i <a;i++)
{
if(arr[i]<0)
{
count++;
}
else if(arr[i]>0)
{
sum+=arr[i];
avg_count++;
}
}
if(count ==0&&sum == 0)
{
printf("%d %d\n",0,0);
}
else if(sum == 0&&avg_count == 0){
avg = 0;
printf("%d %lf\n",count,avg);
}
else {
avg = sum/avg_count;
printf("%d %lf\n",count,avg);
}
}
return 0;
}
总是出现这个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。