微信号:gh_5f9337df4e69

介绍:讨论和学习C/C++的编程知识

回答一个同学的问题

2014-05-12 23:49 零灵柒

今天回来得有些晚了,所以新内容恐怕更新不了(这不是废话吗?能更新的话干嘛来扯这个无聊的话题呢)所以,今天就来回答一个同学的问题,这个问题其实很简单,但他说他是初学,所以不懂,好吧,就趁此回答机会,休息一下吧!!!!
首先我们来看看這为同学的问题:
输入一行字符,分别统计出其中英文字母,空格,数字,和其他字符的个数。求解
还有一个题,求Sn=a+aa+aaa+…+aa…a(n个a)的值,其中a是一个数字,n表示的个数,例如2+22+222+2222 (此时n=4)。求解

对于这种考算法的问题,通常都会选择用C来写,不过也算是为了演示,我们尝试用c++来看看,先来简单的看看第一个问题:
--------------------------------
class myStr{
public:
myStr() {
mstr = "";
count1 = 0;
}
~myStr(){}
int Ch(string str);
int China(string str);
int space(string);
private:
std::string mstr;
int count1;
};

int myStr::Ch(string str){
mstr = str;
count1 = 0;
for (int i = 0; i < mstr.length(); i++)
{
char ch = mstr.at(i);
if (int(ch) >= 65 && int(ch) <= 127)
++count1;
}
return count1;
}

int myStr::China(string str){
mstr = str;
count1 = 0;
for (int i = 0; i < str.length(); i++){
char ch = mstr.at(i);
if (int(ch) >127)
++count1;
}
return count1;
}

int myStr::space(string str){
mstr = str;
count1 = 0;
for (int i = 0; i < str.length(); i++){
char ch = mstr.at(i);
if (int(ch) == 32)
++count1;
}
return count1;
}

int main(){
myStr b;
std::string str = "acsd 十大sdw158 asd";
cout << b.Ch(str) << endl;
cout << b.space(str) << endl;
return 0;
}

----------------------------------
这个问题的关键我们是用ascii码来判断,当然大家可能有更好的办法来解决这个问题,我只是给出了一个解决问题的方案而已,当然,如果要求代码精简的话,可以将上面的实现更加优化一下,这个问题就留给大家去探索吧,对于提问题的同学来说,先这样了解也许是最好的。
下面我们再来看看第二个问题的解决方案:
----------------------------------
#include <iostream>
using namespace std;
class num{
public:
num():n_(0), k_(0) { }
long sum(unsigned n, int k);
~num(){}
private:
long n_;
int k_;
};

long num::sum(unsigned n, int k){
n_ = n;k_ = k;
long summ = 0;
for (int i = 0; i <= k; i++){
long temp = 0;
for (int j = 0; j < i; j++){
temp += pow(10, j)*n;
}
summ += temp;
}
return summ;
}

int main(){
num a;
cout<<a.sum(2,4)<<endl;
return 0;
}

-------------------------------
ok,就这样吧,今天先不更新,这个不纳入我们的课程,给提问的同学一个解决方案,也给大家一个思考方向。

==============================
回复D直接查看目录


 
C/C++的编程教室 更多文章 写在开篇 第一讲 Hello World 第二讲 printf()(1) 第三讲 printf()(2) 第四讲 scanf()
猜您喜欢 腾讯电量仪——智能硬件测试工具尝试之路 再见,2015 Python常用运算符含义与用法演示 梯度下降法求解线性回归之python实现 谁说办公室久坐族不能练出马甲线?