这是从百度知道搜寻到的
可是小弟有几行一直看不太懂
#include <stdio.h>
#include <math.h>
#define MAX 50
main(){
char *p,str[301]; /*int 最大为5位数,加上分隔空格为6*50=300字节*/
int arr[MAX];
int i,num,max,min,tem;
float ave,var,stdvar;
gets(str);
p=(char *)strtok(str," ");
if(p!=NULL)
arr[0]=atoi(p); /*atoi(p)将字串常数转为整数*/
//arr[0]=atoi(p) 例如输入:5 4 3 9 只读到5?
i=1;
while(p!=NULL){
p=(char *)strtok(NULL," "); //分别读取 4 3 9
if(p!=NULL){
arr[i]=atoi(p); //arr[1]=4 arr[2]=3 arr[4]=9 是这个意思?
i++;
}
}
num=i; //i=4,输入4个数字
min=32767;
max=0;
//怎么不设成min=0;max=32767;
tem=0;
for(i=0;i<num;i++){
if(arr[i]>max)
max=arr[i];
if(arr[i]<min)
min=arr[i];
tem+=arr[i];
} //for到 }这有点一头雾水,这是什么意思?
ave=(float)tem/num;
tem=0;
for(i=0;i<num;i++)
tem+=(arr[i]*arr[i]-ave*ave); //个别输入数平方总和-平均数的平方?
var=(float)tem/num;
stdvar=sqrt(var);
printf("\n数字个数: %d",num);
printf("\n最大值: %d ",max);
printf("\n最小值: %d",min);
printf("\n平均值: %.2f",ave);
printf("\n方差: %.2f ",var);
printf("\n标准差: %.2f ",stdvar);
getch();
}
这个程式输入 1 46325
46325大概在超出一点点会让标准差的平方(方差) 超过5XXXX-XXXX约9位数字
int不是至少2147483647吗? 10位数字
之后标准差会出现 -1.#J这又是什么意思
方差也变成负数了