零K沁雪


私信TA

用户名:qczl

访问量:78052

签 名:

零K沁雪

等  级
排  名 44
经  验 12403
参赛次数 3
文章发表 35
年  龄 0
在职情况 在职
学  校
专  业

  自我简介:

解题思路:

1、字符串比较大小的函数strcmp(char *a, char *b)

    a) a == b 返回0

    b)a < b 返回负值

    c) a > b返回正值

2、字符串拷贝函数 strcpy(char *a, char *b),将字符串b拷贝到字符串a中。

3、既然是排序问题,那么就可以用冒泡排序法。

注意事项:

参考代码:

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

int main()
{
	char a[3][128], tmp[128];
	int i, j;
	for(i=0; i<3; i++)
	{
		scanf("%s", a[i]);
	}
	for(i=0; i<3; i++)
	{
		for(j=i+1; j<3; j++)
		{
			if(strcmp(a[i], a[j]) > 0)
			{
				memset(tmp, 0, sizeof(tmp));
				strcpy(tmp, a[i]);
				strcpy(a[i], a[j]);
				strcpy(a[j], tmp);
			}
		}
	}
	for(i=0; i<3; i++)
	{
		printf("%s\n", a[i]);
	}
	return 0;
}


 

0.0分

81 人评分

  评论区

为什么我这个在vs里无法输出啊
2023-12-02 21:35:37
朋友们,请教一下,第十行,本来定义的二维,写的一维,没写列,表示的是接收这一行的吗,
还有假如定义的列是3,我赋值100000个字母也没事,这不算越界吗
2023-05-02 15:05:35
#include<stdio.h>
#include<string.h>
int main()
{
  char	a[100],b[100],c[100];
  gets(a);gets(b);gets(c);
  if(strcmp(a,b)<=0){
  	if(strcmp(a,c)<=0){
	  	puts(a);
	  	if(strcmp(b,c)<=0){
	  		puts(b);puts(c);
		  }
		  else{puts(c);puts(b);}
	  }
	  else{
	  	puts(c);
		  if(strcmp(a,b)<=0){
		  	  		puts(a);puts(b);
		  		  }
		  		  else{puts(b);puts(a);}
	  }
  }
  else if(strcmp(b,c)<=0){
  	puts(b);if(strcmp(a,c)<=0){
	  		  	  		puts(a);puts(c);
	  		  		  }
	  		  		  else{puts(c);puts(a);}
  	
  }
  else{
  	
  	puts(c);
  	if(strcmp(a,b)<=0){
	  		  	  		puts(a);puts(b);
2022-06-27 20:56:50
#include <stdio.h>
#include <string.h>

char compare(char *p,char *q,char *w,char *k);

void main ()
{
	char a[3][40];
	char str[60];
	char *p,*q,*w,*k;
	int i;
	for(i=0;i<3;i++)
	{
		scanf("%s",a[i]);
	}
	p=a[0];q=a[1];w=a[2];k=str;
	compare(p,q,w,k);
	printf("%s\n",p);
	printf("%s\n",q);
	printf("%s",w);
}
char compare(char *p,char *q,char *w,char *k)
{
	
	if(strcmp(p,q)>0)
	{
		strcpy(k,p);strcpy(p,q);strcpy(q,k);
	
	}	
	if(strcmp(p,w)>0)
	{
		strcpy(k,p);strcpy(p,w);strcpy(w,k);
	}
	if(strcmp(q,w)>0)
	{
		strcpy(k,q);strcpy(q,w);strcpy(w,k);
	}
	return (1);
}
大佬能看懂我写的指针吗?过了,但感觉指针用的是错的。
2021-11-28 20:00:22
#include <stdio.h>
#include <string.h>

char compare(char *p,char *q,char *w,char *k);

void main ()
{
	char a[3][40];
	char str[60];
	char *p,*q,*w,*k;
	int i;
for(i=0;i<3;i++)
	{
		scanf("%s",a[i]);
	}
	p=a[0];q=a[1];w=a[2];k=str;
	compare(p,q,w,k);
	printf("%s\n",p);
	printf("%s\n",q);
	printf("%s",w);
}

char compare(char *p,char *q,char *w,char *k)
{
	if(strcmp(p,q)>0)
	{
		strcpy(k,p);strcpy(p,q);strcpy(q,k);
	
	}	
	if(strcmp(p,w)>0)
	{
		strcpy(k,p);strcpy(p,w);strcpy(w,k);
	}
	if(strcmp(q,w)>0)
	{
		strcpy(k,q);strcpy(q,w);strcpy(w,k);
	}
	return (1);
}
我的
2021-11-28 19:58:14
memset(tmp, 0, sizeof(tmp));
这一句不写行不行啊
2021-11-06 23:17:24
请大佬指教 这总是运行错误怎么回事
#include<stdio.h>
#include<string.h>
void swap (char *s1,char *s2)
{
	char t[10];
	strcpy(t,s1);
	strcpy(s1,s2);
	strcpy(s2,t);
}
int main()
{
	char a[10];
	char b[10];
	char c[10];
	scanf("%s%s%s",&a,&b,&c);
	if(strcmp(a,b)>0)
		swap(a,b);
	if(strcmp(a,c)>0)
		swap(a,c);
	if(strcmp(b,c)>0)
		swap(b,c);
	printf("\n%s\n%s\n%s",a,b,c);	
	return 0;
}
2021-08-27 18:42:44
#include<stdio.h>
#include<string.h>
int main()
{
	char Array[3][100];
	char MyArray[100];
	for (size_t i = 0; i < 3; i++)
	{
		scanf("%s", Array[i]);
	}
	for (size_t i = 0; i < 3; i++)
	{
		for (size_t j = i+1; j < 3; j++)
		{
			if (strcmp(Array[i],Array[j])>0)
			{
				strcpy(MyArray, Array[i]);
				free(Array[i]);
				strcpy(Array[i], Array[j]);
				free(Array[j]);
				strcpy(Array[j], MyArray);
				free(MyArray);
			}
		}
		printf("%s\n", Array[i]);
	}
	return 0;
}
2021-06-02 15:35:05