一,函数篇 (比较简单,仅提两个问题而已)
问题一: 编写一个程序判定一个字符在一个字符串中出现的次数,如果该字符不出现则返回值 0。
问题二: 编写一个程序判定一个子串在一个字符串中出现的次数,如果该子串不出现则返回值0。
一,函数篇 (比较简单,仅提两个问题而已)
问题一: 编写一个程序判定一个字符在一个字符串中出现的次数,如果该字符不出现则返回值 0。
问题二: 编写一个程序判定一个子串在一个字符串中出现的次数,如果该子串不出现则返回值0。
两个问题都用string类型,忘了string有哪些内部函数了,我想想。
如果没人写答案,那我明天公布答案。
有人看贴没人回贴,第一题我以前写过,删了,第二要找书查string的预定义函数。
//答案如下:
// 题一:
#include <iostream> #include <string> #include <cstdlib> using namespace std;
int char_count(string s, char letter) { int count = 0; int length = s.length(); int i = 0; while(i<length) { char temp = s.at(i); if(temp == letter) count++; i++; } return count; }
int main() { string str; char c; cout<<"Enter a string."; getline(cin, str); cout<<"Enter a character."; cin.get(c); cout<<"This characater appears "<<char_count(str, c)<<" times"<<endl; system("pause"); return 0; }
// 注意,这个程序如果通过VC编译会有问题,这是VC的BUG。建议大家用DEV 编译。
// Dev 下载网址:
http://prdownloads.sourceforge.net/dev-cpp/devcpp4990setup.exe
// 题2:
#include <iostream> #include <cstdio> //#include <string> #include <cstdlib> using namespace std;
int str_count(char *substr, char *str) { char * substring, * string; int count = 0; while(*str) { for(string = str++, substring = substr; *string == *substring; string++, substring++) { if(!*(substring+1)) { ++count; } } } return count; }
int main() { char str[100], substr[20]; cout<<"Enter a string:"; cin.getline(str, 100); cout<<"Enter a substring:"; cin.getline(substr, 20); cout<<"This substring appears "<<str_count(substr, str)<<" times"<<endl; system("pause"); return 0; }
// 用 string 取代 C string, 同样希望用 Dev , 用VC编译在输入上会出问题, 这是VC的一个 Bug
#include <iostream> #include <string> #include <cstdlib> using namespace std;
int str_count(string substr, string str) { int substr_length = substr.length(); int count = 0; string temp = str; int loc = 0; if(substr_length == 0 || str.length() == 0) return 0; else { do { loc = temp.find(substr); if(loc != string::npos) { count++; temp = temp.assign(temp, loc+substr_length, temp.length()); } else break; }while(1); } return count; }
int main() { string str, substr; cout<<"Enter a string:"; getline(cin, str); cout<<"Enter a substring:"; getline(cin, substr); cout<<"This substring appears "<<str_count(substr, str)<<" times"<<endl; system("pause"); return 0; }
呵呵, kai还是那么热心. 看来我也需要在Java区多活动活动了(不然那边都没有人烟了:)
提点小意见, kai上面的程序用了很规范的标准C++头文件写法, 但是VC6.0不很支持, 所以可以不能通过编译. 但是现在的VC7.0以后(也就是Visual Studio.NET系列)的C++编译器对标准C++的支持还是很好的, 上面的程序完全可以通过编译(我实验了第一个). 所以建议初学者使用Dev-C++或者Visual Studio 2003等C++继承环境来学习标准C++
getline(cin,str)这个函数是在哪的?
// 关于函数 getline 请点击以下连接