标题:All about C++
只看楼主
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
结帖率:100%
 问题点数:0 回复次数:26 
All about C++

一,函数篇 (比较简单,仅提两个问题而已)

问题一: 编写一个程序判定一个字符在一个字符串中出现的次数,如果该字符不出现则返回值 0。

问题二: 编写一个程序判定一个子串在一个字符串中出现的次数,如果该子串不出现则返回值0。

搜索更多相关主题的帖子: All 字符 返回值 
2004-09-30 06:17
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
得分:0 

两个问题都用string类型,忘了string有哪些内部函数了,我想想。

2004-10-01 09:15
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
得分:0 

如果没人写答案,那我明天公布答案。


自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2004-10-02 00:45
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
得分:0 

有人看贴没人回贴,第一题我以前写过,删了,第二要找书查string的预定义函数。

2004-10-02 00:58
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
得分:0 

//答案如下:

// 题一:

#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


自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2004-10-02 06:06
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
得分:0 

// 题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; }


自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2004-10-02 06:30
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
得分: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; }


自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2004-10-02 07:53
jellen
Rank: 1
等 级:新手上路
威 望:1
帖 子:107
专家分:0
注 册:2004-5-3
得分:0 

呵呵, kai还是那么热心. 看来我也需要在Java区多活动活动了(不然那边都没有人烟了:)

提点小意见, kai上面的程序用了很规范的标准C++头文件写法, 但是VC6.0不很支持, 所以可以不能通过编译. 但是现在的VC7.0以后(也就是Visual Studio.NET系列)的C++编译器对标准C++的支持还是很好的, 上面的程序完全可以通过编译(我实验了第一个). 所以建议初学者使用Dev-C++或者Visual Studio 2003等C++继承环境来学习标准C++


再见,理想!
2004-10-10 10:50
alixnuaa
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2004-10-10
得分:0 

getline(cin,str)这个函数是在哪的?

2004-10-10 19:52
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
得分:0 

自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2004-10-12 01:28



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-5894-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.038173 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved