CPP2022-22-数组进阶-动态数组(下)

简介: CPP2022-22-数组进阶-动态数组
1. i=0
2. STUDENT_NUM
3. p+i
4. *(p+i)
5. (sum*1.0)/(STUDENT_NUM*1.0)
6. *(p+i)
*(*(p+i)+j)
1. GetMemory(&str,N);
2. free(str);
3. *ptr=(char *)malloc(N *sizeof(char));
1. (p=(int *)malloc(n *sizeof(int)))==Null)
2. scanf("%d",p+i)
3. *(p+i)
1. int (*a)[3],int *b
2. int (*a)[3],int *b
3. tmp=0
4. (*(a+i)+j)
5. (b+i)
1. x
2. result
3. x
4. result
5. result
6. (x+i)
7. result++
1. (a+i)+j
2. p=a
3. i=0;i<m;i++
4. j=0;j<3;j++
5. *(p+i)+j
6. j=0;j<3;j++
7. i=0;i<m;i++
8. *(p+i)+j

 

6-1 实数数组 - 7. 数组的创建

分数 10

全屏浏览题目

切换布局

作者 李祥

单位 湖北经济学院

请编写函数,创建动态实数数组。

函数原型

void ArrayCreate(double **array, int size);

说明:array 为指向动态数组起始地址指针的二级指针,size 为数组尺寸。函数为动态数组分配内存空间,并将数组起始地址保存到 array 所指一级指针中。

size 的值不正确,具体包括以下两种情况:

  • size 的值过小,小于1,无意义,显示错误信息:“Incorrect size!”,程序强行结束,出口代码为 1。
  • size 的值过大,超出实际可用内存,显示错误信息:“Not enough memory!”,程序强行结束,出口代码为 1。

裁判程序

#include <stdio.h> #include <stdlib.h> void ArrayCreate(double **array, int size); void ArrayInput(double *array, int size); void ArrayOutput(const double *array, int size); double ArraySum(const double *array, int size); double ArrayMax(const double *array, int size); double ArrayMin(const double *array, int size); double ArrayAvg(const double *array, int size); int main() { double *a, sum, max, min, avg; int n; scanf("%d", &n); ArrayCreate(&a, n); ArrayInput(a, n); ArrayOutput(a, n); putchar('\n'); printf("%g\n", ArraySum(a, n)); printf("%g\n", ArrayMax(a, n)); printf("%g\n", ArrayMin(a, n)); printf("%g\n", ArrayAvg(a, n)); free(a); a = NULL; return 0; } /* 你提交的代码将被嵌在这里 */ ......

提示:调用 C 库函数中的 malloc 函数来分配内存。若成功,则函数值为得到的内存区域的起始地址,否则为 NULL。

1. void ArrayCreate(double **array, int size)
2. {
3. if(size<1)
4.     {
5. printf("Incorrect size!\n");
6. exit(1);
7.     }
8.     *array=(double*)malloc(size *sizeof(double));
9. if(*array==NULL)
10.     {
11. printf("Not enough memory!\n");
12. exit(1);
13.     }
14. 
15. return 1;
16. }

 

6-2 动态数组

分数 10

全屏浏览题目

切换布局

作者 风林

单位 包头师范学院

本题要求实现一个函数:生成一个长度为n的数组,并把1~n的整数存放在里面。

函数接口定义:

int *getarray ( int n );

参数n是生成的数组长度,函数返回生成数组的首地址。

裁判测试程序样例:

//本程序输入n,生成动态数组,输出数组内容。 #include <stdio.h> #include <malloc.h> int *getarray ( int n ); int main() { int *a=NULL,n,i; scanf("%d",&n); if(n<=0) return 0; a=getarray(n); if(a!=NULL) { for(i=0;i<n;i++) printf("%d ",a[i]); free(a); } return 0; } /* 你的代码将被嵌在这里 */

输入样例:

5

输出样例:

1 2 3 4 5
1. int *getarray ( int n )
2. {
3. int *p=(int*)malloc(n *sizeof(int));
4. for(int i=0;i<n;i++)
5.     {
6.         *(p+i)=i+1;
7.     }
8. return p;
9. }

 

6-3 实数数组 - 8. 数组的销毁

分数 10

全屏浏览题目

切换布局

作者 李祥

单位 湖北经济学院

请编写函数,销毁动态实数数组。

函数原型

void ArrayDestroy(double **array);

说明:array 为指向动态数组起始地址指针的二级指针size 为数组尺寸。函数回收 array 所指一级指针所指示的动态实数数组的内存空间,并将该指针置为空指针(NULL)。

裁判程序

#include <stdio.h> #include <stdlib.h> void ArrayCreate(double **array, int size); void ArrayDestroy(double **array); void ArrayInput(double *array, int size); void ArrayOutput(const double *array, int size); double ArraySum(const double *array, int size); double ArrayMax(const double *array, int size); double ArrayMin(const double *array, int size); double ArrayAvg(const double *array, int size); int main() { double *a; int n; scanf("%d", &n); ArrayCreate(&a, n); ArrayInput(a, n); ArrayOutput(a, n); putchar('\n'); printf("%g\n", ArraySum(a, n)); printf("%g\n", ArrayMax(a, n)); printf("%g\n", ArrayMin(a, n)); printf("%g\n", ArrayAvg(a, n)); ArrayDestroy(&a); return 0; } ...... /* 你提交的代码将被嵌在这里 */ ......

1. void ArrayDestroy(double **array)
2. {
3. free(*array);
4.     *array=NULL;
5. }

 

6-4 使用动态内存分配的冒泡排序

分数 20

全屏浏览题目

切换布局

作者 李廷元

单位 中国民用航空飞行学院

编程实现冒泡排序函数int* bubble_sort(int n);。其中n为数组长度(1≤n≤1000)。

###函数接口定义如下:

int* bubble_sort(int n);/* 对长度为n的数组arr执行冒泡排序 */

请实现bubble_sort函数,使排序后的数据从小到大排列。要求在bubble_sort函数内使用动态内存分配方式分配一个大小为n的数组,再读入待排序数据,排序完成后返回数组。

###裁判测试程序样例:

#include <iostream> using namespace std; int* bubble_sort(int n);/* 对长度为n的数组执行冒泡排序 */ int main() { int n; cin >> n; int* a = bubble_sort(n); for (int i = 0; i < n; i++) { cout << a[i]; if (i < n - 1)cout << " "; } cout << endl; return 0; } /* 你的代码将嵌在这里 */

###输入样例:

1. 10
2. 15168 28139 13714 27801 22208 32524 21653 8353 28341 25922

###输出样例:

8353 13714 15168 21653 22208 25922 27801 28139 28341 32524
1. int* bubble_sort(int n)
2. {
3. int *p=(int*)malloc(n *sizeof(n));
4. for(int i=0;i<n;i++)
5.     {
6.         cin>>*(p+i);
7.     }
8. for(int i=0;i<n-1;i++)
9.     {
10. for(int j=i+1;j<n;j++)
11.         {
12. if(*(p+i)>*(p+j))
13.             {
14. swap(*(p+i),*(p+j));
15.             }
16.         }
17.     }
18. return p;
19. }

 

相关文章
|
数据可视化 数据挖掘 大数据
【数据分析与可视化】Matplotlib绘图基础语法讲解(图文解释 超详细)
【数据分析与可视化】Matplotlib绘图基础语法讲解(图文解释 超详细)
458 0
|
监控 前端开发 JavaScript
在线教育系统|线上教学系统|基于Springboot+Vue+Nodejs实现在线教学平台系统
在线教育系统|线上教学系统|基于Springboot+Vue+Nodejs实现在线教学平台系统
260 1
|
2月前
|
人工智能 算法 数据安全/隐私保护
拔俗AI多模态心理风险预警系统:用科技守护心理健康的第一道防线
AI多模态心理风险预警系统通过语音、文本、表情与行为数据,智能识别抑郁、焦虑等心理风险,实现早期干预。融合多源信息,提升准确率,广泛应用于校园、企业,助力心理健康服务从“被动响应”转向“主动预防”,为心灵筑起智能防线。(238字)
|
9月前
|
Unix Linux 编译器
windows下和linux下cmake的规则有区别吗
通过合理使用CMake的条件逻辑和平台特定的配置选项,开发者可以编写更加灵活和健壮的CMake脚本,确保项目在Windows和Linux上的一致性和可移植性。
435 76
|
9月前
|
测试技术 API 开发者
持续上新!Qwen2.5-Max正式发布
持续上新!Qwen2.5-Max正式发布
持续上新!Qwen2.5-Max正式发布
|
10月前
|
人工智能 运维 监控
2025年阿里云服务器配置选择全攻略:CPU、内存、带宽与系统盘详解
在2025年,阿里云服务器以高性能、灵活扩展和稳定服务助力数字化转型,提供轻量应用服务器、通用型g8i实例等多样化配置,满足个人博客至企业级业务需求。针对不同场景(如计算密集型、内存密集型),推荐相应实例类型与带宽规划,强调成本优化策略,包括包年包月节省成本、ESSD云盘选择及地域部署建议。文中还提及安全设置、监控备份的重要性,并指出未来可关注第九代实例g9i支持的新技术。整体而言,阿里云致力于帮助用户实现性能与成本的最优平衡。 以上简介共计238个字符。
|
机器学习/深度学习 人工智能 算法
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
文本分类识别系统。本系统使用Python作为主要开发语言,首先收集了10种中文文本数据集("体育类", "财经类", "房产类", "家居类", "教育类", "科技类", "时尚类", "时政类", "游戏类", "娱乐类"),然后基于TensorFlow搭建CNN卷积神经网络算法模型。通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型,并保存为本地的h5格式。然后使用Django开发Web网页端操作界面,实现用户上传一段文本识别其所属的类别。
428 1
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
|
虚拟化
vmware安装OpenEuler系统
vmware安装OpenEuler系统
|
数据采集 安全 API
数据治理:实现原始数据不出域,确保数据可用不可见的创新策略
在数字化时代,数据成为企业宝贵资产,驱动业务决策与创新。然而,数据量激增和流通频繁带来了安全和管理挑战。“原始数据不出域,数据可用不可见”的治理理念应运而生,通过数据脱敏、沙箱技术和安全多方计算等手段,确保数据安全共享与高效利用。这一理念已广泛应用于金融、医疗等行业,提升了数据价值和企业竞争力。
2209 0