第一、二章1.请编写程序输入三角形的三条边,判别它们能否形成三角形,若能,则判断是等边、等腰、还是一般三角形。
程序可多次判别,程序结束的条件自行定义。
【解答】未加入循环#include <iostream.h>void main(){ float a, b, c ;cout << "a, b, c = " ;cin >> a >> b >> c ;if ( a+b > c && b+c > a && c+a > b ){ if ( a == b && b == c )cout << "等边三角形!" << endl;else if ( a == b || a == c || b == c )cout << "等腰三角形!" << endl;else cout << "一般三角形!" << endl;}else cout << "不能形成三角形!" << endl ;}2.编一程序显示如下图案,注意行数可由用户确定:** * ** * * * ** * * * * * ** * * * * * * * *【解答】#include <iostream.h>void main(){ int i,j,k;for( i=1; i<=5; i++ ){ for( k=1; k<=5-i; k++ ) cout << " ";for( j=1; j<=2*i-1; j++ ) cout << "*";cout << endl;}}第三章1.输入a,b和c的值,编写一个程序求这三个数的最大值和最小值。
要求把求最大值和最小值编写成函数,并使用指针或引用作为形式参数把结果返回函数main。
【解答】(1)使用指针参数#include<iostream.h>void fmaxmin( float,float ,float ,float *,float * );void main(){ float a,b,c,max,min;cout << "a,b,c = ";cin >> a >> b >> c;fmaxmin( a,b,c,&max,&min );cout << "max=" << max << endl;cout << "min=" < <min << endl;}void fmaxmin( float x,float y,float z,float *p1,float *p2 ) { float u,v;if ( x>y ) { u = x; v = y; }else { u = y; v = x; };if ( z>u ) u = z;if ( z<v ) v = z;*p1 = u;*p2 = v;}(2)使用引用参数#include<iostream.h>void fmaxmin( float,float ,float ,float& ,float& );void main(){ float a,b,c,max,min;cout << "a,b,c=";cin >> a >> b >> c;fmaxmin( a,b,c,max,min );cout << "max=" << max << endl;cout << "min=" << min << endl;}void fmaxmin( float x,float y,float z,float &p1,float &p2 ){ float u,v;if ( x>y ) { u = x; v = y; }else { u = y; v = x; };if ( z>u ) u = z;if ( z<v ) v = z;p1 = u;p2 = v;}2. 把以下程序中的print()函数改写为等价的递归函数。
#include <iostream.h>void print( int w ){ for( int i = 1 ; i <= w ; i ++ ){ for( int j = 1 ; j <= i ; j ++ )cout << i << " " ;cout << endl ;}}void main(){ print( 5 ) ; }运行显示:12 23 3 34 4 4 45 5 5 5 5【解答】#include <iostream.h>void print(int w){ int i;if( w ){print( w-1 );for( i=1; i<=w; i++ ) cout << w << " ";cout << endl;}}void main(){print( 5 );}3.编写一个程序,包含三个重载的display函数和一个主函数。
要求第一个函数输出double值,前面用字符串“a double:”引导,第二个函数输出一个int值,前面用字符串“a int:”引导,第三个函数输出一个char字符值,前面用字符串“a char:”引导,在主函数中分别用double、int和char型变量作为实参调用display函数。
【解答】#include <iostream.h>void display( double d ){ cout << "a double:" << d << endl; }void display( int i ){ cout << "a int:" << i << endl; }void display( char c ){ cout << "a char:" << c << endl; }void main(){ double d = 1.5; int i = 100; char c = 'a';display( d );display( i );display( c );}第4章1. 定义一个Book(图书)类,在该类定义中包括数据成员:bookname(书名)、price(价格)和number(存书数量);成员函数:display()显示图书的情况;borrow()将存书数量减1,并显示当前存书数量;restore()将存书数量加1,并显示当前存书数量。
在main函数中,要求创建某一种图书对象,并对该图书进行简单的显示、借阅和归还管理。
【解答】#include <iostream.h>#include <string.h>#include <stdlib.h>class Book{ public:void setBook(char*,float,int);void borrow();void restore();void display();private:char bookname[40];float price;int number;};//在类外定义Book类的成员函数void Book::setBook(char *name, float pri, int num){ strcpy(bookname, name);price=pri;number=num;}void Book::borrow(){ if (number==0 ){ cout << "已没存书,退出!" << endl;abort();}number = number - 1;cout << "借一次,现存书量为:" << number << endl;}void Book::restore(){ number = number + 1;cout << "还一次,现存书量为:" << number << endl; }void Book::display(){ cout << "存书情况:" << endl<< "bookname:" << bookname << endl<< "price:" << price << endl<< "number:" << number << endl;}void main(){ char flag, ch;Book computer;computer.setBook( "c++程序设计基础" , 32, 1000 );computer.display();ch = 'y';while ( ch == 'y' ){ cout << "请输入借阅或归还标志(b/r):";cin >> flag;switch ( flag ){ case 'b': computer.borrow(); break;case 'r': computer.restore();}cout << "是否继续?(y/n)";cin >> ch;}computer.display();}2. 输入一行字符,按输入字符的反序建立一个字符结点的单向链表,并输出该链表中的字符。