幾個錯誤

題目如下:

編寫子程序 int wordnum(char *p)
程序說明:
  返回*p指向的字符串中包含的單詞的總數。其中,字符串爲不規則字符串。單詞與單詞之間的劃分規則,任意不爲字母的字符,都可以是一個劃分。
舉例:
    char str1[] = "";
    char str2[] = " ,, ???, ^^&  abc! ";
    char str3[] = "   ";
    char str4[] = "I ??am? a bo^y";
    char str5[] = " my ";
    char str6[] = " Th8is is ,, ,    a?  test ! ";
     char str7[] = "Overseas  students scramble for flights home!          ";
    char str8[] = "    Whatever is worth doing is worth doing well.";
    char str9[] = "In love folly is always sweet"
其中的單詞數依次爲:
0      1    0   5    1      5     6     8     6
已知主函數和子函數的調用過程如下:
int main()
{

    char str1[] = "";
    char str2[] = " ,, ???, ^^&  abc! ";
    char str3[] = "   ";
    char str4[] = "I ??am? a bo^y";
    char str5[] = " my ";
    char str6[] = " Th8is is ,, ,    a?  test ! ";
    char str7[] = "Overseas  students scramble for flights home!          ";
    char str8[] = "    Whatever is worth doing is worth doing well.";
    char str9[] = "In love folly is always sweet";
     int k;
     k = wordnum(str1);
     printf("Word number: %d\n",k);
    k = wordnum(str2);
    printf("Word number: %d\n",k);
    k = wordnum(str3);
    printf("Word number: %d\n",k);
    k = wordnum(str4);
    printf("Word number: %d\n",k);
    k = wordnum(str5);
    printf("Word number: %d\n",k);
    k = wordnum(str6);
    printf("Word number: %d\n",k);
     k = wordnum(str7);
    printf("Word number: %d\n",k);
    k = wordnum(str8);
    printf("Word number: %d\n",k);
     k = wordnum(str9);
    printf("Word number: %d\n",k);

     return 0;

}

題目要求:編寫完整子程序,並將程序完整程序代碼 以及程序運行結果,粘貼至答案欄注意程序的格式,要符合要求。

做了好幾遍,總是有幾個錯誤地方,因爲最近在讀c primer plus.學會了用幾個不常用的庫函數 isalpha,

下面是正確答案和幾個錯誤答案,求指教。錯誤的哪裏出了問題:

正確

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>//函數庫
int wordnum (char *p);
int main()

{

    char str1[] = "";
    char str2[] = " ,, ???, ^^&  abc! ";
    char str3[] = "   ";
    char str4[] = "I ??am? a bo^y";
    char str5[] = " my ";
    char str6[] = " Th8is is ,, ,    a?  test ! ";
    char str7[] = "Overseas  students scramble for flights home!          ";
    char str8[] = "    Whatever is worth doing is worth doing well.";
    char str9[] = "In love folly is always sweet";
    int k;
    k = wordnum(str1);
    printf("Word number: %d\n",k);
    k = wordnum(str2);
    printf("Word number: %d\n",k);
    k = wordnum(str3);
    printf("Word number: %d\n",k);
    k = wordnum(str4);
    printf("Word number: %d\n",k);
    k = wordnum(str5);
    printf("Word number: %d\n",k);
    k = wordnum(str6);
    printf("Word number: %d\n",k);
    k = wordnum(str7);
    printf("Word number: %d\n",k);
    k = wordnum(str8);
    printf("Word number: %d\n",k);
    k = wordnum(str9);
    printf("Word number: %d\n",k);
    return 0;
}
int wordnum (char *p)

{

    int word=0 ,i=0,num=0;

char c;
  for(i=0;*(p+i)!='\0';i++)
  {
      c=*(p+i);
      if(( word==0)&&(isalpha(c)))//isalpha如果是字母就返回1,else0
        num++;
      word=isalpha(c);
  }



return num;

}

錯誤第一次:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int wordnum (char *p);
int main()

{

    char str1[] = "";
    char str2[] = " ,, ???, ^^&  abc! ";
    char str3[] = "   ";
    char str4[] = "I ??am? a bo^y";
    char str5[] = " my ";
    char str6[] = " Th8is is ,, ,    a?  test ! ";
    char str7[] = "Overseas  students scramble for flights home!          ";
    char str8[] = "    Whatever is worth doing is worth doing well.";
    char str9[] = "In love folly is always sweet";
    int k;
    k = wordnum(str1);
    printf("Word number: %d\n",k);
    k = wordnum(str2);
    printf("Word number: %d\n",k);
    k = wordnum(str3);
    printf("Word number: %d\n",k);
    k = wordnum(str4);
    printf("Word number: %d\n",k);
    k = wordnum(str5);
    printf("Word number: %d\n",k);
    k = wordnum(str6);
    printf("Word number: %d\n",k);
    k = wordnum(str7);
    printf("Word number: %d\n",k);
    k = wordnum(str8);
    printf("Word number: %d\n",k);
    k = wordnum(str9);
    printf("Word number: %d\n",k);
    return 0;
}
int wordnum (char *p)

{

    int word=0 ,i=0,num=0;

    char c;
/*用word做標記,初始爲0,讀到一個,如果是字母,並且word==0(也就是說上衣不是字母),累加。不是的話就賦值word=0;
  for(i=0;*(p+i)!='\0';i++)
  {
      c=*(p+i);
      if( (word==0)&&((c>='A'&&c<='Z')||(c>='a'&&c<='z' ) ))
      {
          num++;
          word=1;
      }
      else {word=0;}
  }



return num;

}

錯誤二,改用while,感覺是一個錯誤。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int wordnum (char *p);
int main()

{

    char str1[] = "";
    char str2[] = " ,, ???, ^^&  abc! ";
    char str3[] = "   ";
    char str4[] = "I ??am? a bo^y";
    char str5[] = " my ";
    char str6[] = " Th8is is ,, ,    a?  test ! ";
    char str7[] = "Overseas  students scramble for flights home!          ";
    char str8[] = "    Whatever is worth doing is worth doing well.";
    char str9[] = "In love folly is always sweet";
    int k;
    k = wordnum(str1);
    printf("Word number: %d\n",k);
    k = wordnum(str2);
    printf("Word number: %d\n",k);
    k = wordnum(str3);
    printf("Word number: %d\n",k);
    k = wordnum(str4);
    printf("Word number: %d\n",k);
    k = wordnum(str5);
    printf("Word number: %d\n",k);
    k = wordnum(str6);
    printf("Word number: %d\n",k);
    k = wordnum(str7);
    printf("Word number: %d\n",k);
    k = wordnum(str8);
    printf("Word number: %d\n",k);
    k = wordnum(str9);
    printf("Word number: %d\n",k);
    return 0;
}
int wordnum (char *p)

{

    int word=0 ,i=0,num=0;

char c;
  while(c=*(p+(i++))!='\0')
  {
      if( (word==0)&&((c>='A'&&c<='Z')||(c>='a'&&c<='z' ) ))
      {
          num++;
          word=1;
      }
      else {word=0;}
  }




return num;

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章