c++实验报告 第25组_第1页
c++实验报告 第25组_第2页
c++实验报告 第25组_第3页
c++实验报告 第25组_第4页
c++实验报告 第25组_第5页
已阅读5页,还剩73页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、程序设计基础实验报告专业班级:通信工程12-2班组别:第25组姓名:周文霞 周红军 韩思雨学号:2012211555 2012211556 2012211557合肥工业大学计算机与信息学院20122013第一学期实验一 面向过程的简单程序设计1.实验目的(1) 使用C+语言编写简单的计算机程序,掌握C+程序从编辑、编译到运行的全过程,初步了解C+程序的特点。(2) 掌握C+语言的数据类型(包括对各种数据类型变量的定义、初始化、赋值等)、运算符和表达式的使用。(3) 掌握赋值语句的使用。(4) 掌握数据的输入输出方法。2.实验内容(1)设计简单程序,分别计算下列表达式,式中变量由键盘输入,输出表

2、达式的值。 sinX+cosX+tan-1X ex+y+ex-y log10(1+) + (其中表示取不大于a的最大整数)。#include using namespace std;int main()float x,a,b,c,d,e;cinxabcd;e=x+(a+b)/(c-d);couteendl;return 0;#include#includeusing namespace std;double dao1(double x,double z)double y;y=1/(x+z);return y;int main()double x,y,a,b;coutInput a number

3、:x;a=dao1(x,1);b=dao1(x,a);y=sqrt(1+b);cout表达式的值为:yendl;return 0;#include#includeusing namespace std;int main()double x,y;coutInput a number:x;y=cos(x)+sin(x)+1/tan(x);cout:y=yendl;return 0;:#include#includeusing namespace std;int main()double x,y,z;coutInput two numbers:xy;z=exp(x+y)+exp(x-y);coutz

4、=:zendl;return 0;#include#includeusing namespace std;int main()double a,x,y;coutInput a number:x;a=sqrt(1+x*x);y=log10(1+a);couty=:yendl;return 0;#includeusing namespace std;int main()double a,b,y,c;int d;coutInput two numbers:ab;c=a*a-b*b;if(c=0) c=-c;d=a-b;if(a=b) d=0;else if(d=0) d-=1;y=c+d;couty

5、=:yendl;return 0;(2)阅读下列程序,写出(由指定的输入)所产生的运行结果,并指出其功能。 #include void main()char ch;cin ch ;ch = ( ch = A & ch = a & ch = z ) ? ( ch 32 ) : ch ;cout ch endl; 将大小写字母进行转换 #include void main()int m;float x;bool bi,br;cout m;bi = m 1000;cout x;br = x = 1e3;cout bi , br endl;分别输入100 40,2000 3000,1000 1000,

6、2000 300,100 4000 运行。输出结果为:0 1,1 0,0 1,1 1,0 0程序用来判断m和n与1000的大小关系#include void main() int n;cin n ;if ( n + 10 ) cout n endl ;else cout n - endl ;(3)编写程序实现下列问题的求解。 根据随机从键盘输入的圆半径值,求圆的周长和半径并输出。#includeusing namespace std;int main()int r,l,s,pi=3.1415926;coutInput a nmber:r;l=2*pi*r;s=pi*r*r;cout圆的周长为:

7、lendl;cout圆的面积为:sendl;return 0; 读入三个整数a、b、c,交换它们中的数,使a存放b的值,b存放c的值,c存放a的值。#includeusing namespace std;int main()int a,b,c,temp;cout请输入三个整数:abc;cout交换前:a=a,b=b,c=cendl;temp=a;a=b;b=c;c=temp;cout交换后:a=a,b=b,c=cendl;return 0; 对任意输入的四位整数,分别求出其各位数字,并按从后到前的顺序依次输出。例如,输入为1234时,输出结果为4,3,2,1。#includeusing nam

8、espace std;int main()int a,b,c,d,e;cout请输入任意四位整数:a;e=a/1000;d=a/100%10;c=a/10%10;b=a%10;coutb,c,d,eendl;return 0;3. 思考题解答* 对任意输入的小于1的并且只有3位尾数的实数,分别求出其各位数字并输出。要求输出的各数字之间要空2格。例如,输入为0.368时,输出结果为0 3 6 8。#includeusing namespace std;int main()double a;int b,c,d,e;cout请输入一个小于1且只有3个尾数的数:a;b=a/1;c=a/0.1; c%=

9、10;d=(a/0.01);d%=10;e=(a/0.001);e%=10;coutb c d eendl;return 0;4.实验总结实验二 控制结构程序设计1.实验目的要求(1) 理解基本的解题技巧,掌握用自顶向下、逐步求精的过程设计算法。(2) 熟练掌握if/else语句和switch语句的使用。(3) 熟练掌握while语句、do/while语句和for语句的使用以及区别。(4) 掌握break和continue程序控制语句的使用。2.实验内容(1)阅读下列程序,写出(由指定的输入)所产生的运行结果,并指出其功能。 #include void main()int m,n;m = 10

10、00;n = 850;cout “n(“ m , n n ) m = m n ;cout ( m , n );while ( m n ) n = n m ;cout ( m , n ); cout “n” m ;#include void main()int m,n,k ;m = 1000 ;n = 45 ;cout “n(“ m : n =n )m = m n ;k = k + 1 ; cout k “-” m endl ;#include void main()int i;for ( i = 1 ; i = 5 ; i + )if ( i % 2 ) cout *;else continu

11、e;cout # ;cout “$n” ; #include void main()int a = 1,b = 10;dob -= a ;a + ;while ( b - = 0 ) ;cout “a=” a “b=” b endl ;(2)编写程序实现下列问题的求解。 求解下面函数的值。 ex+y x0,y0 z= ln(x+y) 1x+y10 log10|x+y|+1 其它情况#include#includeusing namespace std;int main()double x,y,z,a;cout请输入x,y:xy;a=x+y;if(x0&y=1&a10)z=log(a);else

12、 a=fabs(a);z=log10(a+1);coutz的值为:zendl;return 0; 编程求解下列各计算式: 1) #includeusing namespace std;int main()int n=1,s=0;while(n=100)s+=n;n+=1;coutsendl;return 0; 2) ! #includeusing namespace std;int main()int n,s=1,c=0;for(int i=1;i=7;i+)for(n=1;n=i;n+)s*=n;c+=s;s=1;coutcendl;return 0; 3) #includeusing na

13、mespace std;int main()int s=0;for(int i=1;i=39;i+=2)s=i*(i+1)+s;coutsendl;return 0;4) Y=X(-1)n+1的值,精确到10-6。#include#includeusing namespace std;int main()int jie(int);int i=-1,j,a=0;double y,s,x;doa+;i+=1;if(a%2=1)s=1.0*pow(x,i)/jie(i);elses=-1.0*pow(x,i)/jie(i);y+=s;while(y=0.000001);coutOutput:yend

14、l;return 0;int jie(int a)int b=1;for(int i=1;i=a;i+)b*=i;return b; 打印下面图形。 1 1 3 1 1 3 5 3 1 1 3 5 7 5 3 1 1 3 5 7 9 7 5 3 1 1 3 21 3 1#includeusing namespace std;int main()int n,i,j=25,k=1,a=1,b;for(i=1;i=11;i+)for(n=1;n=j;n+)cout ;b=k;while(ak)couta1)coutb ;b-=2;couta;for(n=1;n=j;n+)cout ;j-=2;k+=

15、2;coutendl;return 0; 编程产生出1到10以内的所有数对并输出,其中ij。#includeusing namespace std;int main()int i,j;for(i=1;i=10;i+)for(j=1;jj) couti,jendl;return 0; 编程求出10000以内的所有符合如下条件的数:其高位数字小于低位数字。如12,238,3578等。但21,548不符合条件。#includeusing namespace std;int main()int n,ge,shi,bai,qian;for(n=10;n=10000;n+)qian=n/1000;bai=

16、(n%1000)/100;shi=(n%100)/10;ge=n%10;if(qianbai&baishi&shishi) coutnendl;return 0; 求任一整数N的标准分解式,即素数因子之积。例如16=2*2*2*2, 15=3*5。#includestatic int function(int n);int main() int N; coutN; function(N); return 0;int function(int n) int m,k,t; coutn1) /求出m的所有因数 k=2; while(m%k!=0) k+; /求出当前m的第一个因数 if(t) cou

17、tk; else cout*k; m=m/k; t=0; coutn; return 1;3. 思考题解答* 编程求出数列的所有升或降的最大子序列。如下面数列的解为如下: 1,20,30,12,3,5,7,4,6,100,11,8 (1,20,30),(30,12,3),(3,5,7),(7,4),(4,6,100),(100,11,8)。* 编程求12100的末三位数。#include int main()int a=12,ans=1,n=100;while(n-)ans=ans*a%1000;printf(%dn,ans);return 0; 4.实验总结实验三 数 组1.实验目的要求(1

18、) 掌握一维数组和二维数组的定义、初始化赋值、元素引用的方法。(2) 初步了解数组名与地址的关系。(3) 掌握字符数组和字符串函数的使用。(4) 掌握与数组有关的算法(特别是排序和查找算法)。2.实验内容(1)阅读下列程序,写出其运行结果,并指出其功能。#include #define N 10void main()int aN;int s,i,j,t;for ( i = 0 ; i N ; i + )if ( i % 2 ) a i = i * i ;else a i = 100 - ( i / 2 ) * ( i / 2 ) ; for ( i = 0 ; i N ; i + ) cout

19、 a i ;cout endl ;s = 0 ;for( i = 0 ; i N ; i + ) s = s + a i ;cout “sum of a = ” s ;for(i = 0 ; i = 0 & t a j ) a j + 1 = a j ;j - ;a j + 1 = t ;for( i = 0 ; i N ; i + ) cout a i ;cout endl ;#include #include void main( )char a 20 = ”TER” , b 20 = ”COMP” ;int i = 0 ;strcat( a , b ) ;while (a i + !=

20、0 ) b i = a i ;cout b ; #include void main( )int i = 0 , base , n , j , num 20 ;cin n base ;doi +;num i = n % base ;n = n / base ;while ( n != 0 );for ( j = i ; j = 1 ; j-) cout num j ;(2)编写程序实现下列问题的求解。 编程产生下列数组,并输出。 一维数组 1) (1 4 9 16 25 36 49 64 81 100) 2) (1 3 6 10 15 21 28 36 45 55) 3)(1 2 3 5 8

21、13 21 34 55 89) 1)#includeusing namespace std;int main()int a10;for(int i=1;i=10;i+)ai-1=i*i;coutai-1 ;coutendl;return 0;2)#includeusing namespace std;int main()int a10,j=0;for(int i=1;i=10;i+)j+=i;ai-1=j;coutai-1 ;coutendl;return 0;3)#includeusing namespace std;int main()int a10,j=0;a0=1;a1=2;for(i

22、nt i=3;i=10;i+)ai-1=ai-3+ai-2;for(i=0;i10;i+)coutai ;coutendl;return 0; 二维数组 1) 1 2 3 4 5 6 2) 1 2 3 .n-1 0 2 3 4 5 6 0 2 3 4 . 0 1 3 4 5 6 0 1 3 4 5 . 1 2 4 5 6 0 1 2 . 5 6 0 1 2 3 n-1 0 1 .n-3 n-2 6 0 1 2 3 4 0 1 2 .n-2 n-1 3) 1 2 3 4 5 6 4) A B C D E F 2 1 2 3 4 5 B C E H L Q 3 2 1 2 3 4 C D F I

23、M R 4 3 2 1 2 3 D E G J N S 5 4 3 2 1 2 E F H K O T 6 5 4 3 2 1 1)#includeusing namespace std;int main()int a66,b=0;for(int i=0;i6;i+)for(int j=0;j5)b=0;elseb+;aij=b;b=i+1;for(i=0;i6;i+)for(int j=0;j6;j+)coutaij ;coutendl;return 0;2)#includeusing namespace std;int main()int a100100,b=0,n;cinn;for(in

24、t i=0;in;i+)for(int j=0;jn-2)b=0;elseb+;aij=b;b=i+1;for(i=0;in;i+)for(int j=0;jn;j+)coutaij ;coutendl;return 0;3)#includeusing namespace std;int main()int a66,i,j,k,n=1;for(i=0;i6;i+)for(j=i;j6;j+)aij=n;aji=n;n+;n=1;for(i=0;i6;i+)for(j=0;j6;j+)coutaij ;coutendl;return 0;4)#includeusing namespace std

25、;int main()char a56,n=A;int i,j,k;for(i=0;i1;i+)for(j=0;j6;j+)aij=n;aji=n;n+;j=1,n=C;for(i=1;i5;i+)aij=n;n+;j=2,n=E;for(i=1;i5;i+)aij=n;n+;j=3,n=H;for(i=1;i5;i+)aij=n;n+;j=4,n=L;for(i=1;i5;i+)aij=n;n+;j=5,n=Q;for(i=1;i5;i+)aij=n;n+;for(i=0;i5;i+)for(j=0;j6;j+)coutaij ;coutendl;return 0; 编程实现数组的排序:将有

26、15个元素的整型数组按从小到大的次序排序。#includeusing namespace std;int main()int a15,i,j,temp;for(i=0;iai;for(j=0;j15;j+)for(i=j+1;iaj)temp=aj;aj=ai;ai=temp;for(i=14;i=0;i-)coutai ;coutendl;return 0; 编程求一组整数的最大公因子和最小公倍数。#includeusing namespace std;int main()int n,m,i,j,k,h;cinnm;if(nm)i=n;k=m;n=m;m=i;j=n;i=n;k=m;whil

27、e(m%n)!=0)j=m%n;m=n;n=j;h=(i/j)*(k/j)*j;cout最大公约数为:jendl;cout最小公倍数:hendl;return 0; 随机输入一组数组元素值,利用题使一个数组有序。然后随机输入一个数,用折半查找法在数组中查找,如在数组中,则输出元素在数组中的位置;如不在,则输出提示。 将两个字符串连接起来,不要用strcat。3.思考题 用数组存储数据,实现筛选法求素数问题的求解。要求求出2到1000之间的所有素数。注意: 筛选法求出2N间的所有素数的方法是:首先将这些数全部放入一个数组中,然后重复下面的操作直到数组为空为止: a.找出其中的最小数K,则K一定是

28、一个素数,因此可输出。 b.从数组中删除K及其所有倍数。#include #include #include void main()const int max_num=2000+1; /定义数组中的最大数,之所以定义2000+1是为了是数组元素下标与元素值相等int amax_num; int num, min, k, i, count=0;for(num=2;nummax_num;num+) /给数组初始化anum=num;num=2;for(min=anum;min=sqrt(max_num-1);) /初始化筛子为2,当筛子小于等于sqrt(max_num-1)即可for(k=2;k*m

29、inmax_num;k+) /筛除元素ak*min=0;num+;while(anum=0) /找到下一个筛子 num+;min=anum;for(num=2;nummax_num;num+) /输出质数 if(anum!=0) coutsetw(6)anum; count+; if(count%15=0) /控制每输出15个换一行 coutendl; coutendl; 判断一个二维数组是否有“鞍点”,即该位置上的元素在该行上最大,在该列上最小。如有,输出其行列号和值;若无,给出提示。(数组元素的值用scanf输入)#includeusing namespace std;#define N

30、2#define M 3int main() in t inout(int BM,int);/多维数组作为实参和形参,在对参数数组声明时,必须 指定第二维(即列)的大小,且应与实参的第二维的大小相同,第一维的大小可以指定,也可以不指定int ANM;int i,j,p=0;cout请输入数组ANM的元素:endl;for(i=0;iN;i+)for(j=0;jAij;coutANM=endl;for(i=0;iN;i+)for(j=0;jM;j+)coutAij ;coutendl;p=inout(A,p);/判断鞍点子函数if(p!=1) cout!数组Anm没有鞍点endl;return

31、0;int inout(int BM,int l)int i,j,max,q=0,h;for(i=0;iN;i+)/求各行最小值,并记下列下标 max=Bi0;for(j=0;jBij)max=Bij;q=j; int flag=0;for(h=0;h=Biq)flag=1;break;if(flag=0)cout数组Anm中的鞍点是Biq 位置是:第i行第q列endl;l=1;return l; 编写程序将一个16进制数转换为十进制。任意进制如何转换为十进制? 本实验内容(1) 习题所完成的功能是否有不完备之处?若有,请完备这个程序。实验四 函 数1.实验目的要求(1) 理解并掌握如何模块化

32、的用函数来构建程序。(2) 掌握定义函数的方法,了解函数的重载方法,了解内联函数的机制。(3) 掌握函数间传递信息的机制。(4) 掌握函数的嵌套调用(和递归调用)的方法。(5) 掌握全局变量和局部变量、动态变量和静态变量的概念和使用方法。2.实验内容(1)阅读下列程序,写出其运行结果,并指出其功能。 #include int hcf( int u , int v )int a,b,t,r;if (u v)t = u ;u = v ;v = t ;a = u ;b = v ;while ( ( r = b % a ) != 0 )b = a ;a = r ;return( a ) ;int lc

33、d( int u , int v , int h )return( u * v / h ) ;void main()int u , v , h , l ;cin u v ;h = hcf ( u , v ) ;cout “hcf=” h endl ;l = lcd ( u , v, h ) ;cout “lcd=” l endl ;输入:48,32找两个数的最大公约数和最小公倍数#include long fib ( int g )switch ( g )case 0 : return 0;case 1 :case 2 : return 1;return ( fib( g 1 ) + fib(

34、 g 2 ) ) ;void main ( )long k;k = fib ( 7 );cout “k=” k endl ;求Fibonacci数列第k位数的值#include int k = 1 ;void main()int i = 4 ;int fun (int);fun( i ) ;cout “(1) “ i , k endl ;fun( int m )m += k;k += m;char k = B;cout “(2)” char(k-A) endl ;cout “(3)” m , k endl ;# include # include void subp ( )static int

35、 x = 0 , y = 0 ; /*问题(1)*/int a, b;a = x y ; b = x + y ; cout setw(5) a setw(5) b endl ;cout setw(5) x setw(5) y endl ;int x , y ;void main()int a = 9,b = 3; x = a b ; y = a + b ;subp();cout setw(5) a setw(5) b endl ;cout setw(5) x setw(5) y endl ;1)运行结果是:2)如果问题(1)处语句改为static int x,y ; ,运行结果会发生改变么?为什么?不会改变(2)编写程序实现下列问题的求解。 求方程ax2+bx+c=0的根,用三个函数分别求b2-4ac大于0、等于0和小于0时的根,并输出结果。从主函数输入a、b、c的值。#include #include void main()double a,b,c,x1,x2,re,im,s;coutabc;coutax2+bx+c=0n;if (a=0)if(b=0)if(c=0) cout方程有无数组解.endl;else cout方程无解.endl;else x1=(-c)/b;cout方程解为:x10)x1=(-b+sqrt(s)/(2*a);x2=(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论