当前位置:首页 » 编程语言 » c语言输出最长单词

c语言输出最长单词

发布时间: 2022-11-02 02:37:08

c语言编程:写一个函数,输入一行字符,将此字符串中最长的单词输出.

#include

<stdio.h>

void

main()

{

int

a,b,c;

printf("请输入3个整数:");

scanf("%d%d%d",&a,&b,&c);

if((a>b)

&&

(a<c)

||

(a<b)

&&

(a>c))

printf("

%d

为位于中间的数 ",a);

if((b>a)

&&

(b<c)

||

(b<a)

&&

(b>c))

printf("

%d

为位于中间的数 ",b);

if((c>b)

&&

(c<a)

||

(c<b)

&&

(c>a))

printf("

%d

为位于中间的数 ",c);

}

这个是几个数中输出最大的数的!

(1)c语言输出最长单词扩展阅读:

字符串在存储上类似字符数组,它每一位单个元素都是能提取的,字符串的零位是它的长度,如s[0]=10,这提供给我们很多方便,例如高精度运算时每一位都能转化为数字存入数组。

通常以串的整体作为操作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。两个字符串相等的充要条件是:长度相等,并且各个对应位置上的字符都相等。设p、q是两个串,求q在p中首次出现的位置的运算叫做模式匹配。串的两种最基本的存储方式是顺序存储方式和链接存储方式。

② C语言,输入一个字符串,将其中最长的单词输出,不要用函数,求解决

#include <iostream>
void main()
{
int word(char c);
int longest(char str[]);
int i;
char str[80];
printf("输入一行字符串\n\n");
gets(str);
printf("\n\n最长的单词为:\n\n");
for(i=longest(str);word(str[i]);i++)
printf("%c",str[i]);
printf("\n");
}
int word(char c)
{
if((c>='a'&&c<='z')||(c>='A'&&c<='Z')) return 1;
else return 0;
}

int longest(char str[])【这个函数几乎完全看不懂 望逐句详细解释其逻辑】
{
int i,flag=1,len=0,point,max_len=0,max_point;
for(i=0;i<=strlen(str);i++)//解析每个字符
{
if(word(str[i])) //是英文字母的话
{
if(flag==1) //成立的话说明这个英文字母是单词的第一个
{
point=i; //单词第一个找到后改变标志
flag=0;
}
else len++; //开始对这个单词长度进行累加
}
else //非英文字母的话
{
flag=1; //等待第一个英文字母的出现,所以flag=1(要是下一个是英文字母的话就能执行上面的if)
if(len>max_len)//之前累加的单词长度是否比上一个单词更长(第一次的话max_len初始化为0,len必大于max_len)
{
max_len=len;//将单词长度保存下来
max_point=point;//将最长单词的第一个英文字母在字符串中的位置保存下来
}
len=0;
}
}
return (max_point);
}

③ C语言用函数求字符串中最长单词.

#include<stdio.h>

#include<string.h>

int main()

{

char str[100];

gets(str);

void findLongest(char str[]);

findLongest(str);

return 0;

}

void findLongest(char str[])

{

int currLen=0,maxLen=0,currStart=0,MaxStart=0;

int i=0,j=0;

for(i=0;str[i];i++)

{

if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z'))

{

if(currLen==0)//当前长度等于0时,说明一个单词刚刚查找完,此时的位置为

currStart=i;//新单词的开始位置

currLen++;

}

if(currLen>maxLen)//当前单词的长度大于最大值,进行赋值

{

maxLen = currLen;

MaxStart = currStart;

}

if(str[i]==' ')//遇到空格,即一个单词已经结束。

{

currLen = 0;

}

}

for(j=MaxStart;j<MaxStart+maxLen;j++)

printf("%c",str[j]);

}

运行效果:

(3)c语言输出最长单词扩展阅读:

Return用法

1.含义:return表示从被调函数返回到主调函数继续执行,返回时可附带一个返回值,返回值可以是一个常量,变量,或是表达式。

2.作用:结束正在运行的函数,并返回函数值。

3.返回值:

计算结果表示函数执行的顺利与否(-1、0)返回值可以为各种数据类型,如:int,float,ouble,char,a[](数组),*a(指针),

结构或类(c++)返回类型规定了return后面所加的量的类型,如果返回类型声明为void,则不需要返回值。public static void Main()//程序入口只可以声明为void和int的返回

{

//不需要返回值就OK

}

public static void mm()

{

return;//有些时候,在void的方法中,你需要跳出它,可以直接用return而不能加任何量在后面

}

public static int cc()

{

return 321;//因为返回类型声明为int,所以返回一个整数

}

public static string msmsm()

{

return“asdfhasjghdg”;//因为返回类型声明为string,所以返回一个字符串

}

④ C语言求最长单词

#include<cstdio>
#include<cstring>

usingnamespacestd;

constintmaxn=100; //这个表示单词可能的最大个数
constintmaxl=100; //这个表示单词可能的最长长度,需要根据题目要求确定

intn,maxlen;
intlen[maxn];
charch[maxn][maxl];

intmax(inta,intb){
returna>b?a:b;
}

intmain(){
intk=0;

while(~scanf("%c",&ch[n][k])){ //每次输入一个字符,n表示当前是第几个单词,k表示是这个单词的第几个字母
if(ch[n][k]!=''&&ch[n][k]!=' '){ //不是空格或空行说明还没有读完,k++,接着读下一个
k++;continue;
}
len[n]=k-1; //计算这个单词的长度
maxlen=max(maxlen,len[n]); //更新最长的单词长度
if(ch[n][k]=='')k=0,n++; //如果读到空格,说明这个单词读完了
else{ //如果读到空行,说明这组数据读完了,开始输出这组数据的答案
for(inti=0;i<=n;i++)
if(len[i]==maxlen) //如果长度等于最长的单词长度,这个单词就是最长单词
printf("%s",ch[i]); //输出即可
putchar(' ');
memset(ch,0,sizeof(ch)); //将原来的数组清空
n=0;maxlen=0;k=0;
}
}

return0;
}

我自己测了一组输入数据,答案应该没什么问题了:

?
YesIfeelthankfulofyouranswer.
Howdoesitfeel?
Itfeelsverygood!

输出:

satisfied
thankful
doesfeel
feels


等等,我才发现是按字典序输出...我这是按输入顺序输出的....

#include<cstdio>
#include<cstring>
#include<algorithm>

usingnamespacestd;

constintmaxn=100; //这个表示单词可能的最大个数
constintmaxl=100; //这个表示单词可能的最长长度,需要根据题目要求确定

intn,maxlen;

structWord{
intlen;
charch[maxl];
voidclean(){
memset(ch,0,sizeof(ch));
}
}word[maxn];

intmax(inta,intb){
returna>b?a:b;
}

boolcmp(constWord&a,constWord&b){//比较两个单词的函数
returnstrcmp(a.ch,b.ch)<0;
}

intmain(){

intk=0;

while(~scanf("%c",&word[n].ch[k])){ //每次输入一个字符,n表示当前是第几个单词,k表示是这个单词的第几个字母
if(word[n].ch[k]!=''&&word[n].ch[k]!=' '){ //不是空格或空行说明还没有读完,k++,接着读下一个
k++;continue;
}
word[n].len=k-1; //计算这个单词的长度
maxlen=max(maxlen,word[n].len); //更新最长的单词长度
if(word[n].ch[k]=='')k=0,n++; //如果读到空格,说明这个单词读完了
else{ //如果读到空行,说明这组数据读完了,开始输出这组数据的答案
sort(word,word+n+1,cmp); //将所有单词按照字典序排序
for(inti=0;i<=n;i++)
if(word[i].len==maxlen) //如果长度等于最长的单词长度,这个单词就是最长单词
printf("%s",word[i].ch); //输出即可
putchar(' ');
for(inti=0;i<=n;i++)
word[i].clean(); //将原来的数组清空
n=0;maxlen=0;k=0;
}
}

return0;
}

上面这个是修改稿。

测试数据:

?
YesIfeelthankfulofyouranswer.
Howdoesitfeel?
Itfeelsverygood!
Whatfeelitdoes?

输出结果:

satisfied
thankful
doesfeel
feels
Whatdoesfeel

最后一个What先输出不是错误哦...

因为W是大写...所以字典序比其他的小

⑤ 用c语言怎么输出字符串中最长的单词

//帮你改造一下:
#include <stdio.h>
#include <string.h>
void main()
{
char c[50];
void f(char c[50]);//不设返回值了,直接用函数f打印结果。
gets(c);
f(c);
}
void f(char c[50])
{
int len=0,lenth=0,i,flag=0;
for(i=0;c[i]!='\0';i++)
{
if(c[i]!=' ')
len++;
if(c[i]==' ')
{
if(len>lenth)
{
lenth=len;
flag = i - lenth;//当新的最长串出现时,用flag记录该串起始下标
}
len=0;
}
}
if(len>lenth)
{
lenth=len;
flag = i - lenth;//同理
}
printf("最长的子串长度为%d个字符,该子串为:",lenth);//打印子串长度
for(i = flag;i < flag + lenth;i++)//打印子串,下标从flag到flag + lenth - 1
printf("%c",c[i]);
printf("\n");//换行
}

⑥ C语言输出一行字符串中最长的单词

代码如下:

#包括< stdio, h >

# include < string。H >

Voidmain()

字符c[50];

Voidf(charc[50]);//没有返回值,直接用函数f打印结果。

(c);

F(c);

Voidf(charc[50])

Intlen=0,lenth=0,I,flag=0;

For(I=0;C(我)!='\0';我++)

如果(c[我]!='')

Len++;

If(c[I]=='')

If (len > lenth)

长度=兰;

国旗=i-lenth;//当有一个新的最长的字符串时,使用flag记录字符串开始下标

Len=0;

If (len > lenth)

长度=兰;

国旗=i-lenth;//以同样的方式

Printf("最长的子串是%d字符,子串是:",lenth);//打印子串的长度

For (I = flag;I < flag + lenth;i++)//将子字符串从flag输出到flag + lenth-1

Printf("%c",[I]c);

Printf("\n");//换行

(6)c语言输出最长单词扩展阅读:

1.返回意味着从被调用的函数继续执行到主函数。Return可以伴随一个返回值,返回值可以是常量、变量或表达式。

2.操作:结束正在运行的函数并返回该函数的值。

3.返回值:

返回值可以是各种数据类型,例如:int、float、ouble、char、a[](数组)、*a(指针)、

结构或类(c++)返回类型指定返回后要添加的金额的类型,如果返回类型被声明为void,则不需要返回值。PublicstaticvoidMain()//programentry只能被声明为void和int的返回

{

//没有返回值

}

公共静态空隙(mm)

{

返回;//在某些情况下,在一个voidmethod中,需要跳出来,你可以直接使用return,不能在后面添加任何数量

}

公共静态intcc()

{

321的回归;因为返回类型声明为int,所以返回一个整数

}

公共静态字符串MSMSM()

{

返回“asdfhasjghdg”;因为返回类型被声明为string,所以返回一个string

}

⑦ C语言 输入字符串输出最长的单词

for(i=0;(c=scanf("%c",&c))!='\0';i++)
{
scanf("%c",&string[i]);
length++;
}
这里不对,自己考虑下
整个程序都不知道你要干啥写的没有逻辑性
上面那段程序遇到空格就退出循环了,你只能得到一个单词

⑧ C语言输出字符串(英文句子)的最长的单词

你的语法没错,但逻辑想复杂了。你只要想一个单词是从一个非空格开始,到下一个空格结束。那么只要一个标识变量来回切换,就可以拆分单词,同时用变量累加能得到单词长度,通过比较保留最长的那个长度值和起始下标就可以实现你要的功能。

这个代码,用动态数组来做更好,不仅一次遍历就能得到最长单词,还能把所有单词都拆出来。

考虑你的要求,没用动态数组,参照你的写法写了代码给你参考,已详细备注说明。

#include<stdio.h>

#include<string.h>

void pick(char str[])

{

int i,len,n=0,ns=0,flag=0,bx=0,bxs;//bx:一个单词的起始下标

len=strlen(str);

for(i=0;i<len;i++)

{

if(!flag && str[i]!=' ')flag=1,bx=i;//flag为0时遇到第一个字母置1,并记录单词起始下标

if(flag && str[i]!=' ')n++;//flag为1时每遇到一个非空格,单词长度计数+1

//flag为1时遇到第一个空格置0并确认一个单词结束,如比上一个单词长(和ns比),保存当前单词长度到ns,并保存单词始下标

if(flag && str[i]==' ')

{

flag=0;

if(n>ns)ns=n,bxs=bx;

n=0;

}

}

for(i=bxs;i<bxs+ns;i++)

printf("%c",str[i]);

}

int main()

{

char a[50];

gets(a);

pick(a);

return 0;

}

⑨ C语言问题,输出一个字符串中最长的单词

#include
int
maxword(char
*s);int
main(){
int
m,i;
char
a[1000];
printf("input
your
words:");
gets(a);
m=maxword(a);
printf("the
longest
word's
length
is:%d\n",m);
return
0;}int
maxword(char
*s){
int
i=0,r=0,t=0;
while(s[i]!='\0')
{
if(s[i]!='
')
t++;
if((s[i]=='
')||(s[i+1]=='\0'))
{
if(t>r)
r=t;
t=0;
}
i++;
}
return
r;}
我改了下,可一达到楼主的要求了,还有问题可以追问!端午快乐

⑩ c语言函数的最长单词输出问题 新手求助大佬

void f(char a[])
{
int pos,tpos,len=0,tlen=0;
int i=0;
do
{
if ((a[i]>='a' && a[i]<='z')||(a[i]>='A' && a[i]<='Z'))
{
if (!tlen) tpos=i;
tlen++;
}
else
{
if (tlen>len)
{
pos=tpos;
len=tlen;
}
tlen=0;
}
}
while (a[i++]);
for (i=0;i<len;i++) printf("%c",a[pos+i]);
}

热点内容
易语言制作软件源码 发布:2025-01-09 15:03:27 浏览:260
scratch少儿编程是 发布:2025-01-09 15:01:34 浏览:712
javamd564加密 发布:2025-01-09 14:58:57 浏览:144
javaifint 发布:2025-01-09 14:57:32 浏览:487
怎么配好电脑配置 发布:2025-01-09 14:46:31 浏览:835
薯仔音频上传 发布:2025-01-09 14:45:49 浏览:991
猫追蝴蝶编程 发布:2025-01-09 14:30:05 浏览:355
花生视频脚本 发布:2025-01-09 13:43:38 浏览:839
锁相环c语言 发布:2025-01-09 13:43:37 浏览:969
e语言盗号源码 发布:2025-01-09 13:35:25 浏览:830