C语言编程题,输入5个字符串,然后排序

详细:从键盘上输入5个字符串(约定:每个字符串中字符数≤80字节),对其进行升序排序并输出。编程可用素材:printf("Input5strings:\n")...、pr... 详细:
从键盘上输入5个字符串(约定:每个字符串中字符数≤80字节),对其进行升序排序并输出。编程可用素材:printf("Input 5 strings:\n")...、printf("---------------------------\n")...。
  程序的运行效果应类似地如图1所示,图1中的
hello
my
friend
Are you ready?
help!

要求:尽量使程序简单化,不用自定义函数,不用指针;
谢谢各位了!!
展开
 我来答
问明6E
高粉答主

2019-05-25 · 每个回答都超有意思的
知道答主
回答量:279
采纳率:100%
帮助的人:13万
展开全部

#define LINEMAX 20/*定义字符串的最大长度*/

int main()

{int i;

char**p,*pstr[5],str[5][LINEMAX];

for(i=0;i<5;i++)

pstr<i>=str<i>;/*将第i个字符串的首地址赋予指针数组pstr的第i个元素*/

printf("input 5 strings:\n");

for(i=0;i<5;i++)

scanf("%s",pstr<i>);

p=pstr;

sort(p);

printf("strings sorted:\n");

for(i=0;i<5;i++)

printf("%s\n",pstr<i>);

}

sort(char**p)/*冒泡法对5个字符串排序函数*/

{int i,j;

char*temp;

for(i=0;i<5;i++)

{for(j=i+1;j<5;j++)

{if(strcmp(*(p+i),*(p+j))>0)/*比较后交换字符串地址*/

{temp=*(p+i);

*(p+i)=*(p+j);

*(p+j)=temp;

}

}

}

return 0;

}

扩展资料:

printf()函数的调用格式为:printf("<格式化字符串>",<参量表>)。

其中格式化字符串包括两部分内容:一部分是正常字符,这些字符将按原样输出;另一部分是格式化规定字符,以"%"开始,后跟一个或几个规定字符,用来确定输出内容格式。

参量表是需要输出的一系列参数,其个数必须与格式化字符串所说明的输出参数个数一样多,各参数之间用","分开,且顺序一一对应,否则将会出现意想不到的错误。

比如:

int a=1234;

printf("a=%d\n",a);

输出结果为a=1234。

scanf()是C语言中的一个输入函数。与printf函数一样,都被声明在头文件stdio.h里,因此在使用scanf函数时要加上#include<stdio.h>。

int scanf(const char*restrict format,...);

函数scanf()是从标准输入流stdin(标准输入设备,一般指向键盘)中读内容的通用子程序,可以说明的格式读入多个字符,并保存在对应地址的变量中。

如:

scanf("%d%d",&a,&b);

函数返回值为int型,如果a和b都被成功读入,那么scanf的返回值就是2。

百度网友ddc21c9
2012-05-25 · 超过13用户采纳过TA的回答
知道答主
回答量:48
采纳率:0%
帮助的人:37.2万
展开全部
你能不能把怎么个升序排序说的清楚点 按首字母的字典顺序? 你那个如图1就是白瞎的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dufenglei908
2012-05-25 · TA获得超过6372个赞
知道大有可为答主
回答量:1449
采纳率:60%
帮助的人:772万
展开全部
#include <stdio.h>
#include <string.h>

int main()
{
char strs[5][80];
char buf[80];
printf("Input 5 strings:\n");
int i = 0, j, k;
while (i < 5)
{
gets(buf);
for (j = 0; j < i; j++)
if (strcmp(buf, strs[j]) <= 0) break;

for (k = i; k > j; k--)
strcpy(strs[k], strs[k - 1]);

strcpy(strs[j], buf);
i++;
}

printf("-----------------\n");
for (i = 0; i < 5; i++) printf("%s\n", strs[i]);

return 0;
}

运行结果如下:
Input 5 strings:
hello
my
friend
Are you ready?
help!
-----------------
Are you ready?
friend
hello
help!
my
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友81eaa96
推荐于2018-04-30 · TA获得超过485个赞
知道小有建树答主
回答量:254
采纳率:100%
帮助的人:250万
展开全部
#include<stdio.h>
#include<string.h>

int main()
{
char str[5][80];
char temp[80];
int i,j;
printf("Please input 5 strings:\n");
for (i=0;i<5;i++)
{
gets(str[i]);
}
for (i=0;i<5;i++)
{
for (j=i+1;j<5;j++)
{
if (strcmp(str[i],str[j])>0)
{
strcpy(temp,str[i]);
strcpy(str[i],str[j]);
strcpy(str[j],temp);
}
}
}
printf("The strings:\n");
for (i=0;i<5;i++)
{
puts(str[i]);
}
return 0;
}
完美运行。
望采纳!!
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
g313105910
2012-05-25
知道答主
回答量:3
采纳率:0%
帮助的人:5047
展开全部
这个有点难饿
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式