2.
以你的学号作为一个数字模43,如果结果小于10,则增加10,得到的结果作为一个in型数组
的大小。例如,张三的学号是1234,1254%43=7,则数组大小应为size=17。
使用动态内存管理的方法为数组开辟存储空间。并且使用你的学号作为随机种子初始化sand函
数,得到一个值属于5,5引之间的随机数组。
设计一个程序;计算数组元素的总和,平均值,方差,最大值,最小值,并且对数组进行从小到
大的排序(要求将排序函数单独封装,其他功能写在main中)。
OK
你学号多少啊????
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
//得到一个值属于5,5引之间的随机数组。---这句话没看懂啊
void sort(int *a,int n)
{
int i,j,t;
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
{
if(a[j] > a[j+1])
{
t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
}
}
int main()
{
int i,sum=0,max=0,min=0;
int n = STU_ID%43;
double avg = 0,fc=0;
if(n<10)
n+=10;
srand(STU_ID);
int *arr = (int*)malloc(sizeof(int)*n);
for(i=0;i<n;i++)
{
arr[i] = rand()%55;
sum += arr[i];
if(i==0 || arr[i] > max)
max = arr[i];
if(i==0 || arr[i] < min)
min = arr[i];
}
sort(arr,n);
avg = sum*1.0/n;
for(i=0;i<n;i++)
fc += (arr[i]-avg)*(arr[i]-avg);
fc/=n;
printf("总和=%d,平均值=%.1f,方差=%.1f,最大值=%d,最小值=%d\n",sum,avg,fc,max,min);
printf("排序后数组为:\n");
for(i=0;i<n;i++)
printf("%d ",arr[i]);
return 0;
}
#include <stdio.h>
/* 需要用到数学公式,所以添加头文件 */
#include <math.h>
//定义常量,数组长度
#define LEN 5
//计算方差
float calculateSD(int arr[],float ave);
int main()
{
int array1[LEN] = {1,2,3,0,-1};
int sum = 0;//和
float ave = 0.0;//平均值
int max,min;//最大值和最小值
printf("示例1:正序或者逆序依次输出数组中的元素\n");
for(int i = 0; i < LEN; i++)
{
printf("正序,输出数组第%d个元素:%d\n",i,array1[i]);
}
printf("\n");
for(int j = LEN; j >= 0; j--)
{
printf("逆序,输出数组第%d个元素:%d\n",j,array1[j]);
}
printf("***********************************************\n");
printf("示例2:求数组的和以及平均值\n");
for(int i = 0; i < LEN; i++)
{
sum += array1[i];
}
ave = (float)sum / LEN;
printf("数组的和为:%d",sum);
printf("数组的平均值为:%.2f",ave);
printf("***********************************************\n");
printf("示例3:求数组的最大值和最小值\n");
max = array1[0];//默认数组的最大值和最小值均为数组的第一个元素
min = array1[0];
for(int i = 0; i < LEN; i++)
{
if( max < array1[i])
{
max = array1[i];
}
if(min > array1[i])
{
min = array1[i];
}
}
printf("数组的最大值为:%d,数组的最小值为:%d",max,min);
printf("示例4:数学中的方差计算\n");
calculateSD(arr,ave);
return 0;
}
//函数实现
float calculateSD(int arr[],float ave)
{
printf("%.f\n",ave); /* 输出平均值 */
float s = 0.0; /* 方差 */
float total = 0.0; /* 平方和 */
float SD = 0.0; /* 标准偏差 */
for(int i = 0;i < LEN; i++)
{
total += pow(arr[i] - ave,2);
printf("%d\n",arr[i]); /* 输出每一项 */
}
s = (float) total / LEN; /* 方差 */
printf("方差为:%.2f\n",s);
SD = (float)sqrt(s); /* 标准偏差 */
printf("标准偏差为:%.2f\n",SD);
return s;
}