1樓:猶玉枝甲畫
if(str[i]>='a'&&str[i]<='z')這句有點問題,
z和a之間還有一些字元,
應該排除掉
這個程式的主要問題是當讀到最後乙個字元null時,for迴圈退出,
這時,count的值對應最後乙個單詞,
而這時這個單詞的長度沒有進入for中的else進行比較,從而max的值會不對.
所以你再在for後面加幾句**比較一次就可以了.
2樓:侍桂花嵇溪
你的程式有以下幾個邏輯錯誤:
1、用if(str[i]>='a'&&str[i]<='z')判斷是否是字母。
字母在ascii中不是連續的,
大寫字母a-z
為65-90
小寫字母a-z
為97-132
所以之間會有6個字元(他們是[\]
^_`)也被你當做單詞的組成部分被計入長度。
2、當乙個單詞沒有以非字母結束時,最後乙個else沒有被執行到,所以max的值仍然是
上一次讀到的最長單詞長度,
所以最後輸出時要再判斷一下max和count的大小,輸出大的那個。
幫你修改後的程式如下:
#include
main()
else
if(str[i]>='a'&&
str[i]<='z'
)else
C語言!編寫函式統計子字串在另字串中出現的次數 區分
include include int fun char a,char b int i,j,n1,n2,n3,n4 0 n1 strlen a n2 strlen b for i 0 idun3 0 for j 0 j 如圖所zhi示,望採納。dao。用c語言編寫輸入一字串,統計字串中各個字母出現的...
C 中長度大小的問題!!C語言 字串長度問題!
這個涉及到結構體的記憶體對齊問題。一 結構體變數中成員的偏移量必須是成員大小的整數倍 0被認為是任何數的整數倍 二 結構體大小必須是所有成員大小的整數倍。1,首先對於結構體test。float佔4個位元組,char name 10 相當於2個節位元組,再加乙個2位元組。由於剩下的2位元組不足乙個fl...
輸入字串,統計其中包含的單詞個數,假設單詞與單詞之間用空格分隔
include void main printf 你輸入的字元是 puts str printf num d n num 1 編寫程式,輸入字串 包含空格 統計其中單詞的個數,單詞之間以乙個或多個空格分隔。20 1 首先,定義乙個整型變數,儲存找到的字串位置。2 定義兩個字串變數,儲存要查詢的字串,...