中南大学程序设计基础实践报告

2026/1/20 19:36:21

2.3.3主要算法说明 1.选择法的基本思想

选择法的基本思想是:先将第一个元素作为最小者,与后面元素比较,如第一个元素大,则与其交换(保证第一个元素总是最小的),直到与最后一个元素比较晚,第一趟就找出了最小元素,且保存在第一个元素位置。再以第二个元素作为最小者(次小)与后面元素比较,若后面元素下,则交换,直到最后一个元素,第二小的元素已找到。依此类推。经过n-1趟后排定。 2.选择法的改良思想

事实上,只要记住比较时小元素的位置,即下标,在内循环结束后做一次交换即可,从而提高程序执行的效率。 3.具体函数的解析

本程序仅使用了主函数main()

(1)用第一个循环for(a=0;a<=n-1;a++);scanf(\来实现获取要排序的数字的总个数; (2)用两重循环来实现排序。

外层循环for(a=0;a<=n-1;a++) 控制排序的趟次,若数组有n个元素,则共进行n-1趟。

(3)内层循环 for(b=a+1;b<=n-1;b++)完成,在剩余的数中选择最小的数 ,比较次数随趟数递减,循环控制变量b的初值与外循环执行次数有关:b=a+1,终值为n。当后面元素较大时,马上交换。

(4) 用for(a=0;a<=n-1;a++);printf(\)输入排序后的元素。 4.改良程序比原来的程序执行效率高的原因的分析

经过对测试结果(详情见下章运行结果)分析,第二个改良的程序效率明显比原来的程序高效得多,第二个程序中与第一个程序的不同点如下: for(a=0;a

{ k=a; /*k始终存放本趟最小元素的下标,开始时为i*/

for(b=a+1;b<=n-1;b++)

1 6

if(x[k]>x[b])

k=b; /*记住新的小元素的序号,在内循环结束后才和最后一个数实现交换*/ if(k!=a)

{ t=x[a]; /*若k不等于i,说明a[i]不是最小的数,需要交换*/

x[a]=x[k]; x[k]=t; }

变量K记住比较时小元素的位置,即下标,在内循环结束后做一次交换即可,从而提高程序执行的效率。

2.4 统计各字母出现的频率

2.4.1设计目标

统计字符出现的频率:二维字符数组中保存了很多字母,运行程序,计算各个字母出现的频率(频率=出现的次数/总字母数),并将频率显示出来。

2.4.2数据结构设计

本程序主要使用数据类型为数组类型和整型类型,具体如下: 存放一系列随机字母的字符型二维数组 int s[10][10]; 存放的所有字母的总个数 浮点型 float n; 循环所用的变量 整型 int i,j;

表示26个大写字母的各个次数的数组 整型 int da[26]; 表示26个小写字母的各个次数的数组 整型 int xiao[26];

2.4.3主要算法说明

(1)gets(s[0]); 调用gets()函数计算获取字母; (2)

n=strlen(s[0]); 调用strlen函数,计算整个二维数组的字母总个数; (3)

用外循环for(i=0;i<10;i++) 内循环 for(j=0;j<10;j++) 对输入的一系列字母进行扫描

如果 if(s[i][j]>='A'&&s[i][j]<='Z') 判断是否为大写字母 对应的大写字母的次数自加一次 da[s[i][j]-'A']++;

如果else if(s[i][j]>='a'&&s[i][j]<='z') 判断是否为小写字母

1 7

对应的小写字母的次数自加一次 xiao[s[i][j]-'a']++;

(4)最后再用一个for循环输出运行结果 for(k=0;k<26;k++) {

if(da[k]!=0)

printf(\的个数为:%d\\n 出现频率为:%f \\n\ //k+'A'为大写字母,da[k]为此字母的个数;n为总字母数 if(xiao[k]!=0)

printf(\的个数为:%d\\n 出现频率为:%f \\n\ //k+'a'为小写字母,xiao[k]为此字母的个数;n为总字母数 }

2.5实现一个程序的多次调试

最简单的算法说明:

在主函数中增加如下一部分,可实现这样的功能:

运行程序时,若输入任意键,则程序开始正式进行;并且可以输入多组数据进行调试,最后按Ctrl+Z(记得加回车)可以结束程序。 char x;

1 8

printf(\请输入任意键开始程序,若输入Ctrl+Z则结束程序\\n\while(scanf(\{ /*所要运行的步骤的内容*/};

第三章 运行结果

3.1 汉诺塔程序运行情况

1 9


中南大学程序设计基础实践报告.doc 将本文的Word文档下载到电脑
搜索更多关于: 中南大学程序设计基础实践报告 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219