// 從一個字串中提取單詞并輸出,并輸出最長的單詞
#include<stdio.h>
#include<string.h>
void main()
{
char s[100],a[10][10],b[10];
int i,j,k,len,flag;
gets(s);
len=strlen(s);
j=0;k=0;flag=0;
for(i=0;i<len+1;i++) //注意i<len+1
if(s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z')
{
a[k][j]=s[i];
j++;
flag=1;
}
else if(flag==0)
continue;
else
{
a[k][j]='\0';
k++;
j=0;
flag=0;
}
for(i=0;i<k;i++)
puts(a[i]);
strcpy(b,a[0]);//求最長單詞
for(i=1;i<k;i++)
if(strlen(a[i])>strlen(b))
strcpy(b,a[i]);
puts(b);
}
uj5u.com熱心網友回復:
#include<stdio.h>
#include<string.h>
void main()
{
char s[100],a[10][10],b[10];
int i,j,k,len,flag;
gets(s);//輸入字串
len=strlen(s); //取字串長度
j=0;k=0;flag=0;
for(i=0;i<len+1;i++) //逐個字符處理輸入字串
if(s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z') //凡是引文字母,即認為此字符為單詞一部分
{
a[k][j]=s[i]; //單詞的字符逐個存入二維陣列a, 一共10個單詞,每單詞長不超過10個字符, 所以a[10][10]
j++;
flag=1; //不是單詞結尾
}
else if(flag==0) //繼續取下一個單詞
continue;
else //一個單詞結束保存
{
a[k][j]='\0';
k++;
j=0;
flag=0;
}
for(i=0;i<k;i++)
puts(a[i]); //輸出得到的每個單詞
strcpy(b,a[0]);//求最長單詞
for(i=1;i<k;i++) //遍歷每個單詞
if(strlen(a[i])>strlen(b)) //每個單詞和b里保存單詞比較長度
strcpy(b,a[i]); //如果比b里單詞長, 取代b里單詞
puts(b); //輸出最長單詞
}
uj5u.com熱心網友回復:
不是引文字母, 是英文字母
uj5u.com熱心網友回復:
你知道這是什么語言,你知道啥是頭檔案,你知道哪個是主函式,你知道哪個是陣列,甚至你都知道陣列有多大。瞧,你不是“完全”看不懂,你已經懂好多了。
說謊的不是好孩紙。
所以,
要么你說清楚具體哪里不懂;
要么你回去看那些能看懂的,然后合起書,靠自己把那些看懂了的用自己的方式寫出來,除錯運行到滿意。然后再回來看這個。
uj5u.com熱心網友回復:
#include<stdio.h>
#include<string.h>
int main(int argc, char* argv[])
{
char s[100],a[10][10],b[10];
int i,j,k,len,flag;
gets(s); //輸入一字串:good morning teacther
len=strlen(s); //取得字串的長度值
j=0;k=0;flag=0; //初始化
for(i=0;i<len+1;i++) //注意i<len+1
if(s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z')//判斷是否是字母,是就是單詞,一個一個字符去判斷
{
a[k][j]=s[i]; //把每個單詞的每個字符記錄到a[0][1]...a[0][10],一個單詞一行.
j++; //good a[0][0-10]
flag=1; //morning a[1][0-10]
} //teacther a[2][0-10]
else if(flag==0) //如果不是字母,判斷是否是單詞的頭部
continue;
else //否則就是尾部
{
a[k][j]='\0'; //每個單詞的結束符
k++; //進入下一個單詞準備
j=0; //a[k][0]
flag=0; //標志復位
}
/*上面這段代碼執行完,陣列a中的結果:a[10][10]={"good\0",
"morning\0",
"teacther\0"
}
*/
for(i=0;i<k;i++) //輸出字串中的單詞,一個單詞一行
puts(a[i]); //a[0][0]..... good
//a[1][0] morning
//a[2][0] teacther
strcpy(b,a[0]); //把a[0]陣列中第一個單詞拷貝到陣列b中,作為比較單詞長度的初始值
for(i=1;i<k;i++)
if(strlen(a[i])>strlen(b))//與陣列a中其他單詞比較長度
strcpy(b,a[i]); // 找到最長單詞,放入b陣列中
puts(b); //輸出最長的單詞 teacther
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/241133.html
標籤:C語言
上一篇:關于類模板的問題想請教一下
下一篇:無法打開源檔案stdafx.h
