C程序设计数组综合程序设计数组综合程序设计.pptVIP

  • 15
  • 0
  • 约2.25千字
  • 约 12页
  • 2021-03-20 发布于北京
  • 举报

C程序设计数组综合程序设计数组综合程序设计.ppt

数组综合程序设计 四川信息职业技术学院·《C语言》 * 第六节 数组的应用 加密的算法方式不外置换和易位两种。 加密算法 置换 易位 置换将原文中的各字符按一定规律替换成另外的字符,如把原文“Love”中每各字母用字母表中下一字母替换,则密文为“Mpwf”。 易位是保持原文中字符不变,但改变各字符出现的位置,如把原文“Love”中字符循环左移一位,则密文为“oveL”。 第六节 数组的应用 【例6-14】 从键盘上输入一行由小写英文组成的字符串,用置换法(置换规律:按字母表逆序)对其加密。 用自然语言描述的程序逻辑如下: ① 设置环境,定义变量。 ② 将字母逆序表放于数组key[27]中;输入原文,放于数组str[80]中。 ③ i=0。 ④ 原文处理到完否(str[i]为’\0’)?没有,则转⑤,否则转⑧。 ⑤ 计算字母str[i]在key[27]中出现的位置k。 ⑥ 用字母key[k]置换字母str[i]。 ⑦ i=i+1,转④。 ⑧ 输出密文str串,结束。 第六节 数组的应用 参考源代码: 【思考验证】   试写出本例的解密程序。 【融会贯通】   输入N行字符串,对每行加密。加密方法是按字母表的顺序:将第1个字符用第3个字符替代,将第2个字符用第4个字符替代,依次类推,直到倒数第2个字符。倒数第2个字符用原文中的第1个字符替代,倒数第1个字符用原文中的第2个字符替代。如果原文行长度小于3个字符,则保持原文行不变;非字母字符不变。 如原文:How are you? 密文为:Jqy ctg aqw? 第六节 数组的应用 【例6-15】 随机产生 N×M 个1000以内自然数组成N行M列的二维数组,将各行元素降序排列后输出。 【简要分析】前面讲过,对一行数据排序用二重循环,而二维数组是若干行数据,故该用三重循环。用自然语言描述的程序逻辑如下: ① 设置环境,定义变量。 ② 产生并输出二维数组x[N][M]。 ③ i=0。 ④ 如果i<N,转⑤,否则转⑦。 ⑤ 对第i行排序。 ⑥ i=i+1,转④。 ⑦ 输出排序后的数组,结束。 第六节 数组的应用 参考源代码 【思考验证】   巧改本例,实现对N×M的二维数组按列降序排列。 【融会贯通】   评委打分。某次歌咏比赛共有N个评委给M个选手打分(含一位小数),统计时去掉一个最高分和一个最低分,输出各选手的最后得分(指平均分,保留一位小数)。 第六节 数组的应用 【例6-16】 英雄排座次。任意输入N个人的姓名,将他们按字母顺序升序排列。如当N取5时,设原始姓名是: zhao ke-lin li bing wang hong deng xiao-ping 排序前 排序 deng xiao-ping li bing wang hong zhao ke-lin 排序后 第六节 数组的应用 【简要分析】 因中国人的姓名长度一般不超过20个字符,故本例定义数组name[N][20]表示N个人的姓名。注意字符串比较须用strcmp()函数,交换两个字符串须用strcpy()函数,中间变量应定义成字符数组。 排序用 int 循环控制变量 i,j 临时变量,暂存姓名 char 临时变量 temp[20] 键盘输入 char 存放N个人姓名 name[N][20] 值 类型 作 用 变量名 输出name数组,结束 i=i+1 j=j+1 交换:name[i] 与name[j] name[i]>name[j]   是      否     j<N ? j=i+1      i<N-1 ? i=0 输入N个人的姓名,放于name[N][20]。 设置环境,定义变量 用N-S流程图描述的程序逻辑: 第六节 数组的应用 参考源代码: 第六节 数组的应用 【思考验证】   保持N个姓名的先后顺序不变,将组成各姓名的字符按ASCⅡ码升序排。请修改本例。 【融会贯通】   请按姓名的长度将N个姓名降序排列。 课堂练习6.6 1.下面是某商店代理产品的月销售汇总表,编程找出获利最大的商品和获利最小的商品。 品名    进价(元)   进货件数  零售价(元)   销售件数 computer1 6000.00 120 6870.00 112 computer2 21000.00 50 21900.00 47 VCD1 458.00 500

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档