ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

6-2 实验10_2_动态内存分配函数_1 (100 分)

2021-12-24 23:58:00  阅读:154  来源: 互联网

标签:10 函数 int 整数 动态内存 cal 100 array size


1、设计函数int * create(int n) ;,根据整数n创建一个长度为n的整型动态一维数组,并返回动态数组第一个元素的地址。

2、设计函数 void cal(int * array, int size) ;该函数可计算array 所指向的动态一维数组中存储的size个整数的和及平均值,同时寻找其中的最大值、最小值。

输入共两行,第一行为一个整数n(0<n<100)。第二行为n个用空格分隔的整数。第一行在主函数中输入,第二行需在函数cal中输入,并存储在 array 所指向的动态一维数组中。

输出共5行,前四行依次为和、平均值(精确到小数点后两位)、最大值、最小值。最后一行按原样输出输入的那n个整数。前四行需在函数cal中输出,最后一行由主函数输出。

测试数据保证所有整数可以用int型存储。出题者存储浮点数时用的是 float。

函数接口定义一:

int * create(int n) ;

其中 n 为整数数组的长度; 函数需返回动态数组第一个元素的地址。如果没有获得内存则返回NULL。

函数接口定义二:

void cal(int * array, int size) ;

其中 array 和 size 都是用户传入的参数。 array 为整数数组的首地址; size 是数组中所存储的整数的个数。函数没有返回值。

裁判测试程序样例:

#include<stdio.h>
#include<stdlib.h>


int * create(int n) ;
void cal(int * array, int size) ;

int main()
{
    int * array , n , i ;

    scanf( "%d", &n );

    array = create(n) ;
    if ( array == NULL )
        return -1 ; //这里的return是因为没有获得内存而直接结束程序。

    cal( array, n) ;
    for ( i = 0 ; i < n ; i++ )
    {
        printf("%d" , *(array+i) ) ;
        if ( i == n - 1 ) printf("\n") ;
        else printf(" ") ;
    }     

    free(array) ;

    return 0;
}

/* 请在这里填写答案 */

输入样例:

10
1 2 3 4 5 6 7 8 9 10

输出样例:

55
5.50
10
1
1 2 3 4 5 6 7 8 9 10

代码实现: 

#define INFINITE 2147483647
int * create(int n)
{
	int *ptr=(int*)calloc(n,sizeof(int));
	if(ptr!=NULL)
	    return ptr;
	else
	    return NULL;
	
}

void cal(int * array, int size)
{
	int sum=0,i,max=array[0],min=INFINITE;
	float aver;
	for(i=0;i<size;i++)
	{
		scanf("%d",&(array[i]));
		sum+=array[i];
		if(array[i]>max)  max=array[i];
		if(array[i]<min)  min=array[i];
	}
	aver=(float)sum/size;
	printf("%d\n%.2f\n%d\n%d\n",sum,aver,max,min);
	
}

标签:10,函数,int,整数,动态内存,cal,100,array,size
来源: https://blog.csdn.net/qq_62560218/article/details/122137782

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有