解题思路:
判断输入的三个字符的大小与判断输入三个数字的大小的方法相同。

首先需要定义三个字符变量数组str1[100],str2[100],str3[100]用来保存三个字符串,然后使用if判断句进行两两比较。


1.先将字符串数组str1[100]和str2[100]进行比较,把较小的字符串保存在数组str1[100]中,较大的保存在str2[100]中;

2.然后再将str1[100]和str3[100]进行比较,把较小的字符串保存在str1[100]中,较大保存在str3[100]中,确保str1[100]中保存的是最小的字符串;

3.最后将str2[100]和str3[100]进行比较,str2[100]中保存较小的,str3[100]保存较大的。


说明:

C语言中字符串的比较规则是 将两个字符串自左至右逐个字符相比(按ASCII码值大小比较),直到出现不同的字符或遇到'\0'为止。


所用到的字符串处理函数:

strcmp函数-----字符串比较函数

           其一般形式为:strcmp(字符串1,字符串2)

          比较结果由函数值带回

        (1)如果字符串1=字符串2,则函数值为0。

        (2)如果字符串1>字符串2,则函数值为一个正整数。

        (3)如果字符串1<字符串2,则函数值为一个负整数。

strcpy函数-----字符串复制函数

           其一般形式为:strcpy(字符串1,字符串2)

           作用是将字符串2复制到字符串1中去。


注意事项:
C语言中,对字符串进行操作时,可以使用C函数库提供的专门对字符串进行处理的函数,若要使用这些处理函数时,应当在程序开头用#include<string.h>把string.h文件包含到本文件中。


参考代码:

#include<stdio.h>
#include<string.h>
int main()
{
    //定义三个字符数组用来保存三个字符串
    char str1[100];
    char str2[100];
    char str3[100];
    //定义字符数组str用来保存临时字符串
    char str[100];
    //从键盘接受三个字符串
    gets(str1);
    gets(str2);
    gets(str3);
    //以下if语句用来判断三个字符串的大小
    if(strcmp(str1,str2)>0)
    {
        strcpy(str,str1);
        strcpy(str1,str2);
        strcpy(str2,str);
    }
    if(strcmp(str1,str3)>0)
    {
        strcpy(str,str1);
        strcpy(str1,str3);
        strcpy(str3,str);
    }
    if(strcmp(str2,str3))
    {
        strcpy(str,str2);
        strcpy(str2,str3);
        strcpy(str3,str);
    }
    //用puts语句输出三个字符串
    puts(str1);
    puts(str2);
    puts(str3);
    return 0;
}


点赞(0)
 

0.0分

7 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 6 条评论

crj 9月前 回复TA
照抄冒泡排序
#include <stdio.h>
#include <string.h>

int main()
{ 
	char arr[3][100] = { 0 }, ar[100] = { 0 };
	for (int i = 0; i < 3; i++)
	{
		gets(arr[i]);
	}
	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 3 - i - 1; j++)
		{
			if (strcmp(arr[j], arr[j + 1]) > 0)
			{
				strcpy(ar, arr[j]);
				strcpy(arr[j], arr[j + 1]);
				strcpy(arr[j + 1], ar);
			}
		}
	}
	for (int i = 0; i < 3; i++)
		puts(arr[i]);
	return 0;
}
un 1年前 回复TA
有问题啊,输入
b
a
c
返回
a
c
b
爱编程的小笨孩 2年前 回复TA
@在路上 不好意思,最近没有在这个网站刷题
爱编程的小笨孩 2年前 回复TA
@在路上 可以的,三个if语句的位置是可以互换的
在路上 2年前 回复TA
@在路上 作者能回答我一下吗
在路上 2年前 回复TA
最后一个写上大于零行忙