编写一个C语言程序以数组形式存放n个字符串,并且这些字符串以升序排序

如题所述

#include<stdio.h>
#include<string.h>
main()
{
char *pstr[50],*pstr1;
char str[50][50];
int i,j,n;
printf("input n:");
scanf("%d",&n);
//获取缓冲区中的回车符
getchar();
printf("input %d string:\n",n);
//输入字符串
for(i=0;i<n;i++)
gets(str[i]);
//将字符串首地址存入指针数组pstr中
for(i=0;i<n;i++)
pstr[i]=str[i];
//起泡法排序
for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++)
if(strcmp(pstr[j],pstr[j+1])>0)
{pstr1=pstr[j];
pstr[j]=pstr[j+1];
pstr[j+1]=pstr1;}
printf("\n");
//输出排序后的字符串
for(i=0;i<n;i++)
puts(pstr[i]);

}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-06-07
#include<stdio.h>
void main()
{
int i;
char str[80];
printf("input string:\n");
gets(str);
for(i=0;getchar()!='\0';i++)
{
if(str[i]>str[i+1])
{
t=str[i];
str[i]=str[i+1];
str[i+1]=t;
}
}
puts(str);
}
 初学c语言 这个题目平时有练习过 用普通的冒泡排序就能实现,未经调戏 估计运行没有什么问题 希望你帮到你
第2个回答  2012-05-25
#include<stdio.h>
#include<string.h>
#define N 4

void sort(char s[N][2*N])
{
int i,j;
char swap[2*N];
for(i=N-1;i>=0;i--)
for(j=0;j<i;j++)
{
if(strcmp(s[j],s[j+1])>0)
{
strcpy(swap,s[j]);
strcpy(s[j],s[j+1]);
strcpy(s[j+1],swap);
}
}
}
int main()
{
char buf[N][2*N];
int i;
for(i=0;i<N;i++)
{
puts("input a string:");
scanf("%s",buf[i]);
}
sort(buf);
for(i=0;i<N;i++)
printf("%s\n",buf[i]);
return 0;

}
第3个回答  2012-05-26
个人认为,用指针比较好做追问

具体程序是怎样的呢?

相似回答