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

下载本文档

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

文档简介

实验二 输入/输出与顺序结构4. 编程题 输入学生的语文、数学、英语、物理4门课程的成绩,计算该学生的总成绩和平均成绩并输出。#include void main() double eng, chin,math,phy,sum,aver;coutengchinmathphy; /输入成绩sum=eng+chin+math+phy; /计算总成绩aver=sum/4; /计算平均分coutSum=sumendltAverage=averendl; /输出 编写程序,从键盘输入一个大写英文字母,输出对应的小写字母。#include void main()char c1,c2;coutc1;c2=c1+32;coutc1=c1tc2=c2endl;实验三 选择结构程序设计3. 编程题XX 由键盘输入三个字符,输出其中的最大者。XX【源程序】#include void main() char x,max; coutx; max=x; cinx; if (xmax) max=x; cinx; if (xmax) max=x; coutmax = max0)-1 (x0)【源程序】#include void main()int x,y;coutx;if (x0)y=1;else if (x=0)y=0;elsey=-1;couty=yendl; 计算奖金。设企业利润为L,当企业利润L不超过5000元时,奖金为利润的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的值,编程计算相应的奖金并输出。【源程序】#includevoid main()double L,S;coutL;if(L5000) S=L*0.015;else if(L10000)S=75+(L-5000)*0.02; else if(L20000)S=175+(L-10000)*0.025;else if(L50000)S=175+250+(L-20000)*0.03;else if(L100000)S=175+250+900+(L-50000)*0.035;elseS=175+250+900+1750+(L-100000)*0.04;coutS=Sendl; 输入年龄,输出所处人群:9岁以下为儿童,输出A;1019为少年,输出B;2029为青年,输出C;3049为中年,输出D;50以上为老年,输出E。【源程序】#include void main()int age;coutage;switch(age/10)case 0:coutA-儿童n;break;case 1:coutB-少年n;break;case 2:coutC-青年n;break;case 3:case 4:coutD-中年n;break;default:coutE-老年n;break;实验四 循环结构程序设计4编程题 输入n,求1+2+3+n的和。 #includevoid main() int i,n;double sum=0;cinn;for(i=1;i=n;i+) sum+=i;cout1+2+3+.+n=sumendl;实验五 典型结构程序设计2编程(1)输入10个字符,输出其中的最大者。#includevoid main()char ch,maxchar;coutch;maxchar=ch;for(int i=1;ich; if(chmaxchar)maxchar=ch;coutmaxchar=maxcharendl;(2)一个球从100m高度自由落下,每次落地后反弹回原来高度的一半,再落下,再反弹。求它在第10次落地时,共经过多少米?第10次反弹多高?分析:共经过: 100*(1+1/2+1/4+1/8-+1/1024) 米第10次:100/1024米#includevoid 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;coutsum=sumtt10=t10endl;(4)编写程序,对输入的一批整数统计出正数的个数、负数的个数、奇数的个数、偶数的个数,要求所统计的整数由键盘输入,以0作为输入数据结束的标志。#includevoid main()int a=0,b=0,c=0,d=0,x;cinx;while(x!=0)if(x0)a+=1;if(xx;cout正数个数=aendl;cout负数个数=bendl;cout奇数个数=cendl;cout偶数个数=dendl;实验六 * 输入10个学生的成绩,求其平均值,输出最高成绩,并统计低于平均值的人数。 * 注: LT是小于的意思,less than */#include const double 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 scorei;if ( highestScore scorei ) 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 endl;cout The number of LT average is numLTaverage endl;/* * 分别用冒泡法和选择法对输入的10个整数按由大到小排序。 * 冒泡法参见课本第四章课后作业第四题 */#include void main()int myArray10;int outer, inner;int imax;for ( int i = 0; i 10 ; + i )cout 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;/输出for ( i = 0; i 10 ; + i )cout myArrayi ;cout endl;/* * 使用折半查找法,在给定的数组中查找某个数据。 */#include const int N = 10;void main()int myArrayN = 1, 5, 8, 13, 16, 34, 67, 78, 90, 100;int iSearch;cout 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 found the number. endl;elsecout We havnt 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 void main()int yangHui1010;yangHui00 = yangHui10 = yangHui11 = 1;for ( 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门课程的成绩, * 学生人数与成绩由键盘输入,要求统计出每门课程全班 * 的总成绩和平均成绩以及每个学生三门课程的总成绩和 * 平均成绩。 */#include void main()/由用户输入学生人数int numStu;cout numStu;/根据用户输入的人数建立数组,其中0-2列为三门课成绩,最后一列是总分。/最后添加一行用来存储总分。int (*p)4;p = new intnumStu + 14;/将总分置0pnumStu0 = pnumStu1 = pnumStu2 = 0;for ( int i = 0 ; i numStu ; + i )/将每个人的总分置0pi3 = 0;cout ID is i + 1 :n;/输入英语成绩cout pi0;pi3 += pi0;pnumStu0 += pi0;/输入物理成绩cout pi1;pi3 += pi1;pnumStu1 += pi1;/输入英语成绩cout pi2;pi3 += pi2;pnumStu2 += pi2;/输出for ( i = 0 ; i numStu ; + i )cout ID i + 1 :n;cout 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 ,average= pnumStu1/double(numStu);cout nMat: sum= pnumStu2 ,average= pnumStu2/double(numStu);delete p;/* * 编写程序求对矩阵进行转置,即将元素的行列位置交换。 */#include void main()int myMatrix44;/输入for ( int i = 0; i 4; + i )for ( int j = 0; j 4; + j)cout ( i + 1 , j + 1 myMatrixij;/输出转置前的数组cout Before exchange:n;for ( i = 0; i 4; + i )for ( int j = 0; j 4; + j)cout myMatrixij t;cout endl;/转置for ( i = 0 ; i 4 ; + i)for ( int j = 0 ; j i ; + j)/* * 编写程序求两个矩阵的乘积,若矩阵ANM与BMK相乘, *则得到矩阵C,其行列数为NK。注意A的列数与B的行数相同 *,才可以进行乘法操作。 */#include const int N = 3;const int M = 4;const int K = 5;void main()/定义数组int aNM,bMK,cNK;/输入数组Acout 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 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 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;/输出转置后的数组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 #includeconst int N=3;void main()char aN20;int i,max=0;for(i=0;iN;i+)cin.getline(ai,20);for(i=1;i0)strcpy(amax,ai);coutamaxendl; 编写程序,将一个字符串中的数字字符都删除。#include void main()char a20;int i=0,j=0;cout”Please input the characters: ”;cin.getline(a,20);for(i=0;ai!=0;i+)if(ai9)aj+=ai;aj=0; coutaendl;XXXXX 编写程序,输入一行字符,统计其中有多少个单词,单词之间用一个或多个空格分隔。#include void main()char a100;int i,num=0; coutPlease input the characters:n;cin.getline(a,100);for(i=0;ai!=0;i+)while(ai= )i+;num+;while(ai!= )i+;coutThe number of the words are: num;实验八 数组与指针(二)4编写程序并上机调试运行 编写程序,当输入17(表示星期几)时,显示相应的星期的英文名称,输入其它整数时则显示错误信息。#includeiostream.hconst int M = 2;const int N = 3;void main()char *p7 = Monday, Tuesday, Wednesday, Thirsday,Friday, Saturday, Sunday;char num;for(;)coutnum;if(num 7)coutError!;break;coutpnum - 49endl;实验九 函数及其调用2. 编程题 编写一个判断素数的函数,在主函数中由键盘输入整数的范围,并给出在该范围内的所有素数。源程序为:int fun(int n);void main() int m1,m2;coutm1m2; for(int i=m1;im2;i+) if(fun(i) couti t; int fun(int n) int i; for(i=2;in;i+) if(n%i=0) return 0; return n; XXXXXX 编写一个函数,根据给定的年、月、日输出该日是该年的第几天。在主函数中调用该函数并输出结果,从键盘输入年、月、日的值。#includeint fun(int,int,int);void main()int year,month,day;coutyearmonthday;while(1)if(year0&month=1&month=1&day=31)coutyear-month-day is the fun(year,month,day)th day of the year!endl;break;elsecoutyearmonthday;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%4=0&year%100!=0|year%400=0) ds+=29;else ds+=28;case 1:ds+=31;return ds; 编写两个函数分别求2n,n!,在主函数中调用这两个函数计算211!+ 222!+2nn!(n10),并在主函数中输入n的值,输出结果。#includedouble fun1(int n);double fun2(int n);void main()int n,i;double s=0;coutn;for(i=1;i=n;i+)s+=fun1(i)*fun2(i);couts=sendl;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#includedouble fun(double);void main()double x,sum;coutx;sum=fun(x);coutsum= sumendl;coutsinx=sin(x)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#includevoid root1(double,double,double,double *,double *);double root2(double,double);void root3(double,double,double,double *,double *);void main()double a,b,c,d,x,x1,x2;coutabc;if(a)d=b*b-4*a*c;if(d0) root1(a,b,d,&x1,&x2); coutx1=x1nx2=x2endl;else if(d=0) x=root2(a,b);coutx=xendl;else root3(a,b,d,&x1,&x2); coutx1=x1+x2iendl;coutx2=x1-x2iendl;else if(b) coutx=-c/bn;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)/(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#include void root1(double,double,double,double);void root2(double,double,double);void root3(double,double,double,double);double x1,x2;void main()double a,b,c,t;coutabc;if(a)t=b*b-4*a*c;if (t0)root1(a,b,c,t);coutx1=x1nx2=x2n;else if(t=0)root2(a,b,c);coutx1=x2=x1n;elseroot3(a,b,c,t);coutx1=x1+x2inx2=x1-x2in;else if(b) coutx=-c/bn;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)/(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的位数可以任意。#includevoid convert(int n);void main() int number; coutnumber; coutthe output is:endl; if(number0) cout-; number=-number; convert(number); coutendl; void convert(int n) int i; char c; if(i=n/10)!=0) convert(i); c=n%10+0; cout c; 编写一个函数实现对数组长度为n的整型数组a的升序排序。在主函数中调用该函数并输出结果,从键盘输入数组元素的值。#includeconst int N=50;void input(int ,int);void sort(int ,int);void output(int ,int);void main()int aN,n;coutn;coutinput the arrayn;input(a,n);coutthe array before sortedn;output(a,n);sort(a,n);coutthe array after sortedn;output(a,n);void input(int x,int n) int i;for(i=0;ixi;void sort(int x,int n) int i,j,t;for(i=0;in-1;i+)for(j=0;jxj+1)t=xj;xj=xj+1;xj+1=t;void output(int x,int n) int i;for(i=0;in;i+)coutxi ;coutendl

温馨提示

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

评论

0/150

提交评论