1、c+ 例题第一章例1.1 输出一行字符: “This is a C+ program.”。程序如下: #include /包含头文件iostreamusing namespace std; /使用命名空间stdint main( )coutThis is a C+ program.;return 0;例1.2 求a和b两个数之和。可以写出以下程序: / 求两数之和 (本行是注释行)#include /预处理命令using namespace std; /使用命名空间stdint main( ) /主函数首部 /函数体开始int a,b,sum; /定义变量cinab; /输入语句sum=a+b
2、; /赋值语句couta+b=sumendl; /输出语句return 0; /如程序正常结束,向操作系统返回一个零值 /函数结束例1.3 给两个数x和y,求两数中的大者。在本例中包含两个函数。#include /预处理命令using namespace std;int max(int x,int y) /定义max函数,函数值为整型,形式参数x,y为整型 /max函数体开始int z; /变量声明,定义本函数中用到的变量z为整型if(xy) z=x; /if语句,如果xy,则将x的值赋给zelse z=y; /否则,将y的值赋给zreturn(z); /将z的值返回,通过max带回调用处 /
3、max函数结束int main( ) /主函数 /主函数体开始int a,b,m; /变量声明cinab; /输入变量a和b的值m=max(a,b); /调用max函数,将得到的值赋给mcoutmax=mn; /输出大数m的值return 0; /如程序正常结束,向操作系统返回一个零值 例1.4 包含类的C+程序。#include / 预处理命令using namespace std;class Student / 声明一个类,类名为Studentprivate: / 以下为类中的私有部分int num; / 私有变量numint score; / 私有变量scorepublic: / 以下为
4、类中的公用部分void setdata( ) / 定义公用函数setdatacinnum; / 输入num的值cinscore; / 输入score的值void display( ) / 定义公用函数displaycoutnum=numendl; / 输出num的值coutscore=scoreendl; /输出score的值; / 类的声明结束Student stud1,stud2; /定义stud1和stud2为Student类的变量,称为对象int main( ) / 主函数首部stud1.setdata( ); / 调用对象stud1的setdata函数stud2.setdata( )
5、; / 调用对象stud2的setdata函数stud1.display( ); / 调用对象stud1的display函数stud2.display( ); / 调用对象stud2的display函数return 0;第二章例2.1 将字符赋给整型变量。#include using namespace std;int main( )int i,j; /i和j是整型变量i=A; /将一个字符常量赋给整型变量ij=B; /将一个字符常量赋给整型变量jcouti jn; /输出整型变量i和j的值,n 是换行符return 0;例2.2 字符数据与整数进行算术运算。下面程序的作用是将小写字母转换为大
6、写字母。#include using namespace std;int main( )char c1,c2;c1=a;c2=b;c1=c1-32;c2=c2-32;coutc1 c2endl;return 0;例2.3 符号常量的使用。 #define PRICE 30 /注意这不是语句,末尾不要加分号int main ( ) int num,total;num=10;total=num * PRICE;couttotal=totalendl;return 0; 例2.4 强制类型转换。#include using namespace std;int main( ) float x;int
7、i;x=3.6;i=(int)x;coutx=x,i= iendl;return 0;例2.5 将有符号数据传送给无符号变量。#include using namespace std;int main( ) unsigned short a;short int b=-1;a=b;couta=aendl;return 0;第三章例3.1 各行小数点对齐。#include #include using namespace std;int main( ) double a=123.456,b=3.14159,c=-3214.67; coutsetiosflags(iosfixed)setiosfla
8、gs(iosright)setprecision(2);coutsetw(10)aendl;coutsetw(10)bendl;coutsetw(10)cendl; return 0; 例3.10 求1+2+3+100。用流程图表示算法,见图3.10。根据流程图写出程序:#include using namespace std;int main( )int i=1,sum=0;while (i=100) sum=sum+i;i+;coutsum=sumendl;例3.11 用do-while语句求1+2+3+100。先画出流程图,见图3.12。可编写出下面的程序: #include using
9、 namespace std;int main( )int i=1,sum=0;do sum=sum+i;i+;while (i=100);coutsum=sumendl;return 0;例3.12 用下面公式求的近似值。/41-1/3+1/5-1/7+直到最后一项的绝对值小于10的-7次方为止。根据给定的算法很容易编写程序如下:#include #include #include using namespace std;int main( )int s=1;double n=1,t=1,pi=0;while(fabs(t)1e-7)pi=pi+t;n=n+2;s=-s;t=s/n;pi=p
10、i*4;coutpi=setiosflags(iosfixed)setprecision(6)piendl;return 0;例3.13 求Fibonacci数列前40个数。这个数列有如下特点:第1、2个数为1、1。从第3个数开始,每个数是其前面两个数之和。即F1=1 (n=1)F2=1 (n=2)Fn=Fn-1+Fn-2 (n3)这是一个有趣的古典数学问题:有一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假设所有兔子都不死,问每个月的兔子总数为多少?可以从书中表3.4看出兔子数的规律。根据给出的每月兔子总数的关系,可以编写程序如下:#include
11、#include using namespace std;int main( )long f1,f2;int i;f1=f2=1;for(i=1;i=20;i+)coutsetw(12)f1setw(12)f2; /设备输出字段宽度为12,每次输出两个数if(i%2=0) coutendl;/每输出完4个数后换行,使每行输出4个数f1=f1+f2;/左边的f1代表第3个数,是第1、2个数之和f2=f2+f1;/左边的f2代表第4个数,是第2、3个数之和return 0;例3.14 找出100200间的全部素数。编写程序如下:#include #include #include using na
12、mespace std;int main( )int m,k,i,n=0;bool prime; /定义布尔变量primefor(m=101;m=200;m=m+2) /判别m是否为素数,m由101变化到200,增量为2prime=true; /循环开始时设prime为真,即先认为m为素数k=int(sqrt(m); /用k代表根号m的整数部分for(i=2;i=k;i+) /此循环的作用是将m被2根号m除,检查是否能整除if(m%i=0) /如果能整除,表示m不是素数 prime=false; /使prime变为假break; /终止执行本循环 if (prime) /如果m为素数couts
13、etw(5)m; /输出素数m,字段宽度为5n=n+1; /n用来累计输出素数的个数 if(n%10=0) coutendl; /输出10个数后换行coutendl; /最后执行一次换行return 0;例3.15 译密码。为使电文保密,往往按一定规律将电文转换成密码,收报人再按约定的规律将其译回原文。例如,可以按以下规律将电文变成密码:将字母A变成字母E,a变成e,即变成其后的第4个字母,W变成A,X变成B,Y变成C,Z变成D。见图3.20。字母按上述规律转换,非字母字符不变。如Wonderful!转换为Asrhivjyp!。输入一行字符,要求输出其相应的密码。图3.20程序如下:#incl
14、ude using namespace std;int main( )char c;while (c=getchar( )!=n)if(c=a & c=A & cZ & cz) c=c-26;coutc;coutendl;return 0; 例3.2 输出单个字符。#include /或者包含头文件stdio.h: #include using namespace std;int main( )char a,b,c;a=B;b=O;c=Y;putchar(a);putchar(b);putchar(c);putchar(n);putchar(66);putchar(79);putchar(89
15、);putchar(10);return 0;例3.3 输入单个字符。#include using namespace std;int main( )char c;c=getchar( ); putchar(c+32); putchar(n);return 0; 例3.4 用scanf和printf函数进行输入和输出。#include using namespace std;int main( )int a; float b; char c;scanf(%d %c %f,&a,&c,&b); /注意在变量名前要加地址运算符&printf(a=%d,b=%f,c=%cn,a,b,c);retur
16、n 0;例3.5 求一元二次方程式ax2+bx+c=0的根。a,b,c的值在运行时由键盘输入,它们的值满足b2-4ac0。根据求x1,x2的算法。它可以编写出以下C+程序: #include #include /由于程序要用到数学函数sqrt,故应包含头文件cmathusing namespace std;int main( )float a,b,c,x1,x2;cinabc;x1=(-b+sqrt(b*b-4*a*c)/(2*a);x2=(-b-sqrt(b*b-4*a*c)/(2*a);coutx1=x1endl;coutx2=x2endl;return 0;例3.6 求三角形的面积。#i
17、nclude #include /使用数学函数时要包含头文件cmath#include /使用I/O流控制符要包含头文件iomanipusing namespace std;int main( )double a,b,c;coutabc;if (a+bc & b+ca & c+ab) /复合语句开始double s,area; /在复合语句内定义变量s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c);coutsetiosflags(iosfixed)setprecision(4); /指定输出的数包含4位小数coutarea=areaendl; /在复合语句内输
18、出局部变量的值 /复合语句结束else coutit is not a trilateral!endl;return 0;例3.7 输入一个字符,判别它是否为大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。#include using namespace std;int main( )char ch;cinch;ch=(ch=A & ch=Z)?(ch+32):ch; /判别ch是否大写字母,是则转换coutchendl;return 0;例3.8 编写程序,判断某一年是否为闰年。#include using namespace std;int main( )
19、int year;bool leap;coutyear; /输入年份if (year%4=0) /年份能被4整除if(year%100=0) /年份能被4整除又能被100整除if (year%400=0) /年份能被4整除又能被400整除leap=true; /闰年,令leap=true(真)else leap=false; /非闰年,令leap=false(假)else /年份能被4整除但不能被100整除肯定是闰年leap=true; /是闰年,令leap=trueelse /年份不能被4整除肯定不是闰年leap=false; /若为非闰年,令leap=falseif (leap)couty
20、ear is ; /若leap为真,就输出年份和“是”elsecoutyear is not ; /若leap为真,就输出年份和“不是”cout a leap year.endl; /输出“闰年”return 0;例3.9 运输公司对用户计算运费。路程(s)越远,每公里运费越低。标准如下: s250km 没有折扣250s500 2折扣500s1000 5折扣1000s2000 8折扣2000s3000 10折扣3000s 15折扣设每公里每吨货物的基本运费为p(price的缩写),货物重为w(wright的缩写),距离为,折扣为d(discount的缩写),则总运费f(freight的缩写)的
21、计算公式为 f = p * w * s * (1 - d)图3.8据此写出程序如下: #include using namespace std;int main( )int c,s;float p,w,d,f;coutpws;if(s=3000) c=12;else c=s/250;switch (c) case 0:d=0;break;case 1:d=2;break;case 2:case 3:d=5;break;case 4:case 5:case 6:case 7:d=8;break;case 8:case 9:case 10:case 11:d=10;break;case 12:d=
22、15;break;f=p*w*s*(1-d/100.0);coutfreight=fendl;return 0;第四章例41 在主函数中调用其他函数。#include using namespace std;void printstar(void) /定义printstar函数cout* endl; /输出30个“*”void print_message(void) /定义print_message函数cout Welcome to C+!endl; /输出一行文字int main(void)printstar( ); /调用printstar 函数print_message( ); /调用p
23、rint_message函数printstar( ); /调用printstar 函数return 0;例4.10 有5个人坐在一起,问第5个人多少岁?他说比第4个人大两岁。问第4个人岁数,他说比第3个人大两岁。问第3个人,又说比第2个人大两岁。问第2个人,说比第1个人大两岁。最后问第1个人,他说是10岁。请问第5个人多大?可以写出以下C+程序,其中的age函数用来实现上述递归过程。#include using namespace std;int age(int); /函数声明int main( ) /主函数 coutage(5)endl;return 0;int age(int n) /求年
24、龄的递归函数int c; /用c作为存放年龄的变量 if(n=1) c=10; /当n=1时,年龄为10else c=age(n-1)+2; /当n1时,此人年龄是他前一个人的年龄加2return c; /将年龄值带回主函数例4.11 用递归方法求!。有了例4.10的基础,很容易写出本题的程序:#include using namespace std;long fac(int); /函数声明int main( )int n; /n为需要求阶乘的整数long y; /y为存放n!的变量coutn; /输入ny=fac(n); /调用fac函数以求n!coutn!=yendl; /输出n!的值re
25、turn 0;long fac(int n) /递归函数long f;if(n0)coutn0,data error!1时,进行递归调用return f; /将f的值作为函数值返回例4.12 静态局部变量的值。#include using namespace std;int f(int a) /定义f函数,a为形参auto int b=0; /定义b为自动变量static int c=3; /定义c为静态局部变量b=b+1;c=c+1;return a+b+c;int main( )int a=2,i;for(i=0;i3;i+)coutf(a) ;coutendl;return 0;例4.13 输出的阶乘值(即1!,2!,3!,4!,5!)。#include using namespace std;int fac(int); /函数声明int main( )int i;for(i=1;i=5;i+)couti!=fac(i)endl;return 0;int fac(int n)static int f=1; /f为静态局部变量,函数结束时f的值不释放f=f*n; /在f原值基础上乘以nret
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2