1、北京电子科技学院(BESTI)实验报告课程:面向对象程序设计班级:姓名: 学号:成绩:指导教师:徐日实验日期:实验密级:预习程度:实验时间:仪器组次:901机房D34必修/选修:选修实验序号:2实验名称: C+基础编程实验目的与要求:1、 使学生掌握内联函数、输入输出流控制编程;2、 培养学生具有运用C+语言编程解决问题的能力,提高学生的计算机编程能力;3、 引导和培养学生具有认真严谨的实验态度和勇于时间的学习精神。实验仪器:名称型号数量微机Lenovo ThinkCentre 80001题一:计算显示立方值关键提要:内联函数,输出流控制1、题目:用内联函数编程,计算并显示0.5,1,1.5,
2、2,2.5,3, ,19.5,20,20.5, 的立方值。所能处理的最大值要由用户输入,且所能处理的最大值应35.5,请尽可能的处理更大的值,例如能处理45.5,甚至超过55.5,并且注意紧凑对齐,尽量在纵列对齐且显示明晰的情况下实现一行能容纳多列。要求: 主函数中输出提示信息,主函数输出计算结果,。 输出计算结果时要设定输出格式,各列数据要紧凑对齐,样式为: 0.5立方值=0.125|1立方值=1| 计算立方值的函数用内联函数编程实现。2、编程设计思想:求立方值的函数语句较短,设计为内联函数,以增加代码的代价节省时间;使用cout流控制符控制数据的输出格式,如:setiosflags(ios
3、:right)控制右对齐,setiosflags(ios:left)控制左对齐,setw( )控制域宽等;利用ifelse控制每行输出3个立方值。3、程序源代码:#include #include inline long double cube(long double x) /内联函数 return x*x*x; /计算x的立方值int main()int n; int i; /定义循环变量 long double a=0.5; cout 下面程序输出0,0.5,1,1.5,19.5,20,20.5的立方值: endl; /输出提示信息 coutn;for(i=1;i=2*n;i+) cout
4、setiosflags(ios:right)setw(5)a立方值=; /设置右对齐,域宽为5 coutresetiosflags(ios:right)setiosflags(ios:left)setw(10)cube(a); /先取消右对齐,再设置左对齐,域宽为10coutresetiosflags(ios:left); if(i%3!=0) /控制每行输出3个立方值 cout|; else coutendl; a+=0.5; return 0; /返回0,主函数结束4、执行结果:题二:字符串中找数字关键提要:输入输出流控制 1、题目:编写程序,将用户输入的由数字字符和非数字字符组成的字符串
5、中的数字提取出来,例如输入 “asd12345rt456,fg9erp”,这产生的数字分别是12345、456和9,输出这些数字字符。要求:连续的数字字符在同行输出,不连续的数字字符在不同行输出。2、编程设计思想:先输入一串字符保存在一个字符数组str1中,然后分别判断这些字符串是不是数字,如果是数字用整型m数组计数,然后再把它存到字符数组str2当中,然后比较计数谁最大,记录最大的个数为max。首先打印出第一个数组m0的前的空格,然后再用for循环打印剩下的每行数字和数字前的空格(就把最大的数字减去一连串数字的个数就等于打印空格的数目)。其中strlen()函数用来计算字符数组中字符的个数;
6、sdigit()用来判断字符是否为数字。3、程序源代码:#include#include#include #include using namespace std; /使用名空间void main(void)char str1100; /记录输入的字符char str2100; /将字符中的数字记录在str2中int m100=0; /记录数字串组数int i,j;int max; /记录最大数int sum=0; /记录数字总数int n;int y=0;int c=0;int l=0;int u=0;cout输入串:;cin.getline(str1,100); cout输出结果:endl
7、;n=strlen(str1); /用strlen()函数计算str1中的字符个数for(i=0;i=n;i+)if(isdigit(*(str1+i)!=0) /判断这个字符是不是数字,如果是数字则计数mc+; /用一个整型数组记录每串数字的个数if(isdigit(*(str1+i)!=0&isdigit(*(str1+i+1)=0) c+; /当一串数字结束了,然后C就加1for(i=0;imax)max=mi; /判断一串数字里面位数最多的一个,并记录在max当中sum=sum+mi; /计算所有数字的个数之和for(i=0;i=n;i+)if(isdigit(*(str1+i)!=0)str2u=*(str1+i); /把每个数字都存放在字符数组里面u+;for(i=0;i=max-m0-1;i+)cout ; /在第一个数字串之前打印空格for(i=0;i=sum-1;i+)coutstr2i;l+;if(l=my)coutendl;for(j=0;j=max-my+1-1;j+) cout ;/在每个字符串里面打印相应的空格数y+;l=0;4、 执行结果: