注册 | 登录
收藏 | 帮助
热门文章
编辑推荐
相关文章  
MySQL中文参考手册---5 MySQL与标
用VC程序来创建SQL Server ODBC数
无需Aero!Vista新标准主题亮相
轻轻松松的安装Slackware Linux 
防止分化 解读Linux最新标准LSB 
生死MFC程序
VB调用C程序的方法—动态链接库法
用VB编写标准CGI程序
Visual Basic 编程标准(1)
在VB中通过相对路径引用标准DLL
您现在的位置: 顶尖设计 >> IT学院 >> 编程开发 >> C >> 文章正文
标准C程式库--问题例--类型 String
作者:佚名  来源:不详  点击:  更新:2006-12-19
简介:
Q1:撰写下列函式,其引数为 string 类别

islower - 引数的内容为小写字母,删传回true
isdigit  - 引数的内容为数字,则传回 true
isalphabetic - 引数的内容为大小写字母,则传回 true
isaplhanumeric  - 引数的内容为大小写字母或数字时 ,则传回 true 

A1:须引入 

bool islower(string &text)
{
        for (unsigned int i=0;i        {
                if((text[i] < 'a') || (text[i] >'z')) return false;
        }
        return true;
}

bool isdigit(string &text)
{
        for (unsigned int i=0;i        {
                if((text[i] < '0') || (text[i] > '9')) return false;
        }
        return true;
}

bool isaplhabetic(string &text)
{
        for (unsigned int i=0;i        {
                if(
                    ((text[i] < 'A') || (text[i] >'Z')) &&
                    ((text[i] < 'a') || (text[i] >'z'))
                  ) return false;
        }
        return true;
}

bool isalphanumeric(string &text)
{
        for (unsigned int i=0;i        {
                if(
                    ((text[i] < 'a') || (text[i] >'z')) &&
                    ((text[i] < 'A') || (text[i] >'Z')) &&
                    ((text[i] < '0') || (text[i] >'9'))
                  ) return false;
        }
        return true;
}


--------------------------------------------
Q2:撰写一函式可以判断两字串是否为异位字 ( 长度和字母相同,但顺序不同 )。

A2:须引入 

bool anagram(string s1,string s2)
{
        sort(s1.begin(),s1.end());      //将两字串排序,并比较是否相同
        sort(s2.begin(),s2.end());
        if (s1 == s2) return true;
        return false;
}

--------------------------------------------
Q3:从输入流读入一文字档案,并计算单字个数和平均每个字的长度。

A3:须引入 
void main()
{

        string filename,buffer,word;     //宣告变数
        fstream file;                    //buffer 为资料缓区
        int words=0,allchar=0;           //word 为允许的英文字母
        int start,end;

        //以下为档案读取程序,此程式没有错误处理
        cout << "请输入档案名称:";
        cin >> filename;

        file.open(filename.c_str());
        while (!file.eof())              //读取资料圈
        {
                char ch;
                file.get(ch);
                buffer += ch;
        }
        file.close();

        //合法字母填入
        for (int i=0;i<26;i++)
        {
                word += ('a'+i);
                word += ('A'+i);
        }

        //以下为字母分析
        int len = buffer.length();
        start = buffer.find_first_of(word,0);   //取得第一合法字母位置
        while (start >=0 && start < len)     //检查取得值是否正确
        {
                end = buffer.find_first_not_of(word,start); //取得第一不合法字母位置
                if (end < 0 && end > len) end = len;        //检查取得值是否正确
                allchar += (end-start);                     //加总字数
                words++;                                    //单字数加一
                start = buffer.find_first_of(word,end++);   //在取得下一个合法字母位置
        }                                                   //从 end 後的位置开始
        double average = double(allchar) / words;   //型别转换
        cout << "words = " << words << endl ;       //印出
        cout << "average = " << average << endl;
}
--------------------------------------------
Q4:以继承的方法,重载 " * " 运算子,使它的功能为--将字串重 n 次。例如 " this" * 3 为 "thisthisthis" 。

A4:须引入 

class NString : public string
{
        public:

                NString operator * (unsigned int);
};

NString NString::operator * (unsigned int n)
{
        NString temp;
        while (n!=0)
        {
                temp 

[1] [2] 下一页






  • 上一篇文章:
  • 下一篇文章:
  • 分享此文:该页面添加到 Mister Wong 添加到雅虎Yahoo!收藏 Add to:Del.icio.us Post to Furl Digg this 添加到Google书签 reddit spurl blogmarks 365Key 评论  收藏  分享  打印
     我来说两句
    姓名:       验证码:   
    主页: 
    评分: 1分 2分 3分 4分 5分
    本频道近期热评文章:
      关于我们 | 联系我们 | 站点地图 | 广告投放 | 友情链接 | 在线留言 | 版权申明
    版权所有 © 2004-2007 顶尖设计(bobd.cn)
    未经授权禁止转载,摘编,复制本站内容或建立镜像. 沪ICP备07504942号 
    网络110
    报警服务