c語言輸出最長單詞
① 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]);
}