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,则将count加1,并且跳出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 |