几个错误

题目如下:

编写子程序 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;

}

 

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