输入5个字符串,按由小到大的顺序输出,试编写相应程序。

//输入5个字符串,按由小到大的顺序输出,试编写相应程序。#include<stdio.h>#include<string.h>voidmaopao(char*p[]){... //输入5个字符串,按由小到大的顺序输出,试编写相应程序。

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

void maopao(char *p[])

{
int i,j,k;
char *t;
for (i=0; i<4; i++) {
for (j=0; j<4-i; j++) {
if (strcmp(p[j],p[j+1])>0) {
t=p[j];
p[j]=p[j+1];
p[j+1]=t;
}
}
}

for (k=0; k<5; k++) {
puts(p[k]);
}

}

int main()
{
printf("Please input:");
int i;
char a[5][80];
char *p[5];
for (i=0;i<5; i++) {
scanf("%s",&a[i]);
p[i]=a[i];
}
maopao(p);
return 0;
}

程序是对的,但是我的问题就一个,函数maopao里的第三第四行为啥都是<4而不是5呢?我大脑逻辑不清晰了啊。。
展开
 我来答
漠影歌
推荐于2017-11-27 · TA获得超过807个赞
知道小有建树答主
回答量:483
采纳率:50%
帮助的人:449万
展开全部
你输入的是五个字符串, 然后你进入比较的时候 仔细看你写的strcmp(p[j],p[j+1])>0 里面是 p[j] 和p[j + 1], 注意看是j + 1 ,假设 j = 3的时候,就是 p [3] 和 p[4], 如果是5的话 ,p[4] 和p[5]比,你根本没有p[5]这个元素,拿什么来比
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式