程序设计基础实验报告.docx
- 文档编号:25078697
- 上传时间:2023-06-04
- 格式:DOCX
- 页数:47
- 大小:40.57KB
程序设计基础实验报告.docx
《程序设计基础实验报告.docx》由会员分享,可在线阅读,更多相关《程序设计基础实验报告.docx(47页珍藏版)》请在冰豆网上搜索。
程序设计基础实验报告
《程序设计基础》
实验报告
专业班级:
姓名:
学号:
实验一面向过程的简单程序设计
1.实验目的要求
(1)使用C++语言编写简单的计算机程序,掌握C++程序从编辑、编译到运行的全过程,初步了解C++程序的特点。
(2)掌握C++语言的数据类型(包括对各种数据类型变量的定义、初始化、赋值等)、运算符和表达式的使用。
(3)掌握赋值语句的使用。
(4)掌握数据的输入输出方法。
2.实验内容
(1)设计简单程序,分别计算下列表达式,式中变量由键盘输入,输出表达式的值。
<1>
<2>
<3>sinX+cosX+tan-1X
<4>ex+y+ex-y<5>log10(1+
)<6>
+
(其中
表示取不大于a的最大整数)。
<1>
#include
usingnamespacestd;
intmain()
{
floatx,a,b,c,d,e;
cin>>x>>a>>b>>c>>d;
e=x+(a+b)/(c-d);
cout< return0; } <2> #include #include usingnamespacestd; intmain() { doublex,y; cin>>x; y=sqrt(1+1/(x+1/(x+1))); cout< return0; } <3> #include #include usingnamespacestd; intmain() { doublex,y; cin>>x; y=sin(x)+cos(x)+1/tan(x); cout< return0; } <4> #include #include usingnamespacestd; intmain() { doublex,y,z; cin>>x>>y; z=exp(x+y)+exp(x-y); cout< return0; } <5> #include #include usingnamespacestd; intmain() { doublex,y; cin>>x; y=log(1+sqrt(1+x*x)); cout< return0; } <6> #include #include usingnamespacestd; intmain() { doublea,b,c; intd; cin>>a>>b; c=fabs(a*a-b*b); d=int(a-b); if(a-b>=0||d==a-b) c+=d; else c+=d-1; cout< return0; } (2)阅读下列程序,写出(由指定的输入)所产生的运行结果,并指出其功能。 <1> #include voidmain() { charch; cin>>ch; ch=(ch>=’A’&&ch<=’Z’)? (ch+32): ch; ch=(ch>=’a’&&ch<=’z’)? (ch–32): ch; cout< } 将大小写字母进行转换 <2> #include voidmain() { intm; floatx; boolbi,br; cout<<"\nintm="; cin>>m; bi=m>1000; cout<<"\nfloatx="; cin>>x; br=x<=1e3; cout< } 分别输入10040,20003000,10001000,2000300,1004000运行。 输出结果为: 01,10,01,11,00 程序用来判断m和n与1000的大小关系 (3)编写程序实现下列问题的求解。 <1>根据随机从键盘输入的圆半径值,求圆的周长和半径并输出。 #include usingnamespacestd; intmain() { intr,l,s,pi=3.1415926; cout<<"Inputanmber: "< cin>>r; l=2*pi*r; s=pi*r*r; cout<<"圆的周长为: "< cout<<"圆的面积为: "< return0; } 实验二控制结构程序设计 1.实验目的要求 (1)理解基本的解题技巧,掌握用自顶向下、逐步求精的过程设计算法。 (2)熟练掌握if/else语句和switch语句的使用。 (3)熟练掌握while语句、do/while语句和for语句的使用以及区别。 (4)掌握break和continue程序控制语句的使用。 2.实验内容 (2)编写程序实现下列问题的求解。 <1>求解下面函数的值。 ex+yx<0,y<0 z=ln(x+y)1≤x+y〈10 log10|x+y|+1其它情况 <1> #include #include usingnamespacestd; intmain() { doublex,y,z; cin>>x>>y; if(x<0&&y<0)z=exp(x+y); elseif(x+y>=1&&x+y<10)z=log(x+y); elsez=log10(fabs(x+y)+1); cout< return0; } <2>编程求解下列各计算式: 1)S= =1+2+3+…+100 (1) #include usingnamespacestd; intmain() { inti=1,sum=0; while(i<=100) {sum=sum+i; i++; } cout< } 2)S= =1! +2! +…+7! (2) #include usingnamespacestd; intmain() { intn,s=1,c=0; for(inti=1;i<=7;i++) {for(n=1;n<=i;n++) { s*=n; } c+=s; s=1; } cout< return0; } 3) S=1×2+3×4+5×6+…+39×40 (3) #include usingnamespacestd; intmain() { ints=0; for(inti=1;i<=39;i+=2) s=i*(i+1)+s; cout< return0; } <3>打印下面图形。 1 131 13531 1357531 135797531 ………………… 13……21………31 #include usingnamespacestd; intmain() { intn,i,j=25,k=1,a=1,b; for(i=1;i<=11;i++){ for(n=1;n<=j;n++){ cout<<""; } b=k; while(a cout< a+=2; } a=1; while(b>1){ cout< b-=2; } cout< for(n=1;n<=j;n++){ cout<<""; } j-=2; k+=2; cout< } return0; } 实验三数组 1.实验目的要求 (1)掌握一维数组和二维数组的定义、初始化赋值、元素引用的方法。 (2)初步了解数组名与地址的关系。 (3)掌握字符数组和字符串函数的使用。 (4)掌握与数组有关的算法(特别是排序和查找算法)。 2.实验内容 (2)编写程序实现下列问题的求解。 <1>编程产生下列数组,并输出。 ⑴一维数组 1)(149162536496481100) 2)(13610152128364555) 3) (123581321345589) <1> (1) #include usingnamespacestd; intmain() { inta[10]; for(inti=1;i<=10;i++) { a[i-1]=i*i; cout< } cout< return0; } (2) #include usingnamespacestd; intmain() { inta[10],j=0; for(inti=1;i<=10;i++){ j+=i; a[i-1]=j; cout< } cout< return0; } (3) #include usingnamespacestd; intmain() { inta[10],j=0; a[0]=1; a[1]=2; for(inti=3;i<=10;i++) { a[i-1]=a[i-3]+a[i-2]; } for(i=0;i<=9;i++) cout< cout< return0; } <2>1)#include usingnamespacestd; intmain() { inta[6][6],b=0; for(inti=0;i<6;i++){ for(intj=0;j<6;j++){ if(b>5){ b=0; }else{ b++; } a[i][j]=b; } b=i+1; } for(i=0;i<6;i++){ for(intj=0;j<6;j++) cout< cout< } return0; } 2)#include usingnamespacestd; intmain() { inta[100][100],b=0,n; cin>>n; for(inti=0;i for(intj=0;j if(b>n-2){ b=0; }else{ b++; } a[i][j]=b; } b=i+1; } for(i=0;i for(intj=0;j cout< cout< } return0; } <3>编程求一组整数的最大公因子和最小公倍数。 #include usingnamespacestd; intmain() { intn,m,i,j,k,h; cin>>n>>m; if(n>m) { i=n; k=m; n=m; m=i; } j=n; i=n; k=m; while((m%n)! =0) { j=m%n; m=n; n=j; } h=(i/j)*(k/j)*j; cout<<"最大公约数为: "< cout<<"最小公倍数: "< return0; } 实验四函数 1.实验目的要求 (1)理解并掌握如何模块化的用函数来构建程序。 (2)掌握定义函数的方法,了解函数的重载方法,了解内联函数的机制。 (3)掌握函数间传递信息的机制。 (4)掌握函数的嵌套调用(和递归调用)的方法。 (5)掌握全局变量和局部变量、动态变量和静态变量的概念和使用方法。 2.实验内容 (2)编写程序实现下列问题的求解。 <1>求方程ax2+bx+c=0的根,用三个函数分别求b2-4ac大于0、等于0和小于0时的根,并输出结果。 从主函数输入a、b、c的值。 #include #include voidmain() { doublea,b,c,x1,x2,re,im,s; cout<<"inputa,b,c\n"; cin>>a>>b>>c; cout< if(a==0) { if(b==0) { if(c==0) cout<<"方程有无数组解."< else cout<<"方程无解."< } else{ x1=(-c)/b; cout<<"方程解为: "< } } else { if(s>0){ x1=(-b+sqrt(s))/(2*a); x2=(-b-sqrt(s))/(2*a); cout<<“方程的两个根为: x1="< } else{ re=-b/(2*a); s=-s; im=sqrt(s)/(2*a); cout<<“方程的两个根为: x1="< cout<<"x2="< <<"i"< } } } } <2>用函数实现将一个以字符串形式表示的十六进制数转换为一个十进制整数。 例如,输入”A2”转换为162。 #include inthehe(inta) { intb,c; intA,B,C,D,E,F; b=1,c=1; while(c! =0) { c=a/16; b=a%16; a=c; switch(b) { case1: cout<<"1"; break; case2: cout<<"2"; break; case3: cout<<"3"; break; case4: cout<<"4"; break; case5: cout<<"5"; break; case6: cout<<"6"; break; case7: cout<<"7"; break; case8: cout<<"8"; break; case9: cout<<"9"; break; case10: cout<<"A"; break; case11: cout<<"B"; break; case12: cout<<"C"; break; case13: cout<<"D"; break; case14: cout<<"E"; break; case15: cout<<"F"; break; } } return0; } voidmain() { intx; cin>>x; hehe(x); cout<<"(请从右往左读)"< } <4>编写出判断一个整数是否为素数的函数,并求出在2000以内的有十个以上的所有连续的非素数组。 #include #include intPrime(intn) {inti,k=(int)sqrt(n)+1; for(i=2;i if(n%i==0)break; if((i==k))return1; elsereturn0; } intmain() { intm,i,j,h=0,SUM=0; inta,b; cout<<"\ninputa,b: "; cin>>a>>b; for(m=a;m<=b;m++) {h=0; if(Prime(m)==1) {for(i=1;;i++) {if((Prime(m+i)==0)&&(m+i<=b))h++; elsebreak; } m=m+i; if(h>=9){SUM++; cout< for(j=i-1;j>=-1;j--)cout< cout<<"\n"; } } elsecontinue; } cout<<"\nThetotalis"< return0; cin>>m; } 实验五指针 1.实验目的要求 (1)掌握指针的概念,学会定义和使用指针变量。 (2)学会使用数组指针和指向数组的指针变量。 (3)学会使用字符串指针和指向字符串的指针变量。 (4)了解指向指针的指针的概念以及其使用方法。 (5)掌握指针、引用、数组做函数参数的传递机制。 (6)*学会使用指向函数的指针变量。 2.实验内容 (1)编写程序实现下列问题的求解。 〈1〉将一个3*3的矩阵转置,用一个函数实现。 在主函数中用scanf输入以下矩阵元素: {2,4,6,8,10,12,14,16,18}。 将数组名作为函数参数。 函数调用后在主函数中输出已转置的矩阵。 #include voidzhuanzhi(int(*p)[3]){ inti,j,t; for(i=0;i<3;i++) for(j=i;j<3;j++){ t=p[i][j];p[i][j]=p[j][i];p[j][i]=t; } } intmain(){ inta[3][3]={2,4,6,8,10,12,14,16,18}; inti,j,t; zhuanzhi(a); for(i=0;i<3;i++) { for(j=0;j<3;j++)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 基础 实验 报告