实验教程编程答案-副本_第1页
实验教程编程答案-副本_第2页
实验教程编程答案-副本_第3页
实验教程编程答案-副本_第4页
实验教程编程答案-副本_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

1、实验二 输入/输出与顺序结构4. 编程题 输入学生的语文、数学、英语、物理4门课程的成绩,计算该学生的总成绩和平均成绩并输出。#include <iostream.h>void main() double eng, chin,math,phy,sum,aver;cout<<"please input 4 scores: "cin>>eng>>chin>>math>>phy; /输入成绩sum=eng+chin+math+phy; /计算总成绩aver=sum/4; /计算平均分cout<<&

2、quot;Sum="<<sum<<endl<<"tAverage="<<aver<<endl; /输出 编写程序,从键盘输入一个大写英文字母,输出对应的小写字母。#include <iostream.h>void main()char c1,c2;cout<<"Please input an upper letter: "cin>>c1;c2=c1+32;cout<<"c1="<<c1<<&qu

3、ot;tc2="<<c2<<endl;实验三 选择结构程序设计3. 编程题XX 由键盘输入三个字符,输出其中的最大者。XX【源程序】#include <iostream.h>void main() char x,max; cout<<"Please input three characterss: " cin>>x; max=x; cin>>x; if (x>max) max=x; cin>>x; if (x>max) max=x; cout<<"

4、max = "<<max<<endl; 编程求下面符号函数值:y =0 (x=0)1 (x>0)-1 (x<0)【源程序】#include <iostream.h>void main()int x,y;cout<<"Please input x= "cin>>x;if (x>0)y=1;else if (x=0)y=0;elsey=-1;cout<<"y="<<y<<endl; 计算奖金。设企业利润为L,当企业利润L不超过5000元

5、时,奖金为利润的1.5%,当5000L10000元时,超过5000元部分奖金为2%(5000元以下仍按1.5%);当10000L20000元,除10000以下的按上述方法计算外,超过10000元部分按2.5%计算奖金;如果20000L50000元,超过20000元部分按3%计算奖金;当50000L100000元时,超过50000元部分按3.5%计算奖金;当L超过100000元时,超过100000元部分按4%计算奖金。由键盘输入L的值,编程计算相应的奖金并输出。【源程序】#include<iostream.h>void main()double L,S;cout<<&qu

6、ot;please input L="cin>>L;if(L<5000) S=L*0.015;else if(L<10000)S=75+(L-5000)*0.02; else if(L<20000)S=175+(L-10000)*0.025;else if(L<50000)S=175+250+(L-20000)*0.03;else if(L<100000)S=175+250+900+(L-50000)*0.035;elseS=175+250+900+1750+(L-100000)*0.04;cout<<"S="

7、<<S<<endl; 输入年龄,输出所处人群:9岁以下为儿童,输出A;1019为少年,输出B;2029为青年,输出C;3049为中年,输出D;50以上为老年,输出E。【源程序】#include <iostream.h>void main()int age;cout<<"Please input age: "cin>>age;switch(age/10)case 0:cout<<"A-儿童n"break;case 1:cout<<"B-少年n"break

8、;case 2:cout<<"C-青年n"break;case 3:case 4:cout<<"D-中年n"break;default:cout<<"E-老年n"break;实验四 循环结构程序设计4编程题 输入n,求1+2+3+n的和。 #include<iostream.h>void main() int i,n;double sum=0;cin>>n;for(i=1;i<=n;i+) sum+=i;cout<<"1+2+3+.+"&

9、lt;<n<<"="<<sum<<endl;实验五 典型结构程序设计2编程(1)输入10个字符,输出其中的最大者。#include<iostream.h>void main()char ch,maxchar;cout<<"please input ten character:"cin>>ch;maxchar=ch;for(int i=1;i<10;i+) cin>>ch; if(ch>maxchar)maxchar=ch;cout<<&quo

10、t;maxchar="<<maxchar<<endl;(2)一个球从100m高度自由落下,每次落地后反弹回原来高度的一半,再落下,再反弹。求它在第10次落地时,共经过多少米?第10次反弹多高?分析:共经过: 100*(1+1/2+1/4+1/8-+1/1024) 米第10次:100/1024米#include<iostream.h>void main()double s=1,t=1,sum,t10;int i;for(i=1;i<=10;i+)t=2*t;s=s+1/t;t10=100/t;sum=100*s;cout<<&quo

11、t;sum="<<sum<<"tt10="<<t10<<endl;(4)编写程序,对输入的一批整数统计出正数的个数、负数的个数、奇数的个数、偶数的个数,要求所统计的整数由键盘输入,以0作为输入数据结束的标志。#include<iostream.h>void main()int a=0,b=0,c=0,d=0,x;cin>>x;while(x!=0)if(x>0)a+=1;if(x<0)b+=1;if(x%2)c+=1;else d+=1;cin>>x;cout<&

12、lt;"正数个数="<<a<<endl;cout<<"负数个数="<<b<<endl;cout<<"奇数个数="<<c<<endl;cout<<"偶数个数="<<d<<endl;实验六 * 输入10个学生的成绩,求其平均值,输出最高成绩,并统计低于平均值的人数。 * 注: LT是小于的意思,less than */#include <iostream.h>const dou

13、ble LOWER = - 10000;void main()double score10;double highestScore = LOWER;double average = 0;double numLTaverage = 0;/输入、求最高分、求总分for (int i = 0; i < 10 ; + i)cout << "Please input the score ( " << i + 1 << "/10):"cin >> scorei;if ( highestScore < sco

14、rei ) highestScore = scorei;average += scorei;average /= 10;/求成绩低于平均分的人数for ( i = 0; i < 10; + i)if ( scorei < average ) + numLTaverage ;cout << "The average score is " << average << endl;cout << "The highest score is " << highestScore <<

15、 endl;cout << "The number of LT average is " << numLTaverage << endl;/* * 分别用冒泡法和选择法对输入的10个整数按由大到小排序。 * 冒泡法参见课本第四章课后作业第四题 */#include <iostream.h>void main()int myArray10;int outer, inner;int imax;for ( int i = 0; i < 10 ; + i )cout << "Input a number:&

16、quot; ;cin >> myArrayi;for ( outer = 0 ; outer < 10 ; + outer)/在下标位outer到9之间的元素中寻找最大值imax = outer ;for ( inner = outer + 1; inner < 10 ; + inner)if ( myArrayimax < myArrayinner ) imax = inner;/将最大值与下标为outer的元素交换int temp = myArrayouter;myArrayouter = myArrayimax;myArrayimax = temp;/输出f

17、or ( i = 0; i < 10 ; + i )cout << myArrayi << ' 'cout << endl;/* * 使用折半查找法,在给定的数组中查找某个数据。 */#include <iostream.h>const int N = 10;void main()int myArrayN = 1, 5, 8, 13, 16, 34, 67, 78, 90, 100;int iSearch;cout << "Please tell me the number which you want

18、 to search: " ;cin >> iSearch;int low = 0;int high = N - 1;int mid;/开始二分查找while ( low <= high )mid = ( low + high ) / 2;if ( myArraymid = iSearch ) break;else if ( myArraymid < iSearch )low = mid + 1;elsehigh = mid - 1;/判断是否找到if ( myArraymid = iSearch )cout << "We have fo

19、und the number." << endl;elsecout << "We havn't found the number." << endl;/* * 按杨辉三角形的规律打印以下的数据(要求只打印出10行)。 * 1 * 1 1 * 1 2 1 * 1 3 3 1 * 1 4 6 4 1 * 1 5 10 10 5 1 * */#include <iostream.h>void main()int yangHui1010;yangHui00 = yangHui10 = yangHui11 = 1;fo

20、r ( int i = 2; i < 10 ; + i )yangHuii0 = yangHuiii = 1;for ( int j = 1 ; j < i ; + j )yangHuiij = yangHuii - 1j + yangHuii - 1j - 1;for ( i = 0 ; i < 10 ; + i )for (int j = 0; j <= i ; + j )cout << yangHuiij << 't'cout << endl;/*XXX 编写程序统计某班英语、语文、数学3门课程的成绩, * 学生

21、人数与成绩由键盘输入,要求统计出每门课程全班 * 的总成绩和平均成绩以及每个学生三门课程的总成绩和 * 平均成绩。 */#include <iostream.h>void main()/由用户输入学生人数int numStu;cout << "Please input the number of students: "cin >> numStu;/根据用户输入的人数建立数组,其中0-2列为三门课成绩,最后一列是总分。/最后添加一行用来存储总分。int (*p)4;p = new intnumStu + 14;/将总分置0pnumStu0

22、= pnumStu1 = pnumStu2 = 0;for ( int i = 0 ; i < numStu ; + i )/将每个人的总分置0pi3 = 0;cout << "ID is " << i + 1 << ":n"/输入英语成绩cout << "Please input the score of Eng: " ;cin >> pi0;pi3 += pi0;pnumStu0 += pi0;/输入物理成绩cout << "Please in

23、put the score of Phy: " ;cin >> pi1;pi3 += pi1;pnumStu1 += pi1;/输入英语成绩cout << "Please input the score of Mat: " ;cin >> pi2;pi3 += pi2;pnumStu2 += pi2;/输出for ( i = 0 ; i < numStu ; + i )cout << "ID " << i + 1 << ":n"cout <&

24、lt; "The sum is " << pi3 ;cout << ".tThe average is " << pi3/3.0 ;cout << endl;cout << "Eng: sum=" << pnumStu0 << ",average=" << pnumStu0/double(numStu);cout << "nPhy: sum=" << pnumStu1 <

25、< ",average=" << pnumStu1/double(numStu);cout << "nMat: sum=" << pnumStu2 << ",average=" << pnumStu2/double(numStu);delete p;/* * 编写程序求对矩阵进行转置,即将元素的行列位置交换。 */#include <iostream.h>void main()int myMatrix44;/输入for ( int i = 0; i <

26、 4; + i )for ( int j = 0; j < 4; + j)cout << '(' << i + 1 << ',' << j + 1 << "):"cin >> myMatrixij;/输出转置前的数组cout << "Before exchange:n"for ( i = 0; i < 4; + i )for ( int j = 0; j < 4; + j)cout << myMatrixij

27、<< 't'cout << endl;/转置for ( i = 0 ; i < 4 ; + i)for ( int j = 0 ; j < i ; + j)/* * 编写程序求两个矩阵的乘积,若矩阵ANM与BMK相乘, *则得到矩阵C,其行列数为N×K。注意A的列数与B的行数相同 *,才可以进行乘法操作。 */#include <iostream.h>const int N = 3;const int M = 4;const int K = 5;void main()/定义数组int aNM,bMK,cNK;/输入数组A

28、cout << "Matrix A:n"for ( int i = 0; i < N; + i)for ( int j = 0; j < M; + j)cout << '(' << i + 1 << ',' << j + 1 << ")/"cout << '(' << N << ',' << M << "):"cin >&g

29、t; aij;/输入数组Bcout << "Matrix B:n"for ( i = 0; i < M; + i)for ( int j = 0; j < K; + j)cout << '(' << i + 1 << ',' << j + 1 << ")/"cout << '(' << M << ',' << K << "):"c

30、in >> bij;/计算C,并输出cout << "Matrix C=AXB:n"for ( i = 0; i < N; + i)for ( int j = 0; j < K; + j)cij = 0;for (int k = 0 ; k < M ; + k)cij += aik * bkj;cout << cij << 't'cout << endl;int temp = myMatrixij;myMatrixij = myMatrixji;myMatrixji = temp;

31、/输出转置后的数组cout << "After exchange:n"for ( i = 0; i < 4; + i )for ( int j = 0; j < 4; + j)cout << myMatrixij << 't'cout << endl;实验七 数组与指针(一)4编写程序并上机调试运行 编写程序,输入5个字符串,输出其中最大者。要求使用二维字符数组及字符串函数。#include <iostream.h>#include<string.h>const int N=

32、3;void main()char aN20;int i,max=0;for(i=0;i<N;i+)cin.getline(ai,20);for(i=1;i<N;i+)if(strcmp(ai,amax)>0)strcpy(amax,ai);cout<<amax<<endl; 编写程序,将一个字符串中的数字字符都删除。#include <iostream.h>void main()char a20;int i=0,j=0;cout<<”Please input the characters: ”;cin.getline(a,20

33、);for(i=0;ai!='0'i+)if(ai<'0'|ai>'9')aj+=ai;aj='0' cout<<a<<endl;XXXXX 编写程序,输入一行字符,统计其中有多少个单词,单词之间用一个或多个空格分隔。#include <iostream.h>void main()char a100;int i,num=0; cout<<"Please input the characters:n"cin.getline(a,100);for(i=0;

34、ai!='0'i+)while(ai=' ')i+;num+;while(ai!=' ')i+;cout<<"The number of the words are: "<<num;实验八 数组与指针(二)4编写程序并上机调试运行 编写程序,当输入17(表示星期几)时,显示相应的星期的英文名称,输入其它整数时则显示错误信息。#include"iostream.h"const int M = 2;const int N = 3;void main()char *p7 = "M

35、onday", "Tuesday", "Wednesday", "Thirsday","Friday", "Saturday", "Sunday"char num;for(;)cout<<"Please input a number:"cin>>num;if(num < '1' | num >'7')cout<<"Error!"break;cout

36、<<pnum - 49<<endl;实验九 函数及其调用2. 编程题 编写一个判断素数的函数,在主函数中由键盘输入整数的范围,并给出在该范围内的所有素数。源程序为:int fun(int n);void main() int m1,m2;cout<<"Please input the range of integer numbers:n"cin>>m1>>m2; for(int i=m1;i<m2;i+) if(fun(i) cout<<i<<" t" int fu

37、n(int n) int i; for(i=2;i<n;i+) if(n%i=0) return 0; return n; XXXXXX 编写一个函数,根据给定的年、月、日输出该日是该年的第几天。在主函数中调用该函数并输出结果,从键盘输入年、月、日的值。#include<iostream.h>int fun(int,int,int);void main()int year,month,day;cout<<"please input year,month,day:"cin>>year>>month>>day;w

38、hile(1)if(year>0&&month>=1&&month<=12&&day>=1&&day<=31)cout<<year<<"-"<<month<<"-"<<day<<" is the "<<fun(year,month,day)<<"th day of the year!"<<endl;break;els

39、ecout<<"input error!please input again:" cin>>year>>month>>day;int fun(int year,int month,int day)int ds=day;switch(month-1)case 11:ds+=30;case 10:ds+=31;case 9:ds+=30;case 8:ds+=31;case 7:ds+=31;case 6:ds+=30;case 5:ds+=31;case 4:ds+=30;case 3:ds+=31;case 2:if(year

40、%4=0&&year%100!=0|year%400=0) ds+=29;else ds+=28;case 1:ds+=31;return ds; 编写两个函数分别求2n,n!,在主函数中调用这两个函数计算21×1!+ 22×2!+2n×n!(n<10),并在主函数中输入n的值,输出结果。#include<iostream.h>double fun1(int n);double fun2(int n);void main()int n,i;double s=0;cout<<"please input n:&q

41、uot;cin>>n;for(i=1;i<=n;i+)s+=fun1(i)*fun2(i);cout<<"s="<<s<<endl;double fun1(int n)double m=1;for(int i=1;i<=n;i+)m*=2;return m;double fun2(int n)double m=1;for(int i=1;i<=n;i+)m*=i;return m; 编写函数求sin(x),求sin(x)的近似公式为:在主函数中输入x的值并调用该函数,输出结果。#include<iost

42、ream.h>#include<math.h>double fun(double);void main()double x,sum;cout<<"please input x:"cin>>x;sum=fun(x);cout<<"sum= "<<sum<<endl;cout<<"sin"<<x<<"="<<sin(x)<<endl;double fun(double x)doubl

43、e s=0,t=x;for(int i=1;fabs(t)>1e-6;i+=2)s+=t;t=-t*x*x/(i+1)/(i+2);return s;实验十 函数与指针2. 编程题 编写一个程序,求方程ax2+bx+c=0的根,用三个函数分别求出当b2-4ac大于0,小于0和等于0时的根。要求从主函数输入a,b,c的值并输出结果。源程序为:方法1:#include<iostream.h>#include<math.h>void root1(double,double,double,double *,double *);double root2(double,dou

44、ble);void root3(double,double,double,double *,double *);void main()double a,b,c,d,x,x1,x2;cout<<"Please input a,b,c="cin>>a>>b>>c;if(a)d=b*b-4*a*c;if(d>0) root1(a,b,d,&x1,&x2); cout<<"x1="<<x1<<"nx2="<<x2<<

45、;endl;else if(d=0) x=root2(a,b);cout<<"x="<<x<<endl;else root3(a,b,d,&x1,&x2); cout<<"x1="<<x1<<"+"<<x2<<"i"<<endl;cout<<"x2="<<x1<<"-"<<x2<<"i

46、"<<endl;else if(b) cout<<"x="<<-c/b<<"n"else if(c)cout<<"方程无根,输入的a,b,c值有误!"<<"n"elsecout<<"方程有无穷多解。"<<"n"void root1(double a, double b, double d, double * x1, double * x2)*x1=(-b+sqrt(d)/

47、(2*a);*x2=(-b-sqrt(d)/(2*a);double root2(double a, double b)double x=-b/(2*a);return x;void root3(double a, double b, double d, double * x1, double * x2)*x1=-b/(2*a);*x2=sqrt(-d)/(2*a);方法2:#include<iostream.h>#include <math.h>void root1(double,double,double,double);void root2(double,doub

48、le,double);void root3(double,double,double,double);double x1,x2;void main()double a,b,c,t;cout<<"Please input a,b,c="cin>>a>>b>>c;if(a)t=b*b-4*a*c;if (t>0)root1(a,b,c,t);cout<<"x1="<<x1<<"nx2="<<x2<<"n"e

49、lse if(t=0)root2(a,b,c);cout<<"x1=x2="<<x1<<"n"elseroot3(a,b,c,t);cout<<"x1="<<x1<<"+"<<x2<<"i"<<"n"<<"x2="<<x1<<"-"<<x2<<"i"&

50、lt;<"n"else if(b) cout<<"x="<<-c/b<<"n"else if(c)cout<<"方程无根,输入的a,b,c值有误!"<<"n"elsecout<<"方程有无穷多解。"<<"n"void root1(double a,double b,double c,double t)t=sqrt(t);x1=(-b+t)/(2*a);x2=(-b-t

51、)/(2*a);void root2(double a,double b,double c)x1=x2=-b/(2*a);void root3(double a,double b,double c,double t)t=sqrt(-t);x1=-b/(2*a);x2=t/(2*a); 编写将一个整数n转换成字符串的函数。在主函数中调用该函数并输出结果,从键盘输入n的值。例如输入123,则输出字符串“123”。n的位数可以任意。#include<iostream.h>void convert(int n);void main() int number; cout<<&qu

52、ot;please input an integer:" cin>>number; cout<<"the output is:"<<endl; if(number<0) cout<<"-" number=-number; convert(number); cout<<endl; void convert(int n) int i; char c; if(i=n/10)!=0) convert(i); c=n%10+'0' cout<<" &q

53、uot;<<c; 编写一个函数实现对数组长度为n的整型数组a的升序排序。在主函数中调用该函数并输出结果,从键盘输入数组元素的值。#include<iostream.h>const int N=50;void input(int ,int);void sort(int ,int);void output(int ,int);void main()int aN,n;cout<<"input length of the array:"cin>>n;cout<<"input the arrayn"inp

54、ut(a,n);cout<<"the array before sortedn"output(a,n);sort(a,n);cout<<"the array after sortedn"output(a,n);void input(int x,int n) int i;for(i=0;i<n;i+)cin>>xi;void sort(int x,int n) int i,j,t;for(i=0;i<n-1;i+)for(j=0;j<n-1-i;j+)if(xj>xj+1)t=xj;xj=xj+1;xj+1=t;void output(int x,int n) int i;for(i=0;i<n;i+)cout&l

温馨提示

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

评论

0/150

提交评论