138 lines
3.6 KiB
Markdown
138 lines
3.6 KiB
Markdown
---
|
|
title: 第一次大作业(题目)
|
|
date: 2020-11-11 21:44:45
|
|
tags:
|
|
---
|
|
|
|
# 大作业的训练目标
|
|
|
|
1. 模块化程序结构设计:从系统的角度进行函数的功能划分和函数的分层设计,程序结构要清晰。
|
|
2. 掌握接口概念和函数接口设计:合理设计函数的参数表和返回值
|
|
3. 数据的组织和管理:从系统角度出发,规划程序中使用的全局变量、常量、数组、辅助变量和辅助数组
|
|
4. 交互界面和用户体验:软件功能全面,使用方便,输出排版美观,输入提示周到
|
|
5. 养成良好的编程风格和习惯
|
|
6. 掌握大型程序的调试和测试方法:学会分段调试程序和使用编程环境提供的debug功能。学会选择不同的样本数据检测软件中可能存在的问题。
|
|
|
|
# 数组运算器知识点
|
|
|
|
* 一维数组的定义和使用
|
|
* 循环结构和分支结构
|
|
* 函数的定义和函数的调用
|
|
* 数组作为函数的参数
|
|
* 局部变量和全局变量
|
|
* 数组处理技术(排序,插入,删除,查找,统计,逆置)
|
|
* 数组作为实现算法的辅助工具(筛法求素数,约瑟夫环等)
|
|
|
|
# 数组运算器的分级菜单
|
|
|
|
```
|
|
0、退出
|
|
1、配置系统参数(注:修改程序中几个主要全局变量)
|
|
2、生成样本数据
|
|
1)用指定范围的随机数填充数组
|
|
2)键盘输入
|
|
3)整个数组填同一个值
|
|
4)用等差序列填充数组(注:输入序列的起始值和每项的差值)
|
|
3、显示数组
|
|
4、删除
|
|
1)删除指定下标的元素
|
|
2)删除指定值的元素
|
|
3)删除按指定下标区间的一组元素
|
|
5、插入
|
|
1)按指定下标位置插入新元素
|
|
2)在有序数组中插入新元素
|
|
6、统计
|
|
1)求最大值
|
|
2)求最小值
|
|
3)求平均值
|
|
4)求方差和均方差
|
|
7、查找
|
|
1) 普通查找
|
|
2) 二分查找
|
|
8、判断
|
|
1)是否升序排列
|
|
2)是否降序排列
|
|
3)是否全部相等
|
|
9、排列数组元素
|
|
1)排序
|
|
a. 冒泡法
|
|
b. 选择法
|
|
c. 交换法
|
|
2)逆置数组
|
|
3)左旋数组
|
|
4)右旋数组
|
|
10、数组的其他应用
|
|
1)约瑟夫环
|
|
2)筛法求素数
|
|
11、其他自选功能
|
|
```
|
|
|
|
# 数组运算器的推荐函数
|
|
|
|
```C
|
|
void printarr(int *a, int n);
|
|
//打印数组
|
|
|
|
void FillArray(int a[], int n);
|
|
//生成数组的样本数据
|
|
|
|
void Config();
|
|
//配置系统参数:数组元素个数、一行打印元素个数、每个元素的打印宽度等
|
|
|
|
void Reverse(int a[], int n);
|
|
//逆置数组
|
|
|
|
void insert(int a[], int n, int pos, int val);
|
|
//在数组中pos下标处插入新元素
|
|
|
|
void Delete(int a[], int n, int id);
|
|
//删除指定下标的元素
|
|
|
|
void DeleteRange(int a[], int n, int s, int t);
|
|
//删除s..t下标区间的元素
|
|
|
|
int Search(int a[], int n, int val);
|
|
//查找值为val的元素,找到返回其下标,找不到返回-1
|
|
|
|
int isAsc(int a[], int n);
|
|
//判断数组是否升序排列
|
|
|
|
int isDesc(int a[], int n);
|
|
//判断数组是否降序排列
|
|
|
|
int isEqual(int a[], int n);
|
|
//判断数组是否全相等
|
|
|
|
int max(int a[],int n);
|
|
//返回数组最大值的下标
|
|
|
|
int max(int a[],int n);
|
|
//返回数组最小值的下标
|
|
|
|
float average(int a[],int n);
|
|
//计算数组的平均值
|
|
|
|
void OrderInsert(int a[], int n, int val);
|
|
//在有序数组中插入新元素保持有序性
|
|
|
|
void BubbleSort(int a[], int n);
|
|
//冒泡排序
|
|
|
|
void SelectSort(int a[],int n);
|
|
//选择排序
|
|
|
|
void ExchangeSort(int a[],int n);
|
|
//交换排序
|
|
|
|
int Search(int a[], int n, int val);
|
|
//普通查找
|
|
|
|
int BiSearch(int a[], int n, int val);
|
|
//二分查找
|
|
|
|
int LeftRotate(int a[], int n, int m);
|
|
//左旋m位
|
|
|
|
int RightRotate(int a[], int n, int m);
|
|
//右旋m位
|
|
```
|