2019级计算机学院课程设计题目及参考程序

发布 2022-10-04 11:56:28 阅读 5858

问题 a: 整数排序一。

时间限制:20 sec内存限制:128 mb

题目描述。经过三天的任务1的训练,大家的确辛苦了.因此,在任务2开始时,我为大家准备了一道令人非常愉快的热身题.即将一个杂乱无序的整数序列,按照从小到大的顺序排列并输出.

输入。测试数据不止一组,每组测试数据:

)先输入无序序列的整数个数n;(n不超过1000000)

)然后连续输入n个整数;

若n的值输入为0值,则输入结束.

输出。与每组输入的测试数据相对应,输出其按从小到大排好序后的整数序列.

注意:每组输出占一行.样例输入。

样例输出。

提示。本题测试对第10章“内部排序”的理解程度。

可采用冒泡排序、插入排序、选择排序、快速排序、希尔排序、堆排序等方法完成此题。

警告:目的是让大家熟悉内部排序的各种算法,因此禁止调用sort或qsort等函数!不改正者降最终成绩等级.

简单排序版:

#include<>

#include<>

#define size 10000

void fastsort(int a,int n)

int i,j,k,temp;

for(i=0;i

int main()

int sort[size];

int num,i;

while(1)

fastsort(sort,num);

for(i=0;i

printf("");

return 0;

快速排序版:

#include<>

#define size 100000

void quick_sort(int a,int low, int high)

int i, j, t;

if (low < high)

while (i i++;

if (i

a[i] =t;

quick_sort(a,low,i-1);

quick_sort(a,i+1,high);

int main()

int sort[size];

int num,i;

while(1)

quick_sort(sort,0,num-1);

for(i=0;i

printf("");

return 0;

堆排序版:#define max 10000

#include<>

void sift(int *x, int n, int s)

int t, k, j;

t = x+s);

k = s;

j = 2*k + 1;

while (j

if (t<*(x+j)) else

*(x+k) =t;

void heap_sort(int *x, int n)

int i, k, t;

int *p;

for (i=n/2-1; i>=0; i--)

for (k=n-1; k>=1; k--)

int main()

int *p, i, a[max],num;

while(1)

printf("");

return 0;

问题 b: 整数排序二。

时间限制:20 sec内存限制:128 mb

题目描述。在完成了任务2的第一个热身题后,很多同学觉得不过瘾,那就用同样的题目让大家再交一次原来已经ac的程序,看是什么样的结果,应该怎样应对?

题目跟第一个热身题是一样的(但我已经大幅增加了测试数据),还是要求将一个杂乱无序的整数序列,按照从小到大的顺序排列并输出.

输入。测试数据不止一组,每组测试数据:

)先输入无序序列的整数个数n;(n不超过1000000)

)然后连续输入n个整数;

若n的值输入为0值,则输入结束.

输出。与每组输入的测试数据相对应,输出其按从小到大排好序后的整数序列.

注意:每组输出占一行.样例输入。

样例输出。

提示。本题测试对第10章“内部排序”的理解程度。

但要考虑算法的优化及排序方法的选择(排序速度要快才行)。

警告:目的是让大家熟悉内部排序的各种算法,因此禁止调用sort或qsort等函数!不改正者降最终成绩等级.

#define max 1000000

#include<>

void sift(int *x, int n, int s)

int t, k, j;

t = x+s);

k = s;

j = 2*k + 1;

while (j{

if(jif (t<*(x+j))

(x+k) =x+j);

k = j;

j = 2*k + 1;

else break;

(x+k) =t;

void heap_sort(int *x, int n)

int i, k, t;

int *p;

for (i=n/2-1; i>=0; i--)

sift(x,n,i);

for (k=n-1; k>=1; k--)

t = x+0);

(x+0) =x+k);

(x+k) =t;

sift(x,k,0);

int main()

int *p, i, a[max],num;

while(1)

p = a;

scanf("%d",&num);

if(num==0) return 0;

for (i=0; iscanf("%d",p++)

p = a;

heap_sort(p,num);

for(i=0;i{

if(i==num-1)

printf("%d",a[i]);

elseprintf("%d ",a[i]);

printf("");

return 0;

问题 c: 时间复杂度的估算。

时间限制:1 sec内存限制:128 mb

题目描述。在数据结构里面,时间复杂度是决定算法效率的一项重要指标,常见的时间复杂度格式有三种:

1、o(n)

2、o(lg(n))

3、o(sqrt(n))

一个算法往往有多种解法,每种解法的复杂度由上述常见的的复杂度组合成,例如排序的两种算法:

1、快速排序:时间复杂度为o(n*lg(n))

2、冒泡排序:时间复杂度为o(n*n)

现在先给定n的值,然后输入一个值m,随后输入m行数据表示有m个算法的复杂度。请确定这些复杂度是否会超时。若复杂度计算结果大于100000000,则为超时(tle),否则输出计算的复杂度,输出的结果保留两位小数。

lg(n)表示求以2为底数的n的对数)

输入。第一行输入n (1≤n≤10000000), m(1≤m≤100),其中n为表示问题规模的数,m为算法复杂度的个数。

接下来m行,每行为一个串,每个串都包含o( )其中,字符'o'后的括号里面的字符串保证仅由n,lg(n),sqrt(n),*组成并且合法。如sample input所示。

注意:lg()或sqrt()中只会出现字符'n',不会再嵌套lg()或sqrt()。如果想做得难一点,可以去做编号为1049的题,1049题要考虑嵌套。

计算机应用课程设计样本

课程设计。题目。课程名称 计算机在道路运输管理中的应用。学院 交通运输学院。专业 交通运输 班级。学生姓名。学号。指导教师 此处不填写 2010 2011学年第一学期 课程设计 学年 任务书。课程名称 计算机在道路运输管理中的应用。适用对象 交通运输工程。一 课程设计 目的。计算机在道路运输管理中的...

计算机辅助课程设计作业要求

1.平时作业 机房空间效果图。平时一直做的那个,大约最近交最终渲染图 要求 空间尺度比例准确。模型尺度比例准确。材质与灯光表现较真实。构图有美感 表现完全。2.考核作业 校园建筑小品。学校内自寻一建筑小品,制作空间效果表现图 中间上课会对交上来的作业进行评图,大约十七周补课的时间交正式作品 要求 构...

计算机课程设计报告要求

课程设计报告要求。一 格式要求。报告由封面 任务书 目录 正文 参考资料组成。手写和打印均可。纸张采用课程设计报告专用封面和纸张,大小为a4。字数不少于。二 正文内容书写要求 报告正文内容应包括以下几部分。实验计算机的设计。实验计算机的组装。实验计算机的调试。设计部分应包括 1 整机逻辑框图设计,并...