要想完成这个程序,我们就要知道字符串的大小是怎么比较的。如果要比较字符串的大小,就要借助字符串比较函数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码表

 

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

 
 想要把这个程序完成,我们还要借助一个函数,就是字符串函数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; }

   觉得有收获的小伙伴,可以点点小赞支持一下,你们的点赞就是我的最大动力。谢谢!!! 

技术
下载桌面版
GitHub
Gitee
SourceForge
百度网盘(提取码:draw)
云服务器优惠
华为云优惠券
腾讯云优惠券
阿里云优惠券
Vultr优惠券
站点信息
问题反馈
邮箱:[email protected]
吐槽一下
QQ群:766591547
关注微信