程序设计大作业(C)

  • 格式:doc
  • 大小:441.00 KB
  • 文档页数:7

1

学 院 电子信息学院

班 级 08020904

学 号 2009301972

姓 名 韩龙飞

摘要

题目:编写查找算法的演示程序(算法型大作业)

编写程序实现某班期末考试成绩及有关学生信息的查找并将查询结果写入某文件中。其中输入可来自某文件(比如***.xls)。注意:编写的程序必须实现以下查找功能:

1.输入某同学的学号或姓名(无重名),若存在,则输出该同学的成绩;否则输出“不存在”。

2.统计不及格人数并输出不及格学生的学号和姓名。

3.统计各分数段的人数并将结果输出。

4.插入某位新同学的成绩并查询该同学的序号数,序号数的排列规则是女生在前,男生在后;按姓名汉语拼音的英文顺序(a—z)排列。

5.计算平均分并查询高于平均分和低于平均分的人数,最后输出。

6.删除某同学的信息后,查询成绩排名前5的学生学号和姓名并输出。

7.修改某同学的成绩后,查询该同学的成绩排名并输出。(以上查询结果不仅要在屏幕上输出,而且要写入文件中保存。)

*算法提示:

本问题首先得建立一个链表,调用文件函数从文件中读入数据并保存在该链表中,删除和添加操作只需新增和删除节2

Email:jimmy11085531@ 2

点,考虑到算法的时间复杂度,采用折半查找算法,最后将程序的运行结果写入对应的文件中。

目录

1 摘要 ................................................................................................. 3

1.1 设计题目 .................................................................................. 3

1.2 设计内容 .................................................................................. 3

1.3 开发工具 .................................................................................. 3

1.4 应用平台 .................................................................................. 3

2 详细设计 ......................................................................................... 4

2.1 程序结构 .................................................................................. 4

2.2 主要功能 .................................................................................. 4

2.3 函数实现 .................................................................................. 4

2.4 开发日志 .................................................................................. 4

3 程序调试及运行 ............................................................................. 5

3.1 程序运行结果........................................................................... 5

3.2 程序使用说明........................................................................... 6

3.3 程序开发总结........................................................................... 6

3

Email:jimmy11085531@ 3

1 摘要

1.1 设计题目

算法型大作业:编写查找算法的演示程序

1.2 设计内容

编写程序实现某班期末考试成绩及有关学生信息的查找并将查询结果写入某文件中。其中输入可来自某文件(比如***.xls)。

注意:编写的程序必须实现以下查找功能:

1.输入某同学的学号或姓名(无重名),若存在,则输出该同学的成绩;否则输出“不存在”。

2.统计不及格人数并输出不及格学生的学号和姓名。

3.统计各分数段的人数并将结果输出。

4.插入某位新同学的成绩并查询该同学的序号数,序号数的排列规则是女生在前,男生在后;按姓名汉语拼音的英文顺序(a—z)排列。

5.计算平均分并查询高于平均分和低于平均分的人数,最后输出。

6.删除某同学的信息后,查询成绩排名前5的学生学号和姓名并输出。

7.修改某同学的成绩后,查询该同学的成绩排名并输出。(以上查询结果不仅要在屏幕上输出,而且要写入文件中保存。)

1.3 开发工具

Visual C++ 6.0

1.4 应用平台

Windows 2000/XP/Vista 32位

4

Email:jimmy11085531@ 4

2 详细设计

2.1 程序结构

2.2 主要功能

/*一;借书问题:本问题是一个排列问题,使用穷举的方法求出小明对三人不同的借书方案的总数

二;绘制杨辉三角:从杨辉三角形的特点出发而绘制出杨辉三角。*/

2.3 函数实现

/*一:借书方案:从5个中取3个进行排列的方法的总数。首先对五本书从1至5进行编号,然后使用穷举的方法假设三个人分别借这五本书中的一本,当三个人所借的书的编号都不相同时,就是满足题意的一种借阅方法。

二:绘制杨辉三角:杨辉三角形中的数,正是(x+y)的N次方幂展开式各项的系数。本题作为程序设计中具有代表性的题目,求解的方法很多,这里仅给出一种。

从杨辉三角形的特点出发,可以总结出:

1)第N行有N+1个值(设起始行为第0行)

2)对于第N行的第J个值:(N>=2)

当J=1或J=N+1时:其值为1

当J!=1且J!=N+1时:其值为第N-1行的第J-1个值与第N-1行第J个值之和*/

2.4 开发日志

/*开发过程中不免遇到了许多问题,包括程序算法的实现,函数结构的设计,制作电子文档等,通过上网查阅参考资料和向同学求助后解决了其中的部分问题,当然还在图书馆查阅了不少资料,终于完成了这个不算浩大的程序设计。*/

5

Email:jimmy11085531@ 5

3 程序调试及运行

3.1 程序运行结果

/*(1)借书方案:

程序运行

(2)绘制杨辉三角

程序运行

输入行数得结果 6

Email:jimmy11085531@ 6

*/

3.2 程序使用说明

/*一:打开“借书方案”的文件夹中的“借书方案.dsp”,直接编译运行即输出不同的借书方案。

二:打开“绘制杨辉三角”的文件夹中的“绘制杨辉三角.dsp”,直接编译,输入你所需要的行数,按回车即输出对应行数*/

3.3 程序开发总结

/* C语言是一门流传很久且影响面很广的语言,在我们日常生活中,或是在科研等方面,我们总能用他解决很多棘手的问题 ,数学是一门很有用的学科,而C语言能用简便的程序语言解决众多复杂的数学问题,这大大的解放了人力,提高了效率,加快了发展的步伐而这次的大作业让我对C语言有了更透彻的了解,进一步熟悉了C语言的一些技巧方法,对它有了更好的掌握。这必将对我以后的学习和工作产生巨大的帮助,帮我取得更大的成功*/

4 附件(源程序)

/*题目一:借书方案(文件名:借书方案;工程名:借书方案.dsp)

#include

void main()

{

int a,b,c,count=0;

printf("小明向三位读者有多种不同的借书方案:\n");

for(a=1;a<=5;a++) 7

Email:jimmy11085531@ 7

for(b=1;b<=5;b++)

for(c=1;a!=b&&c<=5;c++)

if(c!=a&&c!=b)

printf(count%8?"%2d:%d,%d,%d ":"%2d:%d,%d,%d\n ",++count,a,b,c);

}

题目二:绘制杨辉三角(文件名:绘制杨辉三角;工程名:绘制杨辉三角.dsp)

#include

void main()

{

int i,j,n=13;

int c(int,int);

printf("输入行数:");

while(n>12)

scanf("%d",&n);

for(i=0;i<=n;i++) /*控制输出N行*/

{

for(j=0;j<24-2*i;j++)

printf(" ");

for(j=1;j

printf("%4d",c(i,j));

printf("\n");

}

}

int c(int x,int y)

{

int z;

if((y==1)||(y==x+1))

return 1;

z=c(x-1,y-1)+c(x-1,y);

return z;

}

*/