2013-7-18学习作业[有常考面试题]

来源:互联网 发布:python框架有哪些 编辑:程序博客网 时间:2024/06/05 00:18

作业1.C++文件流的应用

如果令A,B,C,D,……X,Y,Z26个英文字母,分别等于百分之1,2,……,24,25,26个数值,那么我们就能得出如下有趣的结论:

HARD WORD  8+1+18+4+23+15+18+11=98

KNOWLEDGE    96%

LOVE  54%          LUCK  47%

计算一下MONEY  STUDY   ATTITUDE

//

//  main.cpp

//  2013-7-18作业1

//

//  Created by 丁小未 on 13-7-18.

//  Copyright (c) 2013年 dingxiaowei. All rights reserved.

//

//如果令A,B,C,D,……,X,Y,Z这26个英文字母,分别等于百分之1,2,……,24,25,26个数值,那么我们就能得出如下有趣的结论:

//HARD WORD  8+1+18+4+23+15+18+11=98%

//KNOWLEDGE    96%

//LOVE  54%          LUCK  47%

//计算一下MONEY  STUDY   ATTITUDE


#include <iostream>

#include <fstream>

using namespace std;

//输入一个字母,然后返回他对应的值


void getValue(char num[26],int n[26])

{

    int j;

    char c[2];

    ifstream infile1,infile2;//定义文件输出类

    infile1.open("file1.txt");

    infile2.open("file2.txt");

    for (int i=0; i<26; i++) {

        infile1>>num[i];

        infile2>>n[i];

    }

    infile1.close();

    infile2.close();

}


int serch(char c)

{

    int j; //记录下标

    char num[26];

    int n[26];

    getValue(num, n);

    int i;

    for (i=0; i<26; i++) {

        if (c == num[i]) {

            j=i;

            break;

        }

    }

    if(26 == i)

    {

        return 0;

    }

    return n[j];

    

//    infile1.close();

//    infile2.close();

}


int overridestrlen(const char *p)

{

    int i=0;

    do {

        p++;

        i++;

    } while (*p!='\0');

    return i;

}


int main(int argc, const char * argv[])

{


    char num[26] = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};

    int val[26];

    for (int i=0; i<26; i++) {

        val[i] = i+1;

    }

    //将数据存储到文件中

    ofstream onfile1,onfile2;//定义输出文件类(将数据写入到文件中)

    onfile1.open("file1.txt");//打开一个输入文件file1用来保存26个大写的英文字母

    onfile2.open("file2.txt");//打开一个输入文件file2用来保存1-26个数字

    for (int i=0; i<26; i++) {

        onfile1<<num[i]<<' ';

        onfile2<<val[i]<<' ';

    }

    onfile1.close();

    onfile2.close();

    char f1[10];

    char f='Y';

    do {

        int sum=0;

        char s[50];

        string ss;

        cout<<"请输入要计算的字符串"<<endl;

        //cin>>s;

        cin.getline(s, 80);

        char *p=s;


        int j = overridestrlen(p);

        for (int i=0; i<j; i++){

            sum+=serch(s[i]);

        }

        cout<<s<<":"<<sum<<"%"<<endl;

        cout<<"您还要继续计算吗?(Y/N)";

        //cin>>f>>f;

        cin.getline(f1,10);

    }while('Y' == f1[0]);

    cout<<"欢迎使用!谢谢!"<<endl;

    return 0;

}

结果:

请输入要计算的字符串

LOVE

LOVE:54%

作业2.对string类进行重写(重要,面试常考)

#include <iostream>

using namespace std;

class String1

{

    char *m_data;

public:

    String1(const char *str = NULL)  //普通构造函数

    {

        if (str==NULL) {

            m_data = new char[1];

            m_data[0] = '\0';

        }

        else

        {

            if (m_data) {

                delete []m_data;

            }

            else

            {

                m_data = new char[strlen(str)];

                strcpy(m_data, str);

            }

        }

    }

    String1(const String1&other)  //拷贝构造函数

    {

        if (this == &other) {

            cout<<"不能复制本身!"<<endl;

        }

        else if (this->m_data == other.m_data)

        {

            cout<<"不能复制相同的值"<<endl;

        }

        else

        {

            if (this->m_data) {

                delete []m_data;

            }

            else

            {

                this->m_data = new char[strlen(other.m_data)+1];

                strcpy(this->m_data, other.m_data);

            }

        }

    }

    ~String1()//析构函数

    {

        if (this->m_data) {

            delete []m_data;

        }

    }

    String1 &operator = (const String1&other) //赋值函数(通过重载=运算符)

    {

        if (this == &other)

        {

            return *this;

        }

        else

        {

            if (m_data) {

                delete []m_data;

            }

            

                this->m_data = new char(strlen(other.m_data)+1);

                strcpy(this->m_data, other.m_data);

            

            //this->m_data = other.m_data;

            

        }

    }

    //显示函数

    char *show()

    {

        return this->m_data;

    }

};


int main(int argc, const char * argv[])

{

    String1 s1("dingxiaowei");

    String1 s2;

    s2 = s1;

    char *p = s2.show();

    cout<<p<<'\n'<<endl;

    return 0;

}