江苏省高校计算机等级考试命题研究院 江苏省高校计算机等级考试辅导
09二级VC++试卷评析

2009春上机试卷7

:改错题:

【题目】以下程序的功能是:查找某个指定单词在字符串中出现的次数,单词之间由一个或多个空格分隔,判断字符时不区分字母的大小写:

例如:在字符串”I am a studeng. My Name is Tony. I am twenty”中包含T的单词有3

含有错误的源程序如下:

#include <iostream.h>

char convert(char c)                      //本函数实现将大写字母转换为小写字母

{if(c>='A' && c<='Z')

  return c+'A'-'a';                      //因为是转化为小写,所以应该为c+'a'-'A'

 return c;

}

int search(char *str, char *s)

{int count=0,flag=0;

for(;*str;str++){

         if(flag || *str==' '){                  //第一次查询或遇到空格时执行查询,所以flag==0

      flag=1;

      while(*(str++)==' ');              //跳过空格,使其指向有字母的单词

          str--;                      //str指向空格后的第一个字符

      for(char *str1=str;*str1==’ ’ && *str;str1++){   //本循环实现查找T,所以应为*str1!=’ ’

         if(convert(*str1)==convert(*s1))     //如果查找到T,则将count1,并且跳出for循环

{count++;                   //因为标明该单词中有T,就无需再继续查找该单词中的其他单词

return count;    

         }

     }

  }

 }

   return count;

}

 

void main()

{char str[40]=" I am a studeng. My Name is Tony. I am twenty " ch=’T’;

 cout<<"字符串"<<"中单词"<<s<<"出现了"<<search(str,s)<<""<<endl;

}

 

 

 

 

 

 

 

 

 

 

                                                                                                                                                                       u