Ⅰ C语言编程:输出由键盘输入的n个字符串中最长的字符串。咋做
代码文本:
#include "stdio.h"
#include <stdlib.h>
#include <string.h>
#define N 101
int Longer(char **str,int n){//判断串长度函数
int i,k;
for(k=0,i=1;i<n;i++)
if(strlen(str[i])>strlen(str[k]))
k=i;
return k;
}
int main(int argc,char *argv[]){
int n,i;
char **str,*q;
printf("Enter n(int n>0)... ");
if(scanf("%d",&n)==1 && n>0){//输入字符串个数n
q=(char *)malloc(sizeof(char)*N*n);//由n申请空间
if(!q || (str=(char **)malloc(sizeof(char *)*n))==NULL){
printf("Application memory failure, exit... ");
return 0;//申请不成功则退出
}
for(str[i=0]=q;i<n;str[i++]=q+i*N);//将空间组织成二维数组
printf("Please enter %d string(s)... ",n);
for(i=0;i<n;scanf("%100s",str[i++]));//输入字符串
printf(" The longest: %s ",str[Longer(str,n)]);//输出
free(q);//释放所申请的空间
free(str);
}
else
printf("Input error, exit... ");//输入错误提示
return 0;
}
Ⅱ C语言 输出最长字符串问题
你longest函数,当判断当前单词比前一个单词短的时候,你没有将len置0,导致后一个单词len累加了。
我修改的地方标注了,把len++拉到判断外面执行就行。
#include<stdio.h>
#include<string.h>
intmain()
{
intalphabetic(char);
intlongest(char[]);
inti;
charline[100];
printf("请输入一个字符串:
");
gets(line);
printf("最长的单词是:");
for(i=longest(line);alphabetic(line[i]);i++)
printf("%c",line[i]);
printf("
");
return0;
}
intalphabetic(charc)
{
if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
return1;
else
return0;
}
intlongest(charstr[])
{
intlen=0,i,lenght=0,flag=1,place=0,point;
for(i=0;i<=strlen(str);i++)
if(alphabetic(str[i]))
if(flag)
{
point=i;
flag=0;
}
else
len++;
else
{
flag=1;
if(len>=lenght)
{
lenght=len;
place=point;
}
len=0;//修改这个地方!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
}
return(place);
}
Ⅲ C语言:从键盘输入10个字符串,找出一个最长的字符串。
先输入10个字符串,然后依次计算字符串长度,找到最长的一个,并把这个字符串输出即可。
代码如下:
#include<stdio.h>
#include<string.h>
intmain()
{
chars[10][100];
inti;
intmax_i,max_len=0;
for(i=0;i<10;i++)
scanf("%s",a[i]);//输入10个字符串。
for(i=0;i<10;i++)
{
intl=strlen(s[i]);
if(max_len<l)//依次将长度和max_len对比,找到最长一个。
{
max_len=l;
max_i=i;
}
}
printf("%s ",s[max_i]);//输出最长字符串。
return0;
}