69,382
社区成员
发帖
与我相关
我的任务
分享
// uniquesoft1.cpp : Defines the entry point for the console application.#include<stdio.h>
int alph(char c)
{
if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
return(1);
else
return(0);
}
longest(char str[])
{
int i,lenth=0,maxlenth=0,point,p=1,place;
for(i=0;str[i]!='\0';i++)
if(alph(str))
if(p) //开始计算字母个数,同时标记单词起始位置
{
point=i;
p=0;
}
else
lenth++;
else
{
p=1;
if(maxlenth<lenth)
{
maxlenth=lenth;
lenth=0;
place=point;
}
}
return(place);
}
main()
{
int i;
char line[100];
gets(line);
for(i=longest(line);alph(line);i++)
printf("%c",line);
printf("\n");
}
/*还有这个方法*/
#include <stdio.h>
#include <string.h>
int main ()
{
char str[100];
char *p,*p1;
int len;
printf("please enter a string \n");
gets(str);
p=strtok(str," ");
len = strlen (p);
p1=p;
while (p!=NULL)
{
if (strlen (p)>len)
{
len=strlen(p);
p1=p;
}
p=strtok(NULL," ");
}
printf("%s\n",p1);
return 0;
}
/*
1. 是按照你的思路改的,(当然有很多方法,如用字符串的函数strlen()等),
2. 问题主要是如果最长的字符串在最后,你的方法并没有把他的长度计算进来,因为string[i]=='\0';了。
3. 找到最长的单词的方法也做了改动,不去比较空格或'\0',你已经计算了长度,以及
最长字符串的起点,从起点开始把那个长度的字符copy到s[n]中,最后加个'\0'就可以了。
4. 最后,单个字符串的长度是不能超过20的,否则程序就崩溃了(注意一下)*/
#include <stdio.h>
void main()
{
void longest(char string[100]);
char string[100];
gets(string);
longest(string);
}
void longest(char string[100])
{
char s[20];
int i,j=0,k=0,t[100],c[100],m,b,a,sum=0,n=0,max;//加了个max
for(i=0;string[i]!='\0';i++) /*将每个单词的长度作为t[k]数组的一个元素*/
{
if(string[i]!=' ')j++;
else
{
t[k]=j;
k++;
j=0;
}
}
t[k]=j;//把最后一个字符串也要加进去。
a=k;
for(m=0,k=0;m<=a;m++,k++)/*将数组t[k]中的所有元素复制到另一个数组c[m]*/
c[m]=t[k];
max=t[0];//设max为最大
for(b=0;b<=a;b++)/*找到组t[ ]中的最大值*/
if(t[b]>max)
{
max=t[b];
}
for(m=0;c[m]!=max;m++)/*计算最长的单词前面所有字符的个数,加一是因为有空格*/
sum=c[m]+1+sum;
for(n=0,a=sum;a<sum+max;a++,n++)/*找到最长的单词*/
{
s[n]=string[a];
}
s[n]='\0';
for(i=0;i<n;i++)
printf("%c",s[i]);
printf("\n");
}
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#define M 100
#define N 300
#define L 20
void main()
{
int i,j,k,m,len,number,word,max,a[L];
char words[M][L],string[N];
number = word = max = 0;
k = m = 0;
puts("请输入一段英文短文:");
gets(string);
len = strlen(string);
for (i=0; i<=number && j!=len+2; i++)
{
for (j=m; j<=len+1; j++)
{
if ( !(isalpha(string[j])) )
{
string[j] = ' ';
}
if (string[j] == ' ')
{
if (word)
{
words[i][k] = '\0';
if (max < k-1)
{
max = k-1;
}
k = 0;
m ++;
number+=1;
word = 0;
break;
}
m++;
continue;
}
else
{
word = 1;
words[i][k++] = string[j];
m++;
}
}
}
printf("共有%d个单词.\n",number);
puts("最长的为:");
for (i=0; i<number; i++)
{
if (a[i] == max)
{
puts(words[i]);
}
}
}