作者: haloPaul 時間: 2019-1-23 11:56 標題: C語言找出最長的連續空格space的數目
本帖最後由 haloPaul 於 2019-1-23 12:47 編輯
- #include <stdio.h>
- #include <ctype.h>
- #include <string.h>
- int findLongestSpace(char line[]) {
- int i = 0, count = 0, longest = 0;
- while (line[i] != '\0') {
- if (line[i] == ' ')
- count++;
- i++;
-
- }
- return count;
- }
- int main() {
- int count;
- char s[4][256] = {"I love you forever", "AAABBB CCC", " AAA B CC", "DDD "};
- int i;
- for (i=0; i<4; i++) {
- count = findLongestSpace(s[i]);
- printf("%s %d\n", s[i], count);
- }
- return 0;
- }
"AAABBB CCC"出現3, " AAA B CC"出現5,"DDD "出現2。
但是我想找出一個字串最長的連續空格space的數目,這個程式碼該怎樣寫呢?
例如計算出"I love you forever"最長的連續空格space的數目是4。
作者: hi20 時間: 2019-1-23 12:26
- #ifndef MAX
- #define MAX( a, b ) ( ((a) > (b)) ? (a) : (b) )
- #endif
- int main() {
- int count;
- char s[4][256] = {"I love you forever", "AAABBB CCC", " AAA B CC", "DDD "};
- int maxCount = 0;
- for (int i=0; i<4; i++) {
- maxCount = MAX(maxCount, findLongestSpace(s[i]));
- }
- printf("%s %d\n", s[i], maxCount);
- return 0;
- }
作者: haloPaul 時間: 2019-1-23 12:54
回覆 2# hi20
不好意思,在compiler編譯不到,是哪裡出錯了嗎?
作者: java2 時間: 2019-1-23 12:57
功課?

你咪數住每次有幾多連續空格, 記低最大果個
作者: smoke_cheese 時間: 2019-1-23 12:57
在 findLongestSpace 內
你諗吓一段空白完果陣 line[i] 係點
當時 count 代表咩數字
咁如果 longest 係當時最長的空白的長度你要點比較佢同 count
同點修改 longest 去反映
之後點樣改 count 去準備遇到下一段空白
作者: hi20 時間: 2019-1-23 14:32
回覆 3# haloPaul
- #include <stdio.h>
- #include <ctype.h>
- #include <string.h>
- #ifndef MAX
- #define MAX( a, b ) ( ((a) > (b)) ? (a) : (b) )
- #endif
- int findLongestSpace(char line[]) {
- int i = 0, count = 0, longest = 0;
- while (line[i] != '\0') {
- if (line[i] == ' ')
- {
- count++;
- }else{
- longest = MAX(longest,count);
- count = 0;
- }
- i++;
-
- }
- longest = MAX(longest,count);
- return longest;
- }
- int main() {
- int count;
- char s[4][256] = {"I love you forever", "AAABBB CCC", " AAA B CC", "DDD "};
- int i;
- for (i=0; i<4; i++) {
- count = findLongestSpace(s[i]);
- printf("%s %d\n", s[i], count);
- }
- return 0;
- }
作者: haloPaul 時間: 2019-1-23 16:58
本帖最後由 haloPaul 於 2019-1-23 17:01 編輯
回覆 6# hi20
唔該您呀,程式能夠正常運行
以下是由預設值字串改為由鍵盤輸入字串的程式碼,但是運行結果不對,請問哪裏出錯了?
Thank you very much~
- #include <stdio.h>
- #include <ctype.h>
- #include <string.h>
- #ifndef MAX
- #define MAX( a, b ) ( ((a) > (b)) ? (a) : (b) )
- #endif
- int findLongestSpace(char line[]) {
- int i = 0, count = 0, longest = 0;
- while (line[i] != '\0') {
- if (line[i] == ' ')
- {
- count++;
- }else{
- longest = MAX(longest,count);
- count = 0;
- }
- i++;
-
- }
- longest = MAX(longest,count);
- return longest;
- }
- int main() {
- char text[30];
- int count;
- scanf("%s", text);
- count = findLongestSpace(text);
- printf("%s %d\n", text, count);
-
- return 0;
- }
作者: masseffect 時間: 2019-1-23 17:06
你咁樣係學唔識寫PROGRAM
你嘅問題要SPECIFIC 啲
你淨係POST 個PROGRAM出嚟話唔岩,問人點解
不如你自己學下點DEBUG,做啲LOG 又好,一句句CODE TRACE 又好,自己睇返邊度開始出現啲唔岩嘅結果
作者: a886 時間: 2019-1-23 18:04
回覆 4# java2
應該係,當年我ICT 都係有份咁既野,不過果時用pascal
作者: java2 時間: 2019-1-23 18:44
入乜乜/錯乜唔講, 仲係話錯問哪裏出錯.
學樓上講自己學下debug 啦.
作者: java2 時間: 2019-1-23 18:45
遲D 可能係同一問題但用java

作者: a886 時間: 2019-1-23 18:57
回覆 11# java2
考評受java 先算啦

啲題目仲問緊史前題目,學完都用唔番工作上
作者: bongbong3481 時間: 2019-1-23 22:46
回覆 9# a886
我以前中學都係學PASCAL, 老實講,如果當年學BASIC/ visual basic, 我深信我而家玩VBA, 可以去到好高水準

作者: a886 時間: 2019-1-23 23:22
回覆 13# bongbong3481
你可以自修,當年有個同學功課照交PASCAL,CE份野交VB用哂MS俾既function ,我地PASCAL就慘自己寫function出黎
作者: laputafish 時間: 2019-1-24 09:25
如果個tutor衹著重結果, 咁用VB果個真係醒目D.

作者: 1234950 時間: 2019-1-24 21:36
scanf 好似食唔到空格 ...好似係
作者: 1234950 時間: 2019-1-24 21:41
回覆 12# a886
我幾年前考DSE好似受JAVA
冇記錯受C, PASCAL, VB, JAVA?
作者: 燒浩 時間: 2019-1-25 10:07
回覆 16# 1234950
用 gets() 應該可以解決。
作者: othree 時間: 2019-1-25 10:37
作者: a886 時間: 2019-1-25 18:28
回覆 17# 1234950
近幾年好似OK,不過我果時好似無寫話得
作者: 1234950 時間: 2019-1-25 18:45
回覆 20# a886
記得個陣第一頁 有4格比你TICK.用咩語言
其中有JAVA所以應該可以
作者: a886 時間: 2019-1-25 18:49
回覆 21# 1234950
如果筆試我果時係得PASCAL 同 C, 係份Project 先可以用VB ,PASCAL 同 C
不過依家Project, JAVA都OK
作者: easytone 時間: 2019-1-28 16:02
- #include <stdio.h>
- #include <string.h>
- int main(int argc, char *argv[]){
- char str[100];
- int i=0, count=0, max=0;
- printf("Please enter a string: ");
- fgets(str,100,stdin);
- for (i=0;i<=strlen(str);i++){
- if (str[i] == ' ')
- count++;
- else {
- if (count > max)
- max = count;
- count = 0;
- }
- }
- printf("The longest space is %d long\n", max);
- }
Please enter a string: I like swimming and hiking.
The longest space is 5 long

