【字符串】PTA试题——英文单词排序 (25分)_pta英文单词排序_GalaxyerKw的博客-程序员秘密

技术标签: C语言基础  c语言  字符串  

题干如下:
本题要求编写程序,输入若干英文单词,对这些单词按长度从小到大排序后输出。如果长度相同,按照输入的顺序不变。

输入格式:
输入为若干英文单词,每行一个,以#作为输入结束标志。其中英文单词总数不超过20个,英文单词为长度小于10的仅由小写英文字母组成的字符串。

输出格式:
输出为排序后的结果,每个单词后面都额外输出一个空格。

输入样例:

blue
red
yellow
green
purple #

输出样例:

red blue green yellow purple

.
.
.
本题需要解决以下几个问题:
**①如何一直输入字符串直到输入#为止:**使用死循环while(1),后满足一定条件便跳出循环(break语句)的方法。此题的条件显然是if(str[i][0]==’#’)。
**②如何对字符串进行排序:**对于初学者来说,首先学习的排序是“冒泡排序”,那如何对字符串进行基于长度的“冒泡排序”呢?这里,我们需要使用strlen函数和strcpy函数:(这两个函数均在头文件<string.h>中)
(1)strlen函数:统计字符串的长度。统计空格,不统计末位’\0’。
(2)strcpy函数:即复制函数。strcpy(a,b)的作用可以简单理解为将b中的字符串复制到a中(注意:b字符串的末位’\0’也会被复制,也就是说a完全变成了b)。
由于是对字符数组的复制,函数需要传递指针,则括号内只需要写数组名(首元素地址)就可以了。

**以前我们学过数字大小的冒泡排序,其中交换两数的部分通过temp暂存变量配合来实现。现在对字符串进行交换也是如此。
(temp是另外创建的一维字符数组)

if (strlen(str[k-1])>strlen(str[k]))
{
strcpy(temp,str[k]);
strcpy(str[k],str[k-1]);
strcpy(str[k-1],temp);
}

解决了上述问题,我们就可以写程序了:

#include<stdio.h>
#include<string.h>

int main(void)
{
    
  char str[20][11];
  int i=0;
  
  while (1)
  {
    
      scanf("%s",str[i]);
      if (str[i][0]=='#')
        break;
      i++;                //i同时也记录了有几个单词
  }

  int len=i;       //用len记录i,增加程序的可读性
  int j,k;
  char temp[11];
  
  for (j=0; j<=len-1; j++)     //对字符串进行冒泡排序
  {
    
    for (k=0; k<len-j; k++)
    {
    
        if (strlen(str[k-1])>strlen(str[k]))
        {
    
            strcpy(temp,str[k]);
            strcpy(str[k],str[k-1]);
            strcpy(str[k-1],temp);
        }
    }
  }

  for (j=0; j<=len-1; j++)
  {
    
      printf("%s ",str[j]);
  }
  return 0;
}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/GalaxyerKw/article/details/110261620

智能推荐

extjs4.1在eclipse中如何用spket添加sdk.jsb3文件(或关联extjs4类库)_mask哥的博客-程序员秘密

1  安装好eclipse2.下载spket 1.6.22.zip插件,这个是必须的,不然你关联不上 sdk.jsb3文件3. 安装好spket插件,重启eclipse4. 然后和之前关联extjs的方式一样。9 在弹出的文件选择框中选择ExtJS库文件根目录下的build/sdk.jsb3文件,然后点击打开按钮 10 添加ext.jsb3文件后在JavaScript配置列表中选中

什么是JTAG?_贾167的博客-程序员秘密

一 .JTAG是(JointTest Action Group;联合测试行动小组)1980年代开发的用于解决电子板制造问题的IEEE标准,更常用的是可以用作编程,调试和探测端口的一种协议。主要用于芯片内部测试。既然是协议,自然也是一种接口,一个将PC与芯片连接起来的接口。JTAG的基本原理是在器件内部定义一个TAP(TestAccess Port;测试访问),TAP控制器的状态机通过TCK和TMS进行状态的改变,实现数据和指令的输入,通过专用的JTAG测试工具对进行内部节点进行测试。JTAG测试允许多.

vue中如何调用ios摄像头_vue2.0调用摄像头步骤详解_李宏韬的博客-程序员秘密

这次给大家带来vue2.0调用摄像头步骤详解,使用vue2.0调用摄像头的注意事项有哪些,下面就是实战案例,一起来看一下。可以在github 上下载demo链接vue组件代码import {Exif} from './exif.js'export default {data () {return {headerImage:'',picValue:''}},mounted () {},methods...

杭电oj2069——Coin Change_c语言 coin change_发奋图强的张大大的博客-程序员秘密

Problem DescriptionSuppose there are 5 types of coins: 50-cent, 25-cent, 10-cent, 5-cent, and 1-cent. We want to make changes with these coins for a given amount of money.For example, if we have 11 ...

python中subplot_Matplotlib的子图subplot的使用_weixin_39990138的博客-程序员秘密

前言Matplotlib的可以把很多张图画到一个显示界面,这就设计到面板切分成一个一个子图。这是怎么做到的呢。matplot提供两种方法。subplot直接指定划分方式和位置进行绘图。t=np.arange(0.0,2.0,0.1)s=np.sin(t*np.pi)plt.subplot(2,2,1) #要生成两行两列,这是第一个图plt.subplot('行','列','编号')plt.plot...

大数据可视化研究应用_数据可视化更容易控程隐的信息_hellowuxia的博客-程序员秘密

大数据可视化研究应用摘要:伴随着大数据时代的到来,数据可视化成为一个热门的话题,引起了人们极大的关注。本文从研究背景、数据可视化的定义、常用数据可视化工具、可视化效果的评估、可视化面临的挑战及发展方向介绍数据可视化。 关键词:数据可视化 可视化工具 效果评估 挑战 发展方向 1.研究背景 普通意义上讲,数据可视化伴随着统计学的出现而出现。事实上,从人们开始观察世界之时,就在利用图形图像记录、描

随便推点

微信表情js代码_weixin_30920091的博客-程序员秘密

var list = [], face_list = { "[微笑]": 1, "[撇嘴]": 2, "[色]": 3, "[发呆]": 4, "[得意]": 5, "[流泪]": 6, ...

IOI国家集训队历年论文_ioi国家集训队论文_lizhihaoweiwei的博客-程序员秘密

中国国家集训队论文集目录(1999-2009)    国家集训队1999论文集陈宏:《数据结构的选择与算法效率——从IOI98试题PICTURE谈起》来煜坤:《把握本质,灵活运用——动态规划的深入探讨》齐鑫:《搜索方法中的剪枝优化》邵铮:《数学模型的建立、比较和应用》石润婷:《隐蔽化、多维化、开放化——论当今信息学竞赛中数学建模的灵活性》杨帆:《准确性、全面性、

区块链编程七大语言,使用最多的竟是Java,java开发架构师职责_bitcoin是什么语言编写的_m0_65484000的博客-程序员秘密

![在这里插入图片描述](https://img-blog.csdnimg.cn/202《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享10406222725126.png)Java——是一种并发执行、面向对象、基于类型的通用编程语言,Java的执行依赖很少。自1995年发布以来,Java已成为排名前3的编程语言,拥有超过900万名开发者。知名区块链平台NEM的区块链网络就

axure导入的元件库不见了_Axure教程丨制作自己的Axure元件库_李小杨的博客-程序员秘密

接触Axure有一点时间了,每次进行原型设计都需要载入好多个元件库或打开之前做的原型复制元件,不仅浪费时间而且缺少规律,所以决定整理一个自己常用的Axure元件库,以便之后做原型设计时可以快速调取。看了几篇教程感觉讲的有些乱,自己研究了一下元件库的几个功能,发现实际操作起来很简单,在这给大家分享一些心得。创建元件库打开Axure(这里用的是axure8.0),如下图所示点击创建元件库。保存至任意位...

Struts2学习笔记2---配置文件_sdlgxxy的博客-程序员秘密

      在Struts2中主要有两个配置文件:web.xml和struts.xml,当新建一个web项目时,可以从Struts2的示例程序中复制一份,然后做相应的修改即可。web.xml的基本形式如下:&amp;lt;web-app id=&quot;WebApp_9&quot; version=&quot;2.4&quot; xmlns=&quot;http://java.sun.com/xml/ns/j2ee&quot; xmlns:xsi...

Ubuntu安装teamviewer注意事项。_weixin_30848775的博客-程序员秘密

  Ubuntu安装teamviewer注意事项。    首先通过浏览器到官方下载ubuntu对应teamviewer的安装包    但是通过dpkg –i安装之后发现安装过程出问题,安装好的包打开之后也闪退。    这个时候需要    使用如下命令处理依赖问题    sudo apt-get install –f    运行完了之后再dpkg -i安装一遍,就会发现没有出错了。    ...

推荐文章

热门文章

相关标签