从键盘输入五个字符串,分别求出字符串中长度最长和最短的字符串,请编程。(要求:不要使用strlen(_)函数

2025年03月25日 08:37
有3个网友回答
网友(1):

#include
#include

int Length(char *s) //计算字符串长度
{
int len = 0;
for(int i=0; s[i]!='\0'; i++)
len ++;
return len;
}

int main()
{
int minlen = 110, maxlen = 0; //给最小、最大长度赋初值
int min = 0, max = 0; //给最小、最大字符串的下标赋初值
char s[5][100];

printf("输入五个字符串:\n");
for(int i=0; i<5; i++)
{
gets(s[i]);

if(minlen > Length(s[i])) //找最短的字符串
{
minlen = Length(s[i]);
min = i;
}

if(maxlen < Length(s[i])) //找最长的字符串
{
maxlen = Length(s[i]);
max = i;
}
}

printf("字符串中长度最短的字符串: %s\n",s[min]);
printf("字符串中长度最长的字符串: %s\n",s[max]);
return 0;
}

网友(2):

从字符数组s的开头指针s开始,不断向后统计,到指针为空为止,相当于自行些一个strlen.

网友(3):

/*比较笨重的冒泡排序法,用到string中的串比较strcmp和串拷贝strcpy。amount是字符串的数量,length是字符串的长度,不管你是否习惯这么写,这样表示都是有好处的。我的编译器是visual studio 2008 C++。*/

#include
#include

int main()
{
const int amount=5;
const int length=20;
char string[amount][length];

for(int i=0;i {
scanf("%s",string[i]);
}

for(int i=0;i {

for(int j=0;j {
if(strcmp(string[i],string[j])<0)
{
char tmp[length];
strcpy(tmp,string[i]);
strcpy(string[i],string[j]);
strcpy(string[j],tmp);
}
}
}

for(int i=0;i {
printf("%s\n",string[i]);
}
return 0;
}