1樓:向日葵
q:輸入一串字串,輸出其中有多少個單詞。
eg:good wishes
a:#include #include #define size 20int main()
; int count=0;
printf("plz input the string\n");
gets(str);
puts(str); int length = strlen(str); for (int i=0;i『\0』和『0』的區別:
在c語言中,它們都是字元,都用對應的ascii碼來儲存。例如第一個ascii碼,0,對應字元為(null),就是 『\0』,即空字元。我們在c語言中判斷一個字串是否結束的標誌就是看是否遇到『\0』,如果遇到『\0』,則表示字串結束。
字元『0』和數字0的區別:前者是字元常量,後者是整形常量,但是字元常量可以像整數一樣在程式中參與相關運算。
字串所有字元,如果當前字元不為空,單詞數+1,再巢狀一個while迴圈,判斷當前單詞是否結束。
#include
#include
int count_words(char* s)
{int len=strlen(s);
int count,i;
for(i=0;iif(*(s+i)!=' '){ // 如果當前**不為空
count++; //單詞數+1
while(*(s+i)!=' '&& ii++;
return count;
int main()
char* a="i love you";
printf("%d",count_words(a));
2樓:風若遠去何人留
根據英語的書寫習慣,在每個單詞前後都會有空格分隔。 所以可以依據空格來劃分單詞。
不過,由於空格可能存在連續多個,所以僅統計空格數是不可以的,需要更復雜一些的演算法。
一、演算法設計:
核心思想是通過一個flag,來確定單詞的起始, 每出現一個單詞的起始,則表示存在一個單詞。 這樣統計出現的單詞起始個數,即可獲得單詞總數。
1、flag初始為1;
2、遍歷字串。
3、對於每個字元,如果出現非空格字元,且flag為1,則為單詞起始,累加計數器。同時賦值flag為0。
4、在flag為0情況下,如果出現空格,表示上一個單詞已經結束,設定flag為1。
5、 遍歷結束後輸出結果。
#include
int main()
}else if(s[i] == ' ')//上一個單詞結束。
flag = 1;
}printf("%d\n", n);//輸出結果。
return 0;}
3樓:匿名使用者
#include
int main(void)
else
word =1 ;
c=getchar();
}if ( word )
count++ ;
/*---------*/
printf("count = %d\n", count);}}
4樓:風雷九州
char c;
int count, word;
int repeat, ri;
scanf("%d", &repeat);
getchar();
for(ri = 1; ri <= repeat; ri++)word = 0;
}else
c = getchar();
}if(word == 1)
printf("count = %d\n", count);
}**見上
5樓:匿名使用者
方案一、用gets(讀入字串,然後逐個字元遍歷該串,並統計出單詞個數。
方案二、用函式getchar()逐個讀入字元,同時判斷單詞個數,直到讀到字元'\n'。
疑問、對於相同的單詞作何處理?
6樓:寒寒家
如果僅僅是統計單詞的個數,那麼可以統計 空格+字母 這種組合出現的次數count(也就是空格的下一個字元是字母)。
對於開頭的單詞,如果前面沒有空格,那麼最終有count+1個字元。
7樓:匿名使用者
#include "stdio.h" main() printf("本行中共有%d個單詞.\n",num); } 其原理很簡單:
對每個字元進行判斷,如果是空格就把變數word標記為0,如果不是空格就判斷word是不是0(即判斷之前有沒有空格),如果存在空格單詞量加1,然後復位word變數為0。就這樣重複,知道句子結束
8樓:李楠焱
#include
main()
char s[81];
int i,num=0;
printf("請輸入一行英文:\n");
gets(s);
if(s[0]!=' ')
num++;
for(i=1;s[i];i++)
if(s[i-1]==' '&&(s[i]<='z'&&s[i]>='a'||s[i]<='z'&&s[i]>='a'))
num++;
printf("本行中共有%d個單詞.\n",num);
這個是比較簡單的寫法。
9樓:
#include
#include
#include
int main()
str[strlen(str)-1] = '\0';
for(i = 0;i return 0;} 10樓:李卓霖首席男友 相當於空格,可以看一下這個程式(用於統計單詞個數)#include void main() printf(" 該英文句子由%d個單片語成。 .\n",num); }有時為了給變數附一個無意義的初值通常用這個。呵呵 11樓:鹿溪生 最佳答案還是有些不全面的 在最後有空格的時候會有誤這個更全面 #include void main() n=i; for(i=0;i<=n;i++) }else if(a[i]==' ') k=1; }printf("%d\n",m);} c語言統計單詞個數問題! 12樓:武荊軻 #include "stdio.h" main() printf("本行中共有%d個單詞.\n",num); }其原理很簡單: 對每個字元進行判斷,如果是空格就把變數word標記為0,如果不是空格就判斷word是不是0(即判斷之前有沒有空格),如果存在空格單詞量加1,然後復位word變數為0。就這樣重複,知道句子結束 13樓:匿名使用者 根據英語的書寫習慣,在每個單詞前後都會有空格分隔。 所以可以依據空格來劃分單詞。 不過,由於空格可能存在連續多個,所以僅統計空格數是不可以的,需要更復雜一些的演算法。 一、演算法設計: 核心思想是通過一個flag,來確定單詞的起始, 每出現一個單詞的起始,則表示存在一個單詞。 這樣統計出現的單詞起始個數,即可獲得單詞總數。 1、flag初始為1; 2、遍歷字串。 3、對於每個字元,如果出現非空格字元,且flag為1,則為單詞起始,累加計數器。同時賦值flag為0。 4、在flag為0情況下,如果出現空格,表示上一個單詞已經結束,設定flag為1。 5、 遍歷結束後輸出結果。 二、參考**: #include int func(char *s)//計算單詞數函式 }else if(s[i] == ' ')//上一個單詞結束。 flag = 1; }return n;//返回結果。 }int main() 14樓: #include #include main() printf("c=%d\n",c);} 15樓:痞孓寶 請問,這樣可不可以實現功能 #include "stdio.h" main() c語言統計單詞個數 16樓:說祺阿雅唱 #include "stdio.h" main() printf("%d\n",num);} 17樓:史朝東樂安 #include #include intmain() printf("單詞個數為:%d\n",number); return0;} 18樓: #include #include int main() while ( (a[i] >='a' && a[i] ='a' && a[i] <='z') ); //記錄一個單詞 num++;}} printf("%d\n",num); return 0;} 19樓:匿名使用者 int decede(char str) while((str[i]>='a' && str[i]<='z')||(str[i]>='a'&&str[i]<='z')); //記錄一個單詞 num++;}} return num;} 20樓:風若遠去何人留 根據英語的書寫習慣,在每個單詞前後都會有空格分隔。 所以可以依據空格來劃分單詞。 不過,由於空格可能存在連續多個,所以僅統計空格數是不可以的,需要更復雜一些的演算法。 一、演算法設計: 核心思想是通過一個flag,來確定單詞的起始, 每出現一個單詞的起始,則表示存在一個單詞。 這樣統計出現的單詞起始個數,即可獲得單詞總數。 1、flag初始為1; 2、遍歷字串。 3、對於每個字元,如果出現非空格字元,且flag為1,則為單詞起始,累加計數器。同時賦值flag為0。 4、在flag為0情況下,如果出現空格,表示上一個單詞已經結束,設定flag為1。 5、 遍歷結束後輸出結果。 #include int main() }else if(s[i] == ' ')//上一個單詞結束。 flag = 1; }printf("%d\n", n);//輸出結果。 return 0;} c語言統計單詞個數,單詞個數演算法 21樓: 當字元從' '變為字母時或其他字元時word從0變為1,而word從0變為1時就是一個單詞,所以count+1;當字元由非' '變為' '時word從1變為0,準備判斷下一個單詞的出現,即等待字元由' '變為其他字元的出現。這樣最後count就是記錄了單詞的個數,其實就是記錄了字元由' '變為其他字元的次數! c語言中統計單詞個數的問題 22樓:李卓霖首席男友 相當bai於空格,可以看一下這個程du 序(用zhi於統計單詞個dao數) #include void main() printf(" 該英文句子由%d個單片語成。 .\n",num); }有時為了給變數附一個無意義的初值通常用這個。呵呵 23樓:匿名使用者 給字元變數c2賦值為空格 24樓:匿名使用者 你說得對,就是相當於'\0'。 c語言輸出陣列時,需要根據陣列下標,或者指標移動進行輸出。所以,一般不會用一內個迴圈容輸出多個陣列,這樣操作不方便,而且降低效率。常規的做法是,在多個迴圈中,各自輸出不同的陣列。示例 如下 include int main include void main int y 5 int z 5 int ... 沒有縮排,看來比較累 但是輸入一串字元以後要輸入結束標誌eof表示你的輸入結束了 如果你是unix,就用ctrl d,dos就用ctrl z include define maxline 1000 maximum input line length int getline char line,int... 把檔案中所有逗號用空格替換。把if fp fopen goods.dat rb null 改成fp fopen goods.dat r null 把 feof fp 換成 0。把 一行刪除。以上3 4也可以在while前新增一行 解決 把printf s,2s,d,d n name,price,in...c語言迴圈中如何輸出多個陣列,C語言FOR迴圈幾個陣列不同
c語言問題,C語言問題C語言問題
c語言問題,C語言問題C語言問題