找最小的字符串

简介: 找最小的字符串

901256929b054fd09bfbcc9b21d8e5c2.png

2dd404368ad040719b75a18a09b28ddb.png

  要想完成这个程序,我们就要知道字符串的大小是怎么比较的。如果要比较字符串的大小,就要借助字符串比较函数strcmp(s1,s2)。因为字符串比较函数是一个库函数,所以我们要在main函数的前面包含string.h的头文件。


  那字符串比较函数strcmp(s1,s2)怎么用呢?容我慢慢道来。首先函数strcmp()中的参数s1和s2可以是字符数组名又可以是字符串常量。函数strcmp()返回一个整数,给出字符串s1和s2的比较结果:


若s1和s2相等,返回0。

若s1大于s2,返回一个正数。

若s1小于s2,返回一个负数。

  假设str1和str2都是字符数组,在C语言中,str1==str2、str1>=str2和str1<=str2比较的是两个字符数组的首元素地址。而strcmp(str1,str2)==0、strcmp(str1,str2)>=0和strcmp(str1,str2)<=0比较两个字符串的内容。


  字符串的比较规则是:从两个字符串的首字符开始,依次比较相对应的字符(比较字符的ASCII码),知道出现不同的字符串或遇到'\0'为止。如果所有的字符都相等,返回0;否则,以第一个不相同字符的比较结果为准,返回这两个字符的差,即第一个字符串的字符减去第二个字符串的字符得到的差。例如:


strcmp("love","love")的值等于0,说明"love"和"love"相等。

strcmp("compute","compare")的值大于0,因为('u'-'a')是个正数,也就说明"compute"大于"compare"。

strcmp("happy","sad")的值小于0,因为('h'-'s')是个负数,也就说明"happy"小于"sad"。

strcmp("sea","seat")的值小于0,因为("\0"-"t")是个负数,也就说明"sea"小于"seat"。

一般来说,strcmp()函数的值为1,0和-1。  


ASCII码表

d8d89da94f084831a7cd8c8a21dc6167.png


 讲到这,相信大家已经差不多能够把找最小的字符串的程序写出来了。


  想要把这个程序完成,我们还要借助一个函数,就是字符串函数strcpy(s1,s2)。该函数把字符串s2复制到s1,直到s2中的'\0'为止。同时要注意,s1要有足够的空间容纳s2,且s1中的内容被完全覆盖,函数返回的是s1。与strcmp()函数有所不同的是,strcpy(s1,s2)中的参数s1必须是字符数组名,参数s2可以是字符数组名或字符串常量。例如:


char s1[80],s2[80],from[80]="happy";

strcpy(s1,from);

strcpy(s2,"love");


 第二条语句调用了函数strcpy()把from中的字符复制给s1;第三条语句把字符串"love"复制给s2后,数组s1中存放了"happy",数组s2中存放了"love"。


 现在我们找到了这个程序所需要的两个函数,那么这道题我们就可以轻松地做出来了。


#include <stdio.h>
#include <string.h>
int main()
{
  int n;
  scanf("%d\n",&n);  //n为行数
  char str[n][80];   //80列为了字符串不超过80个字符
  char Min[80];
  for(int i=0;i<n;i++)
  {
    scanf("%s",str[i]);
  }
  strcpy(Min,str[0]);  //先给字符串Min赋个初值
  for(int i=0;i<n;i++)
  {
    if(strcmp(Min,str[i])>0)  //调用strcmp()函数来判断字符串的大小
    {
      strcpy(Min,str[i]);     //符合条件就改变字符串Min的值
    }
  }
  printf("Min is: %s",Min);
  return 0;
}
相关文章
|
机器学习/深度学习 自然语言处理 并行计算
一文搞懂Transformer架构的三种注意力机制
一文搞懂Transformer架构的三种注意力机制
1310 1
|
测试技术 API 开发工具
|
缓存 分布式计算 NoSQL
分布式NoSQL列存储数据库Hbase_MR集成Hbase:读写Hbase规则(九)
分布式NoSQL列存储数据库Hbase_MR集成Hbase:读写Hbase规则(九)
127 0
|
JavaScript
彻底理解sync的用法
彻底理解sync的用法
272 0
|
NoSQL Java MongoDB
《SpringBoot篇》16.SpringBoot整合Elasticsearch超详细教程(二)
《SpringBoot篇》16.SpringBoot整合Elasticsearch超详细教程(二)
499 0
《SpringBoot篇》16.SpringBoot整合Elasticsearch超详细教程(二)
|
10天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1210 5
|
9天前
|
机器学习/深度学习 人工智能 前端开发
通义DeepResearch全面开源!同步分享可落地的高阶Agent构建方法论
通义研究团队开源发布通义 DeepResearch —— 首个在性能上可与 OpenAI DeepResearch 相媲美、并在多项权威基准测试中取得领先表现的全开源 Web Agent。
1172 87

热门文章

最新文章