南航2023-2024下C语言课程设计题目[2024-05-08]

南航2023-2024下C语言课程设计题目[2024-05-08]

1、简单数学问题(难度等级 B)
[问题描述]
1、实现多个简单数学问题的求解。本题的第 3、4 项功能需要画图,请安装 EasyX,并在程序中用 include包含"conio.h"和 "graphics.h"头文件。同时,由于 EasyX 只适用于 C++源程序,因此,程序最前面的部分应做如此处理:

然后将源文件后缀定义为*.cpp 即可。虽然是*.cpp 文件,但程序中依然使用我们常规的 C 语言即可。
2、程序运行后有菜单显示:

若输入的是 0-5 以外的任何符号,程序不做任何响应;只要输入的是 0-5 以内的符号(或者数字),则程序执行相对应的功能,功能结束后依然返回主菜单,可以继续选择做其它操作。输入 0 后,程序结束。
[基本要求]
1、 相邻数对
提示用户输入数据规模 N,然后利用 rand()函数随机生成 N 个正整数(要求所有整数均小于 10000),对这些数据处理,找出其中包含的所有相邻数对(数值相差为 1 的两个整数)以及相邻数对的总数。例如,若 N=7,随机生成 7 个数据{2,0,3,6,1,0,4},其中一共包括 4个相邻数对,那么应该输出:
(1,0)、(1,2)、(2,3)和(4,3) 一共 4 个相邻数对
注意,(0,1)和(1,0)是相同的相邻数对,不要重复统计和输出显示。不允许使用双重循环穷的方式寻找相邻数对。
2、方程求解
提示用户输入三个系数(实型)作为一元二次方程中的三个系数 a、b 和 c。若输入
正确(即 a、b、c 均被正确赋值),则根据输入的三个数据,求解并输出方程的根。注意要考虑全部可能的情况,即只有一个实根、两个不同的实根、两个相同的实根、两个虚根。若输入有误(即 a、b、c未被正确赋值),则提示用户重新输入。
3、 心形曲线:利用画图函数,在屏幕上用红色“”描绘出两个笛卡尔心形曲线 r=a(1-sin)
(1) 可以利用 rand()函数随机生成一个 80——300 之间的正整数 a; 的取值在 0——360,表示角度。
根据 a 和 sin的取值以及上述公式,可以得到 r 的取值序列(注意计算时角度要转换为弧度值),这是在极坐标下的计算。如果要在二维 x-y 坐标系下画出该曲线轨迹,需要根据 r 计算相应的 x、y 坐标值。即
x  r *cos , y  r *sin
(2) 如何绘制心形轨迹:首先调用 initgraph(M, N)函数,将屏幕初始化为 M 列、N 行的窗口(窗口宽为 M,高为 N)。注意,该屏幕的坐标源点在窗口左上角。而我们在上一步计算的 x,y 坐标,其坐标系的源点位置在窗口的中心,如下图所示。因此,要在该窗口正确绘制心形轨迹,必须将上一步计算得到的 x,y 坐标值做转换,转换为当前实际窗口的 x,y 坐标。

因此,绘制轨迹的过程就是,由给定的参数a,以角度从0——360范围内的变化(的变化步长
为3或者5都可),计算对应的实际窗口x,y坐标,然后调用outtextxy(x,y,"")函数,在指定(x,y)坐
标处显示
,由此即可得到指定参数a值的心形曲线。然后利用同样的方法,再绘制一个参数为a/2的心
形曲线,以得到两个同心的心形。同时要求画出的颜色为红色。可以在显示之前,调用
settextcolor(RGB(255,0,0)),将输出符号颜色设置为红色。得到的效果图:


(3) 绘制结束后,通过暂停来观察绘图效果。然后调用 closegraph()函数退出画图页面,返回主
界面菜单项。
(4) 注意:坐标转换后绘制出的心形曲线可能整体会比较靠上,可以尝试再做一下平移,每次都
向下移动些距离,确保大多数时候心形轨迹都不会超出窗口范围。
4、移动的圆:利用绘图函数绘制一个实心圆,并且可以在窗口内的指定轨迹做移动。要求圆的半径在
10——40 以内,实心圆的颜色随机。
(1) 绘制实心圆 :利用 rand()函数随机生成一个 10——40 以内的正整数做圆的半径 R。颜色是一
个 RGB(r,g,b)的类型,其中参数 r,g,b 代表颜色中红色、绿色以及蓝色的分量值(均为正整数),取
值 均 在 0-255 以 内 。 因 此 还 是 利 用 rand 函 数 随 机 生 成 符 合 要 求 的 r,g,b 值 , 然 后 调 用
setfillcolor(RGB(r,g,b))函数,将随机合成的颜色设置为填充颜色;接着可以调用 fillcircle(x,y,R)函数,
显示一个圆心在当前窗口(x,y)坐标处、半径为 R 的实心圆,其填充色为之前 setfillcolor 设置的颜色。
(2) 指定轨迹: 如下图所示,利用 initgraph(M, N)函数初始化得到的 M 列、N 行的窗口(窗口宽
为 M,高为 N)。其坐标系的源点位置在窗口左上角。现将窗口划分为 4 个大小相等的区域。初始,半径
为 R 的实心圆的圆心位置坐标(x,y)通过 rand 函数随机得到,如果初始位置落在窗口的不同区域,那么
按照图示的路线来让圆做移动。

(3) 如何移动圆:以区域 I 为例。假设初始的圆心(x,y)坐标值落在区域 I,那么圆将从当前位置
(x,y)移动到窗口右下角(M,N)的位置。也就是圆心(x,y)的位置延图中虚线轨迹从当前初始值逐
渐移动至(M,N)。圆心坐标(x,y)的每一次变化,都可以调用 fillcircle(x,y,R)函数在指定(x,y)位置显
示圆;然后利用 Sleep(200)函数,使得每个圆在原地显示保持 200 毫秒;接着利用 cleardevice()函
数清屏,对坐标(x,y)移动,再调用 fillcircle(x,y,R)函数……,重复上述步骤,即可形成同一个实心圆在
指定轨迹上移动的效果。直到(x,y)的值已经达到终点(M,N),移动结束。暂停观察后,调用 closegraph()
函数结束画图,返回主菜单页面。
(4) 综上,绘制移动圆的基本过程:
 利用 rand 函数随机生成圆的半径 R、圆心初始位置坐标(x0,y0)以及颜色的 r,g,b 三个分量;
 调用 initgraph(M, N)函数初始化得到 M 列、N 行的窗口;
 调用 setfillcolor(RGB(r,g,b))函数,将随机合成的颜色设置为填充颜色;
 根据起始圆心坐标(x0,y0),判断圆心所在窗口区域,根据所在区域确定圆心轨迹的终止坐标
(endx,endy);由此,可以计算圆心坐标(x,y)在起始点到终止点之间直线上的运动轨迹;
 根据轨迹调用 fillcircle(x,y,R)函数画圆;利用 Sleep(200)函数原地保持 200 毫秒,然后调用
cleardevice()清屏;接着继续显示下一个位置的圆,„„重复该步骤,直到圆心已经达到终点
(endx,endy);
 移动结束。暂停观察后,调用 closegraph()函数结束画图,返回主菜单页面。
 注意:在任何时候,确保绘制的圆都在窗口范围以内,不要超出窗口范围。
5、数据读写
(1) 打开指定的数据文件 express.txt(注意确保该文件与项目文件在同一目录中),里边包含有若
干简单的算术运算表达式。所有操作数均为正整数。请读取该文件,计算这些表达式,并将计算结果输
出显示在屏幕上。例如,若 express.txt 中的内容为:
8+19
232
104/28
那么,读取该文件后,屏幕应该显示:
8+19=27
23
2=46
104/28=3
(2) 将上述读取和计算结果存入数据文件。要求存入的数据文件命名为当前保存的系统时间加自己
姓名。例如,若当前时间是 17:04,那么存储结果的文件名就应该是“1704 黄元元.txt”。

2、模拟银行排队叫号系统(难度等级 A)
[问题描述]
模拟实现银行的排队叫号系统。
[基本要求]
(1) 假定银行上午 9 点开门,下午 5 点关门,期间每个小时的客流量不超过 25 人;
(2) 利用结构体数组保存顾客。每个顾客的基本信息包括:到达银行时间、前面几人排队、等待
时长、办理业务时间、办理业务窗口编号、业务持续时长等;
(3) 其中每个顾客的到达时间(几点几分)以及业务时长(分钟)利用 rand 函数随机生成,属于
已知信息。注意,到达时间必须在开门后、关门前;业务持续时长在 1——30 分钟之间(也由 rand 函
数生成)。所有顾客按照到达时间排序,此顺序即为顾客的号码牌(从 1 号开始,没有 0 号);
(4) 注意顾客初始的总数量,可以按照每小时流量不超过 25 人的规定,从上午 9 点到下午 5 点,
每个小时的顾客总数由 rand 随机生成(0-25 之间),然后这 8 小时以内的顾客总数就是初始的顾客总
数;
(5) 程序运行后,提示输入银行窗口数 n,在 1——7 之间;
(6) 输入窗口数量合法,即对顾客一一处理。若当前有 n 个窗口,则按照哪个窗口空闲,哪个窗
口接待客户的原则,按顺序计算每个客户当下前面排队的人数(是指仍在等待或者正在办理业务的客户
数量,业务结束已经离开的顾客不算在内)、等待时间、开始办理业务时间(几点几分)、在几号窗口办
理(窗口编号也是从 1 开始,没有 0 号窗口)、业务持续多少分钟等客户基本信息;
(7) 注意,要求根据等待时长做如下处理:如果某顾客等待时长超过 30 分钟,且他本身的业务时
长不超过 10 分钟,那么该顾客会提前离开;又或者某顾客等待时长超过 45 分钟,且他本身的业务时长
不超过 20 分钟,那么该顾客也会提前离开。注意计算每个顾客当下前面排队人数时,提前离开的也要
计算在内,因为银行并不知道谁会提前离开;
(8) 设置合理的程序结束条件。例如当处理完某顾客后已经到了银行关门时间,那么后面的顾客
将不再被处理。当前的处理结束;
(9) 从第 1 位顾客到最后一位被服务的顾客,输出:第几号客户几点几分到达,前面几人排队,
在等待了多少分钟后,几点几分在几号窗口办理业务,持续多少分钟;若客户是提前离开的,那对应
的输出就是:第几号客户几点到达,前面几人排队,提前离开。最后,统计一下,每个窗口分别服务
了多少客户(不包括提前离开的),今天一共服务了多少客户(不包括提前离开的);客户最长的等待时
间以及客户的平均等待时间(计算平均值时,也同样不包括提前离开的);
(10) 将当前在屏幕上输出的所有信息保存在数据文件内。要求存入的数据文件命名为当前保存的
系统时间加自己姓名。例如,若当前时间是 17:04 分 23 秒,那么存储结果的文件名就应该是“170423
黄元元.txt”。
(11) 提示用户可以继续输入窗口数量,若输入是 1——7 以外的数据,程序结束;否则重新生成
顾客信息,再重复上述步骤做处理和输出(注意输入了几次合法的窗口数,对应生成几个数据文件);
[输出样例]

[算法提示]
顾客用结构体数组表示。银行的窗口也可以用一个数组 W 表示,数组的每个元素 W[i]用来保存第 i
个窗口当前将要工作到的时间。每次需要遍历数组 W,找到最小的元素 W[i],表示第 i 个窗口会最早空
闲下来,就将当前排在最前的客户推送到该窗口。根据该顾客的到达时间以及 W[i]的时间,计算顾客
的等待时间,同时更新 W[i]的取值。

源码联系UP主 -> https://space.bilibili.com/329101171

3、K 均值聚类(难度等级 A)
[问题描述]
K 均值聚类是模式识别算法中一种非常经典的分类算法。其主要作用是将相似的样本自动归到一个
类别中。K 均值聚类算法的基本思想:
[1]. 若已知 N 个数据分别属于 K 个不同的类别。首先从 N 个源数据中随机选取 K 个数据作为初始聚
类中心,代表 K 个类别;
[2]. 分别计算源数据中每个数据到这个 K 个聚类中心的欧式距离,按照距离远近(某个数据,距离
哪个聚类中心最近,该数据就属于哪个类别),确定每个数据所属类别;
[3]. 做完一次分类后,分别计算各个类别中所有数据的均值,判断这 K 个均值与之前的 K 个聚类中
心的关系;
[4]. 若重合,则聚类结束,当前分类结果即为最终结果;若不重合,则将当前计算得到的这 K 个均
值作为新的聚类中心,对所有源数据再次进行分类,即重复上述步骤;
[5]. 如果数据确实可分,那么经过有限次迭代,必然会发生当前类别均值与之前聚类中心相重合的
情况,即确保分类可以正常终止。
[基本要求]
(1) 作为待分类的数据,可以是 2 维的,也可以是 3 维或者 4 维等等;为了设计通用算法,将源
数据的维数 M、以及类别总数 K 定义成宏,这样,对于任意给定的数据以及类别数 K,只要修改对应的
宏,就可确保程序的正常运行。
(2) 例如对于测试数据文件“data1(4-3).txt”,其中包含 150 条 4 维的数据,可以分作 3 个类别;
测试数据文件“data2(2-2).txt”,其中包含 20 条 2 维的数据,可以分作 2 个类别„„。那么这些数据
可以存放在一个二维数组中,例如 float data[N][M],N 是数组的行数,代表数据总量,也可以用宏定
义,定义的大一点儿,确保我们的测试数据都可以存放进来(定义到 200 就足够了);M 是数组列数,
即二维数组的一行,保存一条数据。
(3) 输入要求:根据使用的数据文件不同,对维数 M 和类别总数 K 的宏做好定义。例如:

定义 N*M 的二维数组,将数据文件中的源数据存入数组,注意从第一行开始存储,第 0 行不用。这样行
号可以用来标识每条数据,即数组的第 i 行,代表第 i 条数据;实际读取到的数据总量一般是小于 N
的,因此在读取数据文件的时候,需要计数器来统计实际的源数据总量 n。
(4) 输出要求:根据已知的类别总数 K,从 n 个源数据中随机选取 K 条数据作为初始的聚类中心。
注意初始聚类中心的选择一定要随机选,不可以从键盘输入,例如从编号 1——n 的源数据中,随机选
K 个编号的数据,以这些数据作为初始聚类中心;
(5) 输出要求:根据选定的初始聚类中心,开始做聚类。聚类结束后,输出本次聚类所需的迭代
次数、以及三个类别中分别包含的数据编号(注意只输出数据编号,不要输出显示实际的数据)以及每
个类别包含的数据总数;
(6) 输出要求:按照上述的聚类方式,重复做 5 次聚类,观察每次的聚类结果是否均相同;
(7) 输出要求:将当前 5 次的聚类结果存入文件,数据文件命名为当前保存的系统时间加自己姓
名。例如,若当前时间是 17:04,那么存储结果的文件名就应该是“1704 黄元元.txt”。存储内容与屏幕
上显示的一致。
[输出样例]
例如对测试文件“data3(3-3).txt”,其中包含 150 条 3 维数据,可以分作 3 类。程序运行后:


[算法提示]
例如,对于“data1(4-3).txt”,150 个 4 维的数据,可以用一个 151*4 的二维数组来保存这些数
据。即 151 行,4 列,第 0 行不存放数据,从第 1 行开始存储数据。这样,数据从 1 开始计数。例如,
定义数组 float A[151][4],那第一个数据(5.1 3.5 1.4 0.2)就存放于 A[1][0],A[1][1],A[1][2]
和 A[1][3]中,即数组 A 的第 1 行,代表第 1 个数据。
说明:若两个数据 x=(
1 2 3 4
x , x , x , x
),y=(
1 2 3 4
y , y , y , y
)
1、 他们之间的欧氏距离
2
4 4
2
3 3
2
2 2
2
1 1 dis  (x  y )  (x  y )  (x  y )  (x  y )
2、 x 和 y 的均值
(( )/ 2,( )/ 2,( )/ 2,( )/ 2)
1 1 2 2 3 3 4 4   x  y x  y x  y x  y

4、折半查找与哈希查找(难度等级 A)
[问题描述]
查找是通过在查找表中做比较来完成的操作。折半查找与哈希查找都是利用数组实现的查找算法。
通过本题,可以观察两种查找算法的性能。一般我们用平均查找长度 ASL 来表示一种查找算法的性能。
ASL 值越大,表示该查找算法所需的比较次数越多,性能也就越低。ASL 的计算公式为:



M
i
Ci
1
1
M
ASL
其中,M 表示待查找记录的总数量;
Ci
表示,在查找表中,要找到第 i 条记录,需要的比较次数。将
找到各条记录所需的比较次数求累加和,再将该累加和除以数据总量,即表示平均查找长度。
现有 M 条待查数据,每条数据有一个关键字 key(关键字可以唯一的标识一条数据),例如有 M 条
表示学生的数据,每条数据包括学生姓名、性别、手机号、所在学院等信息。因为每个学生的手机号码
均不相同,因此可以用该项数据作为每条记录的关键字 key。
(1) 折半查找表的创建。折半查找表是一个表长为 M 的数组,数据量也为 M,将所有数据存入数
组,然后根据关键字排序即可。
(2) 折半查找。在有序的数组(查找表)中做查找,根据待查关键字,做折半查找即可。
(3) 哈希表的创建。哈希表是一个长度为 N 的数组,(一般 N>M,M 是数据量),现要将 M 条数据逐
条放入哈希表,放入的规则,即:
 首先设计哈希函数 H(key),确保该函数返回一个 0——N-1 的数值。将当前数据的关键字 key,
即手机号码带入该函数,得到一个值 k(0<=k&&k<N),这个 k 即为该条数据放入哈希表(长度为
N 的数组)的位置;
 理想的情况是不同的 key 带入哈希函数中可以得到不同的 k 值。但实际情况却是,不同的 key
带入哈希函数后,会得到相同的 k 值,此为冲突。当冲突产生时,表示数组 k 这个位置已经放
了数据了,那么当前的数据应该放在何处呢?此时就需要为当前记录重新找个地址存放,称为
再散列;
 再散列同样遵循某种规则,例如
2
k H key i
i  ( )  ,其中
i
表示第
i
次再散列, i
k
表示第
i
次再
散列后得到的位置。再散列过程中,i
从 1 开始,一旦某次再散列得到的
i
k
位置为空,那么就
可以将当前数据放入该位置,再散列结束。继续处理下一条数据。重复上述操作,直到将所有
M 条数据均放入哈希表,哈希表的创建即可完成。
(4) 哈希查找。在创建好的哈希表中做查找,过程与上述的创建过程类似:
 给定待查找数据的关键字 key,将其带入哈希函数,计算其在哈希表中的地址 k=H(key);
 若哈希表中当前 k 的位置为空,则表示该待查数据不存在,查找结束;
 若哈希表中当前 k 的位置不为空,则将该位置中数据的关键字 key 与待查数据的关键字 key
做比较。若相等,表示查找成功,查找结束;若不相等,那么有可能是产生了冲突,因此按照
之前再散列的规则,
2
k H key i
i  ( )  ,计算再散列地址
i
k ,将待查关键字 key 与再散列地址
i
k
中的 key 依次做比较,若待查关键字确实存在,那么经过有限次的再散列,必然会查找成功,
反之若待查关键字不存在,那么经过有限次的再散列,再散列地址
i
k
必然是一个空位。查找中
遇到空位,即表示待查数据不存在,查找不成功,查找结束。
[基本要求]
(1)现有 2708 条记录,每条记录包含有下列数据项:姓名、性别、手机号码、所属学院;
(2)从文件读入所有记录,首先以手机号码为关键字,建立折半查找表,即表长 M 为 2708,并且
所有记录以手机号码升序排序;再以手机号码为关键字 key 建立哈希表,要求哈希表表长 N(数组长度)
等于 2887。根据以下哈希函数和再散列规则创建哈希表:
 哈希函数:手机号共 11 位,去掉前 4 位和后 3 位,取中间的 4 位作为一个数字计算其平方,将
该平方值去掉最高位和最低位,取中间若干位组成的数字与哈希表的表长 N 求模(求模是确保
得到的地址在 0—2706 之间),得到的结果即为该 key 对应的记录应该存放的地址(例如,若当
前记录的手机号码是 13812145677,去掉前 4 位和后 3 位后,得到 2145,计算 2145 的平方是
4601025,该平方值掐头去尾是 60102,60102 与表长 2707 求模,得到的最终结果是 548,若哈
希表的第 548 号位置是空的,则关键字 13812145677 对应的记录应存入哈希表的 548 号位置);
 再散列规则:若根据上述哈希函数计算得到的地址 k 非空,说明产生冲突,则需要再散列。再
散列规则:
ki
(H(key) i )%N
2
  ,i  1,2,…N 1。
 还是以上述关键字 13812145677 为例,若初始得到的哈希地址 548 非空,则要做再散列。第 1
次再散列得到(548+1)%N 和(548-1)%N 两个地址 ,先判断 549 的地址,若空,放入;若不
空,继续判断 547 的地址,若空,放入;若不空,则做第 2 次散列,再得到两个地址(548+4)%N
和(548-4)%N,再做上述判断„.,直到找到一个空地址可以放入该条记录为止。
 注意,再散列过程中,由于会计算减法,即
2 H(key)  i ,若该值为负数,则将该负数与表长 N
相加,一直加到值大于等于 0 为止,然后再与表长 N 做求模运算。
(3)创建完毕后,显示该哈希表的 ASL;显示折半查找表的 ASL
(4)然后提示用户可以输入手机号码进行查询。待输入手机号码后,对该手机号码分别进行折半查
找和哈希查找。若该号码存在,则提示查找成功,并显示折半查找做了几次比较,哈希查找做了几次比
较,然后输出显示该号码对应的记录的全部内容,即姓名、性别、手机号码、所属学院;若该号码不存
在,则提示查找失败,该号码不存在,再分别显示折半查找做了几次比较,哈希查找做了几次比较。
(5)当前查找结束后,提示用户可以继续输入,如果输入“#”,则程序结束;否则,继续做上述的
查找。
(6)可以对输入的手机号码做一些简单的错误判断,例如如果输入的位数不对,或者输入除了数字
以外的符号等,提示用户重新输入;
(7)如果只完成一种查找算法、或者不能实现连续的查找、或者没有显示每次查找所需要的比较次
数、或者没有计算 ASL,难度都会被降级。
(8)对本次查找的结果(输入#之前的所有查找结果)保存到数据文件中。数据文件命名为当前保
存的系统时间加自己姓名。例如,若当前时间是 17:04,那么存储结果的文件名就应该是“1704 黄元
元.txt”。存储内容与屏幕上显示的一致。
[输出样例]

源码联系UP主 -> https://space.bilibili.com/329101171

5、字符串处理(难度等级 A)
[问题描述]
以字符串的形式从键盘输入一串数字,比如“89101112131415”,对该字符串做处理,判断其中是
否包含一组差值为 1 的等差序列(序列中至少包含两个数字,序列必须包括字符串中的所有输入符号),
若存在,则输出该序列;若不存在,也给出相应的提示信息。例如在上述输入中就包含一组符合要求的
等差序列:8、9、10、11、12、13、14、15。有一种特殊情况,比如输入为“810111213”,其中包含的
等差序列 8、10、11、12、13 中漏掉了一个 9,如果存在这种情况,即序列中仅仅漏掉了一个数字,也
请输出该序列,并提示,漏掉了哪个数字。
[基本要求]
(1) 程序运行后,提示用户输入一串数字(输入的一串数字必须以字符串形式保存),至少 2 位,
最长不超过 100 位。若输入不和要求,或者其中包含非数字的其它符号,提示用户输入非法,重新输入;
若输入为#,程序结束;若输入合法,继续执行下述步骤;
(2) 若输入合法,对该字符串做处理,判断其中是否包含一个差值为 1 的等差序列或者是否包含
一个仅漏掉一个数字的差值为 1 的等差序列。若有,输出该序列,有漏掉的数字,也请在输出序列的同
时,也显示被漏掉的数字;若不存在这样的序列,提示用户不存在符合要求的序列;
(3) 提示用户可以继续输入 ,重复上述步骤。
(4) 将本次程序执行过程中,所有输入序列以及处理结果(输入#之前的所有处理结果),写入一
个文本文件。文件的后缀是*.txt。文件名是当前保存的系统时间加自己姓名(例如,若当前时间是 17:34,
那么存储结果的文件名就应该是 1734 黄元元.txt)。例如,若针对下图中显示的输入以及处理结果,程
序结束后,若时间是 12:28,则应该生成一个文本文件 1228 黄元元.txt。该文件中的内容:
字符串:891011121314151617 包含序列:
8 9 10 11 12 13 14 15 16 17
字符串 1234t578 不合法
字符串:979899101102103 包含序列:
97 98 99 101 102 103 漏掉 100
字符串:56781901234 不包含符合要求序列
(5) 若不能对输入做错误判断,或者不能连续输入,或者保存结果的文件名不和要求等,难度会
降级
[输出样例]

注意:
1、 程序中需要的功能函数可以自己定义。在课设报告中,一定要把除了主函数以外的,所有自定
义的函数给出说明,包括:函数的功能、各个参数的意义、若有返回值则返回的是什么等;
2、 不允许使用全局变量!所有变量必须在函数体内定义。可以使用宏定义

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值