任意输入5个字符串存放到二维数组中,按字符串长度从短到长顺序输出。(用C程序)

本人新手,希望高手指点!

#include<stdio.h>
#include <string.h>
int main()
{
char str[5][20],temp[20];
int i,j,k,len[5],t;
printf("输入五个字符串:");
for(i=0; i<5; i++)
{
scanf("%s",str[i]);
len[i] = strlen(str[i]);
}
for(i=0; i<4; i++)
{
k = i;
for(j=i+1; j<5; j++)
{
if(len[k] > len[j])
{
k = j;
}
}
if(k != i)
{
memset(temp,0,20);
strcpy(temp,str[k]);
memset(str[k],0,20);
strcpy(str[k],str[i]);
memset(str[i],0,20);
strcpy(str[i],temp);
t = len[k];
len[k] = len[i];
len[i] = t; }
}
for(i=0; i<5; i++)
{
printf("%s ",str[i]);
}
return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-06-26
太 新手了 这都不知道。我也不是很懂。我来抢满答案!

C语言:输入5个字符串,按由小到大(我想应该是strcmp函数比较)的顺序输 ...
include<string.h> define M 5 define N 20 void main(){ char str[M][N],temp[N];int i,j;for(i=0;i<M;i++){ printf("请输入第%d个字符串:",i+1);scanf("%s",&str[i]);} printf("排序前:\\n");for(i=0;i<M;i++)printf("第%d个字符串:%s\\n",i+1,str[i]);f...

C语言,输入5个字符串,按由小到大的顺序输出。非常急,求指导!
char *a[5], b[5][99], **p;int i;for (i = 0; i < 5; i++)a[i] = b[i];printf("请依次输入五个字符串:\\n");for (i = 0; i < 5; i++)scanf("%s", a[i]);p = a;sort(p);printf("排序后输出为:\\n");for (i = 0; i < 5; i++){ printf("%s\\...

用C编一个程序,输入5个字符串,然后按字母表顺序输出,我用的是二维数组...
break;\/\/满足if则已经比较出两个字符串的大小并交换,不需要再比较下一个字符 } else if(a[i][k]==a[j][k]) continue;\/\/字符相同时,比较下一个字符 else break;\/\/不满足以上也已经比较出两个字符串的大小,不需交换,不需再比较下一个字符 }printf("\\n");for(i=0;i<5;i++)print...

输入5个字符串,按由小到大的顺序输出(用指针做)
include<string.h> main(){ int i,j;char t[5];char a[5][5]={'\\0'};printf("输入5个字符串");for(i=0;i<5;i++)scanf("%s",&a);for(i=0;i<5;i++)for(j=0;j<5-i;j++){ if(strcmp(a[j],a[j+1])>0){ strcpy(t,a[j]);strcpy(a[j],a[j+1]);strcpy(...

C语言要求通过键盘输入5字符串,再调用函数sort给字符串从小到大排列,再...
看你代码原意,是想定义一个字符串数组strs。但是你写的char *strs[5];表示的是一个维度为5的指针数组。你可以把strs直接改成字符串数组,char strs[5][N],但你后面的函数参数类型也要跟着改。如果你不想改动其他函数,还继续使用指针数组,也是可以的。你可以用动态内存来写输入部分:(头文件...

编写C程序:用指针数组操作,将输入的5个字符串按从小到大的顺序输出
void order(int * string) \/\/把数组按从小到大排列,返该数组首地址 输入0结束 { int i,j,temp;int n = 0; \/\/计算输入数组的长度(包括结束数0)int * p = string;while(0 != *p++){ n++;} \/\/起泡法排序 p = string;for(i = 0;i < n; i++){ for(j = 0;j < n-i;...

C语言:.输入5个字符串,输出最长的字符串.
include<stdio.h> include<string.h> void main(){ char str[5][1001];int k[5],t=0;for(int i=0;i<5;i++){ gets(str[i]);k[i]=strlen(str[i]);if(k[i]>t){ t=k[i];} } for(i=0;i<5;i++){ if(t==k[i])puts(str[i]);} printf("\\n");} ...

C语言:输入5个字符串,按由小到大(我想应该是strcmp函数比较)的顺序输 ...
#define M 5 #define N 20 void main() { char str[M][N],temp[N]; int i,j; for(i=0;i<M;i++) { printf("请输入第%d个字符串:",i+1); scanf("%s",&str[i]); } printf("排序前:\\n"); for(i=0;i<M;i++) printf("第%d个字符串:%s\\n",i+1,str[i]); for(j=0;j<...

...一个二维字符数组,存放由键盘任意输入的5个字符串,求出最大的字符...
include <string.h>main(){char s[5][100];int i,max;for(i=0;i<5;i++) gets(s[i]);max=0;for(i=1;i<5;i++) if(strcmp(s[i],s[max])>0) max=i;printf("max string=\\"%s\\"\\n",s[max]);getch();}

一道c语言程序题: 输入5个字符串,按字典顺序将其重新排列输出。用字符串...
include<string.h> void main(){ void sort(char (*p)[20]);char a[5][20];\/\/五行20列 int i;printf("请输入5个字符串:\\n");for(i=0;i<5;i++)\/\/这里输入五个字符串 gets(a[i]);sort(a);\/\/调用函数进行排列 } void sort(char (*p)[20]){ char a[20];int i,j;for(...

相似回答