2. 本学期起程序头部的注释请自行加入,从本学期起不再统一给出。这是一个程序员良好习惯中的一部分,养成这个习惯。这也是展示个人专业品质的一个重要途径。另外,在程序中需要的地方,也请加注释。下面是我们一直在用的注释模板。
(程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.* 文件名称:
* 作 者: 张斌
* 完成日期:2012年3月26日
* 版 本 号: 5-2-1
* 对任务及求解方法的描述部分
* 输入描述: 设计分数类,完成对分数的运算
* 问题描述:
* 程序输出:
* 程序头部的注释结束
#include<iostream> using namespace std; class CFraction { public: CFraction(int nu = 0, int de = 1); //构造函数,初始化用 void Set(int nu = 0, int de = 1); //置值,改变值时用 void input(); //按照"nu/de"的格式,如"5/2"的形式输入 void Simplify(); //化简(使分子分母没有公因子) void amplify(int n); //放大n倍,如2/3放大5倍为10/3 void output(int style = 0); //输出:以8/6为例,style为0时,输出8/6;//style为1时,输出4/3; //style为2时,输出1(1/3),表示一又三分之一; //不给出参数和非1、2,认为是方式0 private: int nume; int deno; int gcd(int , int ); bool is_CF(int n, int d) ; }; CFraction::CFraction(int nu, int de):nume(nu),deno(de){} int main() { CFraction cf; cf.Set(5, 6); cf.input(); cout << "化简后的值是:" << endl; cf.Simplify() ; cf.output(0); cout << "再扩大四倍后是:" << endl; cf.amplify(4); cf.output(0); system("PAUSE"); return 0; } void CFraction::Set(int nu, int de) { nume = nu; deno = de; } void CFraction::input() { char c; cout << "输入分数:(格式:nu/de)" << endl; while(1) { cin >> nume >> c >> deno; if(c != '/') { cout << "格式不正确,请重新输入!" << endl; } else if(! is_CF(nume, deno)) { cout << "数字非法,请重新输入!" << endl; } else { break; } } } bool CFraction::is_CF(int n, int d) { if(n < 0 || d <= 0) { return false; } return true; } void CFraction::Simplify() { nume = nume / gcd(nume, deno); deno = deno / gcd(nume, deno); } int CFraction::gcd(int nu, int de) { int t, r, a, b; a = nu; b = de; if (a < b) { t = a; a = b; b = t; } while (b != 0) { r = a % b; a = b; b = r; } return a; } void CFraction::amplify(int n) { nume *= n; } void CFraction::output(int style) { switch(style) { case(0): cout << nume << "/" << deno << endl; break; case(1): Simplify(); cout << nume << "/" << deno << endl; break; case(2): Simplify(); if(nume > deno) { int add; add = nume / deno; if(nume % deno == 0) { cout << add << endl; } else { cout << add << "(" << nume % deno << "/" << deno << ")" << endl; } } break; default: cout << nume << "/" << deno << endl; break; } }