即日起在codingBlog上分享您的技术经验即可获得积分,积分可兑换现金哦。

C++实验报告

编程语言 liu13479526389 10℃ 0评论

(一)问题及代码:

/* 


* 文件名称:Ex1-r.cpp 


* 作    者:刘杰 


* 完成日期:2017 年 4月 24 日 


* 版 本 号:visual C++6.0


* 对任务及求解方法的描述部分:


* 输入描述:无 


* 问题描述:正整数类


* 程序输出:“” 


* 问题分析:略


* 算法设计:略 


*/   


#include 


using namespace std; 


class NaturalNumber 


{private: 


    int n;  


public: 


    void setValue (int x);


    int getValue(); 


    bool isPrime();  


    void printFactor(); 


    bool isPerfect();  


    bool isReverse(int x); 


    bool isDaffodil(int x); 


    void printDaffodils();  


}; 


void main(void) 





    NaturalNumber nn;    


    nn.setValue (12); 


    cout<

    nn.setValue (45);  


    cout<

    nn.setValue (345);  


    cout<

    nn.printFactor(); 


    cout << endl; 


    nn.setValue(45); 


    cout << nn.getValue() << (nn.isPerfect()?"是":"不是") << "完全数" << endl;  


    nn.setValue(5); 


    cout << nn.getValue() << (nn.isPerfect()?"是":"不是") << "完全数" << endl; 


    nn.setValue(564); 


    cout << "456" << (nn.isReverse(321)?"是":"不是") << nn.getValue() << "的逆向数" << endl; 


    nn.setValue(654); 


    cout << "456" << (nn.isReverse(456)?"是":"不是") << nn.getValue() << "的逆向数" << endl; 


    nn.setValue(153); 


    cout << nn.getValue() << (nn.isDaffodil(153)?"是":"不是") << "水仙花数" << endl; 


    nn.setValue(65); 


    cout << nn.getValue() << (nn.isDaffodil(30)?"是":"不是") << "水仙花数" << endl; 


    nn.setValue(200); 


    cout << nn.getValue() <<" 以内的水仙花数有:"; 


    nn.printDaffodils(); 


    system(“PAUSE”);       





  


void NaturalNumber::setValue(int x) 





    if(x > 0) 


    { 


        n = x; 


    } 


    return ; 





int NaturalNumber::getValue()





    return n; 





bool NaturalNumber::isPrime() 





    bool prime = true; 


    int i = 2 ; 


    while(i < n) 


    { 


        if(n % i == 0) 


        { 


            prime = false; 


            break; 


        } 


        ++i; 


    } 


    return prime; 





void NaturalNumber::printFactor()





    int i; 


    for(i = 1; i <= n; ++i) 


    { 


        if(n % i == 0) 


        { 


            cout << i << '\t' ; 


        } 


    } 


    return; 





bool NaturalNumber::isPerfect()





    bool perfect = false; 


    int i,s = 0; 


    for(i = 1;i < n; ++i) 


    { 


        if(n % i == 0) 


        { 


            s = s + i; 


        } 


    } 


    if(s == n) 


    { 


        perfect = true; 


    } 


    return perfect; 





bool NaturalNumber::isReverse(int x) 





    bool reverse = false; 


    int s = 0; 


    while(x > 0) 


    { 


        s = s * 10 + x % 10; 


        x = x / 10; 


    } 


    if(s == n) 


    { 


        reverse = true; 


    } 


    return reverse; 





bool NaturalNumber::isDaffodil(int x) 





    bool daffodil = false; 


    int s = 0, d, p = x; 


    while(x > 0) 


    { 


        d = x % 10; 


        s = s + d * d * d; 


        x = x / 10; 


    } 


    if(p == s) 


    { 


        daffodil = true; 


    } 


    return daffodil; 





void NaturalNumber::printDaffodils()





    int i; 


    for(i = 2; i < n; ++i) 


    { 


        if(isDaffodil(i)) 


        { 


            cout << i << " " ; 


        } 


    } 


    cout << endl; 


    return ; 


}

(二)运行结果:

(三)心得体会:

类和对象还有较多不明白的地方,仍需努力学习。

(四)知识点总结:

要注意公共成员与私有成员的区别。

转载请注明:CodingBlog » C++实验报告

喜欢 (0)or分享 (0)
发表我的评论
取消评论

*

表情