1.编辑、编译、连接和运用一个程序输出: “Hello,C++!”
“This is my first C++ program.\" 解:实验过程如下: 解:实验过程如下: #include cout<<\"Hello World!\\n\"; cout<<\"This is my first C++ program.\\n\"; system(\"pause\"); } 运行结果: 运行结果: 实验的感受:第一次上机进行程序操作,终于可以将课本的理论用在了实践。然而,在上机时,无论是对程序的编译还是程序的连接和运行都十分的生疏,仅仅是这个实验也用了一个多节课来完成。经过这次的实验,我对程序有了更多的了解,相信在将来的上机中,我会学到更多的程序编译。 实验,我对程序有了更多的了解,相信在将来的上机中,我会学到更多的程序编译。 实验二 C++基本数据类型与表达式 1、运行下面的程序,写处该程序的运行结果,体会i++与++i的差别。 的差别。 解:程序编译如下: 解:程序编译如下: #include int myage=20, yourage=30; cout<<\"I am\"< 2、找出下列程序的错误,并改正。 、找出下列程序的错误,并改正。 解:改正后的程序如下: 解:改正后的程序如下: #include using namespace std; void main() { float x; cout<<\"Input a real number:\"; cout<<\"x*x\"< int a,b; cout<<\"输入两个任意整数:\"; cin>>a>>b; cout<<\"a+b=\"<实验程序运行结果: 实验程序运行结果: 4、编程序,从键盘输入三个浮点数给a、b、c ,然后屏幕输出表达式b^2-4ac的结果。 的结果。 解:程序编译如下: 解:程序编译如下: #include { float a,b,c; cout<<\"请输入三个浮点数:\"; cin>>a>>b>>c; cout<<\"b*b-4*a*c=\"<运行结果: 运行结果: 5、设a=1,b=1,c=3,试编程序分别计算如下表达式的值,写成程序的运行结果: ,试编程序分别计算如下表达式的值,写成程序的运行结果: (1) b+=a+2*c%5 (2) b*=b=c=3 (3) a+=b+=c (4) a-=b=++c+2 解:(1).#include int a=1,b=1,c=3; b+=a+2*c%5; cout<<\"b+=a+2*c%5=\"<a*=b=c=3; cout<<\"a*=b=c=3=\"<cout<<\"a+=b+=c=\"<cout<<\"a-=b=++c+2=\"<运行结果: 运行结果: 6、编写一个计算圆的周长和面值的程序。 、编写一个计算圆的周长和面值的程序。 解:#include const float pi=3.14; float R=0,c=0,s=0; cout<<\"请输入圆的半径R=\"< cout<<\"圆的周长c=\"< 2、 用for循环编写程序,是其完成下面的功能。 循环编写程序,是其完成下面的功能。 (1)提示用户输入两个整数:firstNum和SecondNun(FirstNum一定要小于SecondNum). (2) 输出所有界于FirstNum和SecindNum之间的奇数。 之间的奇数。 (3)输出所有界于FirstNum和SecindNum之间的偶数的和。 之间的偶数的和。 (4)输出所有界于FirstNum和SecindNum之间的奇数的平方和。 之间的奇数的平方和。 解:#include void main() { int i,a,b; cout<<\"请输入两个整数FirstNum和SecondNum(FirstNum要比SecondNum小):\"; cin>>a>>b; if(a>=b) { cout<<\"您所输入的两个数不满足条件,请重新输入\"< //两数之间的奇数 两数之间的奇数 cout<if(i%2!=0) if(i%2!=0) cout<//两数之间的偶数的和 两数之间的偶数的和 long sum=0; for(i=a+1;iif(i%2==0) sum=sum+i; } cout<//两数之间的奇数的平方和 两数之间的奇数的平方和 long qsum=0; for(i=a+1;iqsum=qsum+i*i; if(i%2!=0) if(i%2!=0) } cout<} 3、使用while循环编写上题。 循环编写上题。 解:#include using namespace std; void main() { int i,a,b; cout<<\"请输入两个整数FirstNum和SecondNum(FirstNum要比SecondNum小):\"; cin>>a>>b; if(a>=b) { cout<<\"您所输入的两个数不满足条件,请重新输入\"< //两数之间的奇数 两数之间的奇数 cout<while(i} //两数之间的偶数的和 两数之间的偶数的和 long sum=0; i=a+1; while(icout<//两数之间的奇数的平方和 两数之间的奇数的平方和 long qsum=0; i=a+1; while(icout<运行结果: 2、编写程序输出如下图形(注:用循环语句完成) 、编写程序输出如下图形(注:用循环语句完成) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # 解:程序编写 解:程序编写 #include int i,k,s; for(i=0;i<5;i++) { for(s=0;s<4-i;s++) cout<<\" \"; //输出(4-i)个空格 个空格 for(k=0;k<2*i+1;k++) cout<<\"#\"; //输出(2i+1)个#号 )个#号 cout< for(s=0;s<4-i;s++) cout<<\" \"; //输出(4-i)个空格 个空格 for(k=0;k<2*i+1;k++) cout<<\"#\"; //输出(2i+1)个#号 )个#号 cout< 3、一只母鸡5元钱,一只公鸡3元钱,三只小鸡1元钱,用100元钱买100只鸡,有多少中卖法?编写程序输出所有可能的结果。 序输出所有可能的结果。 解:#include int A,B,C,D=0; //A表示母鸡数,B表示公鸡数,C表示小鸡数,D表示买的方法。 表示买的方法。 for(A=0;A<=100;A++) for(B=0;B<=100;B++) for(C=0;C<=100;C++) { if(A+B+C==100) if(5*A+3*B+1.0/3.0*C==100) { D=D+1; cout<<\"母鸡共A=\"<\"< cout<<\"共有D=\"< 4、将下列程序补充完整,用以确定百货商店的顾客是否已经超出信用卡的透支额度。对于每位顾客,以下信息是已知的: 信息是已知的: (a)信用卡的账号(int accountNumber) (b) 月初差额(double balance) (c) 本月该顾客购买商品的金额(double charges) (d) 本月顾客账户中的存款(double creduts) (e) 允许的信贷额度(double limit) 解:#include { int accountNumber; double balance,charges,credits,limit; cout<<\"Enter account number(-1 to end):\" < { cout<<\"Enter beginning balance:\"; cin>>balance; //输入月初差额 输入月初差额 cout<<\"Enter total charges:\"; cin>>charges; //输入本月购买商品的金额 输入本月购买商品的金额 cout<<\"Enter total credits:\"; cin>>credits; //输入本月存款 输入本月存款 cout<<\"Enter credit limit:\"; cin>>limit; //输入信贷额度 输入信贷额度 if(balance+charges-credits>limit) //当超过了信贷额度时显示帐号、信用额度、新的差额、并输出信息“Credits Limit Exceeded.” { cout<<\"Accout: \"< cout< 实验感想:这次的上机操作,我深深的体会到了C++程序流程控制真的很难,在同学的帮助下,我懂得了for和while在编写程序的不同,熟练了if和switch的选择结构,也加深了i++的了解,重要的是,我学到了在程序设计中使用循环的方法。当然,这些都是很基础的东西,但也说明了我的进步与收获。 了在程序设计中使用循环的方法。当然,这些都是很基础的东西,但也说明了我的进步与收获。 实验四 C++函数与程序结构 1、编写函数,令其在屏幕上显示一个由“#”围成的空心正方形,该正方形的边长有参数side指定。例如:如果side的值是5,则函数就会显示: ,则函数就会显示: # # # # # # # # # # # # # # # # 如果side的值是3,这函数就会显示: ,这函数就会显示: # # # # # # # # 解:#include Would you like to play again (yes or no)? 用户如果输入n或N,程序终止;用户如果输入y或Y,则重新产生随机数,并开始信的一轮游戏。 ,则重新产生随机数,并开始信的一轮游戏。 解:程序编写如下: 解:程序编写如下: #include void yx(int x,int y); int i,j; cout<<\"Iuput i:\"< cout<<\"j取得的随机数是:\"< yx(i,j); } void yx(int a,int b) { if (a==b) { cout<<\"Excllent!You guessed the number!\"< if (k=='y') { cout<<\"Input i again:\"< if (acout<<\"j>i\"< } } 运行结果: 运行结果: 3、在一个多层停车库停车3小时,最低收费为$2.00,如果超出3小时,没小时会增加$1.50的费用。停车24小时,最高收取费用为$10.00.编写程序来计算应该收取的费用。 编写程序来计算应该收取的费用。 解:#include using namespace std; void main() { float CalCharges(float); //声明CalCharges(float)函数 函数 float car1,car2,car3,charge1,charge2,charge3; float totalhours,totalmoney; cout<<\"Enter the hours parked of three cars:\"; cin>>car1>>car2>>car3; charge1=CalCharges(car1); //调用CalCharges(float)函数计算第一辆小车的停车费 函数计算第一辆小车的停车费 charge2=CalCharges(car2); charge3=CalCharges(car3); totalhours=car1+car2+car3; //计算三辆车的总的时间 计算三辆车的总的时间 totalmoney=charge1+charge2+charge3; //计算总的费用 计算总的费用 cout< { const float hourL=3.0; //3小时 小时 const float hourH=24.0; //最高24小时 小时 const float Low=2.00; //最低收费 最低收费 const float Phour=0.50; //超过3小时后,每小时的收费 小时后,每小时的收费 const float High=10.00; //24小时及24小时后的收费(最高收费) 小时后的收费(最高收费) if(carn<=hourL) return Low; else if(carn 4、编写函数用递归方法求1+2+3+...+n的值,在主程序中提示输入整数n。 解:程序编辑: 解:程序编辑: #include int i; cout<<\"请输入一个正整数 请输入一个正整数 n: \"; cin>>i; cout<<\"从1累加到\"<int fn1(int i) { if (i==1) return 1; else return (i+1)*i/2; } 运行结果: 运行结果: 5、编写一个递归结构的函数,求1!+2!+3!+4!+....+15!的值。 的值。 解:#include int i,a; long sum=0; cout<<\"请输入一个正整数:\"; cin>>i; for(a=1;a<=i;a++) { sum=sum+nj(a); } cout<<\"从1!累加到\"<long nj(int i) { if (i==1) return 1; else return i*nj(i-1); } 6、编写一个递归函数power(double base,double esponent),t条用该函数时,返回结果为: 条用该函数时,返回结果为: Base exponent 例如:power(3,4)=3*3*3*3.前提是exponent是一个大于或等于1的整数。 的整数。 解:程序编辑: 解:程序编辑: #include double power (double base,int exponent); void main() { double a,b; cout<<\"Input a b: \"< cout< int i,k=1; if (exponent<1) cout<<\"Input exponent Error\"< 运行结果: 运行结果: 实验感想:通过这次实验的操作练习后,我从中体会到了函数的定义、声名、以及调用的一些方法还能够编制并测试函数。,当然,更重要的是,我还掌握了局部变量、全局变量、和静态变量。动态变量的一些使用方法。现在,我对C++函数与程序结构也有了更进一步的了解,相信我能做的更好。同时,我感到学习C++也越来越难了,以后还得更加努力。 难了,以后还得更加努力。 实验五: 数组 1、把有10个整数的元素的数组用冒泡排序法和选择排序法按有小到大升序排列。 解:程序编写: 解:程序编写: #include { int array[]={36,6,49,7,76,2,28,33,86,58}; int len=sizeof(array)/sizeof(int); //元素个数 元素个数 for (int i=0;i void bubble(int a[],int size) //冒泡排序 冒泡排序 { int i,temp; for (int pass=1;pass {temp=a[i];a[i]=a[i+1];a[i+1]=temp;} for (i=0;i fun(int a[3][3],int t[3][3]) {int i,j; for(i=0;i<3;i++) for(j=0;j<3;j++) t[i][j]=a[i][j]+a[j][i];} void main() {int i,j; int a[3][3]={1,2,3,4,5,6,7,8,9},t[3][3]; fun(a,t); printf(\"A:\\n\"); for(i=0;i<3;i++) {for(j=0;j<3;j++) printf(\"%3d\ printf(\"\\n\"); } printf(\"\\nA':\\n\"); for(i=0;i<3;i++) {for(j=0;j<3;j++) printf(\"%3d\ printf(\"\\n\"); } printf(\"\\nB:\\n\"); for(i=0;i<3;i++) {for(j=0;j<3;j++) printf(\"%3d\ printf(\"\\n\"); } } 运行结果: 运行结果: 3、以下程序的输出结果是: 、以下程序的输出结果是: 解:程序编写: 解:程序编写: #include int i,k,a[10],p[3]; k=5; for(i=0; i<10; i++) a[i]=i; for(i=0; i<3; i++) p[i]=a[i*(i+1)]; for(i=0; i<3; i++) k+=p[i]*2; cout< 4、17个人围成一圈,编号为:个人围成一圈,编号为:1到17,从一号开始报数,报到从一号开始报数,报到3的倍数的人离开,一直数下去,的倍数的人离开,一直数下去,直到最后只剩下1人为胜利者。求此人的编号。 人为胜利者。求此人的编号。 解:编写程序: 解:编写程序: #include const int num=17; int a[num],i; int b; cout<<\"请输入要数到第几个人时,那个人离开:(b<\"< for( i=0;i if (c==num) break; cout<cout <<\"\\n第\"<运行结果: 运行结果: 5、某公司生产很多不同类的玩具,每种都有一个商品编号,编写程序,读入每种玩具的商品编号和价格,并把他们分别存储在number数组和price数组中,程序应该允许用户执行以下操作。 (1)根据用户输入的商品号查找并显示对应商品的价格。 (2)打印每种商品的商品好合对应的价格。 解:(1)程序编写: )程序编写: #include { const int n=2; //n表示该公司产品的总的种类个数,假设有10种 int number[n]; float price[n]; int i,cx; //cx用于保存要查找的产品编号 用于保存要查找的产品编号 char chaxun='y'; for(i=0;i cout<<\"共有\"< cout<<\"请输入要查找的产品编号:\"; cin>>cx; for(i=0;i {cout<<\"该产品的价格为:\"< 运行结果: 运行结果: 实验感想: 实验感想: 通过这次的实验,熟悉了基本的数据类型,及便是形式和取值范围;也了解了一维数组和二维 通过这次的实验,熟悉了基本的数据类型,及便是形式和取值范围;也了解了一维数组和二维 数组的定义、赋值和输入输出方法;也对字符数组和字符串数组的差异。然而,本节的实验中 数组的定义、赋值和输入输出方法;也对字符数组和字符串数组的差异。然而,本节的实验中 有关数组的一些算法却很是生疏,希望通过多上机操作可以解决这一问题。 有关数组的一些算法却很是生疏,希望通过多上机操作可以解决这一问题。 1、请改正下列程序存在的问题。 、请改正下列程序存在的问题。 解:程序修改如下: 解:程序修改如下: #include int *a = Fn1(); cout << \"The value of a is: \" << *a; delete a; return 0; } int* Fn1() { int * p = new int (5); return p; } 运行结果: 运行结果: 实验六 指针与引用 2、读下列程序 、读下列程序 (1)说出程序的功能; )说出程序的功能; (2)将其改写成传递引用参数; )将其改写成传递引用参数; (3)将findmax()函数改写成非递归函数(重新考虑参数个数) 解:(1)该程序是用于数组与指针的使用方法,找数组中的最大值。 (2)程序改编为: )程序改编为: #include void findmax(int a[],int n,int i,int &); int main() { int a[size]; int n=0; cout<<\"请输入\"< findmax(a,size,0,n);