![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
09二級(jí)VC++試卷評(píng)析 |
2009春上機(jī)試卷7 一:改錯(cuò)題: 【題目】以下程序的功能是:查找某個(gè)指定單詞在字符串中出現(xiàn)的次數(shù),單詞之間由一個(gè)或多個(gè)空格分隔,判斷字符時(shí)不區(qū)分字母的大小寫: 例如:在字符串”I am a studeng. My Name is Tony. I am twenty”中包含T的單詞有3個(gè) 含有錯(cuò)誤的源程序如下: #include <iostream.h> char convert(char c) //本函數(shù)實(shí)現(xiàn)將大寫字母轉(zhuǎn)換為小寫字母 {if(c>='A' && c<='Z') return c+'A'-'a'; //因?yàn)槭寝D(zhuǎn)化為小寫,所以應(yīng)該為c+'a'-'A' return c; } int search(char *str, char *s) {int count=0,flag=0; for(;*str;str++){ if(flag || *str==' '){ //第一次查詢或遇到空格時(shí)執(zhí)行查詢,所以flag==0 flag=1; while(*(str++)==' '); //跳過空格,使其指向有字母的單詞 str--; //讓str指向空格后的第一個(gè)字符 for(char *str1=str;*str1==’ ’ && *str;str1++){ //本循環(huán)實(shí)現(xiàn)查找T,所以應(yīng)為*str1!=’ ’ if(convert(*str1)==convert(*s1)) //如果查找到T,則將count加1,并且跳出for循環(huán) {count++; //因?yàn)闃?biāo)明該單詞中有T,就無需再繼續(xù)查找該單詞中的其他單詞 return count; } } } } return count; } void main() {char str[40]=" I am a studeng. My Name is Tony. I am twenty ", ch=’T’; cout<<"字符串"<<"中單詞"<<s<<"出現(xiàn)了"<<search(str,s)<<"次"<<endl; } u |