C_TA_Website/source/_posts/big-homework1.md
2020-11-13 12:51:37 +08:00

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位
```