请修改此程序,做到输入任意个数的数字,对其中所有正数求和\求平均数
本帖最后由 Danmoits 于 2020-10-9 09:21 编辑<#include <stdio.h>
int main(void)
{
int number,sum=0;
double average=0;
int k=0,positive=0,negtive=0;
//positive和negtive是正负数的个数
k=1;
while(k<11)
{scanf("%d",&number);
if(&number!=0)
{
if(&number>0)
{
positive++;
sum+=number;
}
else
{
++negtive;
}
}
k++;
}
average=sum/positive;
printf("positive=%d \n",positive);
printf("negtive=%d\n",negtive);
printf("average=%.1f\n",average);
return 0;
}
此代码可以实现输入10个数,对其中所有正数求和\求平均数
请修改此程序,做到输入任意个数的数字,对其中所有正数求和\求平均数
谢谢!
设置一个可变长数组即可,我的编译器不支持变长数组,,若你的支持,自己试试即可,方法是一样的 本帖最后由 大裤衩子 于 2020-10-9 11:53 编辑
你的源程序就有问题 不知道你所说的输入任意个数字,是怎么个任意法?
是用户输入一个长度,还是遇到什么特殊输入就停止呢?
你写的程序问题太大,不好改,给你写两个。
一个是让用户先输入个数,然后逐个输入数字
一个是直接输入数字,当输入为0的时候结束输入
#include<stdio.h>
int main(){
int k,num;
int negtive=0,positive=0,sum=0;
float average;
printf("你想输入多少个数字:");
scanf("%d",&k);
while(k>0)
{
scanf("%d",&num);
if(num>0)
{
positive++;
sum+=num;
}
else if (num<0)
negtive++;
k--;
}
average=sum*1.0/positive;
printf("positive=%d \n",positive);
printf("negtive=%d\n",negtive);
printf("average=%.1f\n",average);
return 0;
}
#include<stdio.h>
int main(){
int num;
int negtive=0,positive=0,sum=0;
float average;
printf("请逐个输入数字(输入0,则结束输入):");
scanf("%d",&num);
while(num)
{
if(num>0)
{
positive++;
sum+=num;
}
else
negtive++;
scanf("%d",&num);
}
average=sum*1.0/positive;
printf("positive=%d \n",positive);
printf("negtive=%d\n",negtive);
printf("average=%.1f\n",average);
return 0;
} 大裤衩子 发表于 2020-10-9 11:51
你的源程序就有问题
请问哪里有问题 Danmoits 发表于 2020-10-9 22:21
请问哪里有问题
number共10个元素,k=1,你这样做第0个元素没有赋值,k=10的时候数组越界了
页:
[1]