c++1-5参考模板_第1页
c++1-5参考模板_第2页
c++1-5参考模板_第3页
c++1-5参考模板_第4页
c++1-5参考模板_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

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

文档简介

1、/*1. 本题分值:10题目描述:马克思曾经出过这样一道趣味数学题:有30个人在一家小饭馆里用餐,其中有男人、女人和小孩。每个男人花了3先今,每个女人花了2先令,每个小孩花了1先令,一共花去50先令。问男人、女人以及小孩各有几个人。以下是完成此项工作的程序,请将未完成的部分填入,实现其功能,并在计算机上调试程序,以测试填入的部分是否正确。代码:*/#include<iostream>using namespace std;int main() int n; /n记录解的个数 int a,b,c; /分别记录男、女、小孩的人数 n=0; /初始化n的值 for(a=1;a<=3

2、0;a+) for(b=1;b<=30;b+) c=30-a-b; if(3*a+2*b+c=50) cout<<"男人有:"<<a<<"个;"<<"女人有:"<<b<<"个;"<<"小孩有:"<<c<<"个。"<<endl; n+; cout<<"共有"<<n<<"种方案"&

3、lt;<endl;2 / 59 return 0;/*本题分值:10题目描述:下面程序的功能是输出1至100之间每位数的乘积大于每位数的和的数,请填空使程序完整,并在计算机上调试程序,以测试填入的部分是否正确。代码:*/#include <iostream>using namespace std;int main() int n, k=1, s=0, m ; for (n=1 ; n<=100 ; n+) k=1 ; s=0 ; m=n; while ( m!=0 ) k*=m%10; s+=m%10; m=m/10; if (k>s) cout<<n

4、<<' ' return 0;/*3. 本题分值:10题目描述:一个数如果恰好等于除它本身的所有因子之和,这个数就称为完数。例如,6=1+2+3, 6就称为完数。输出1000以内所有满足完数条件的数及其个数。请阅读以下不完整的程序,并在计算机上调试该程序以补足其中的空格,实现其功能。代码:*/#include<iostream>using namespace std;int main()int n,s,i,count=0;cout<<"1000以内的完数为:"for(n=1;n<1000;n+)s=0;for(i=1

5、;i<n;i+)/计算小于n的因数和if (n%i=0) s=s+i;/如果i是n的因数if (s=n)/判断是否满足完数的条件cout<<n<<" "count=count+1;/完数的个数+1cout<<endl<<"1000以内完数的个数为:"<<count<<endl;return 0;/*4. 本题分值:10题目描述:求100以内能被3整除 且个位数字为9的所有正整数。请阅读以下不完整的程序,并在计算机上调试该程序以补足其中的空格,实现其功能。代码:*/#includ

6、e<iostream>using namespace std;int main()int i;for(i=1;i<100;i+)if(i%3=0 && i%10=9)cout<<i<<" "return 0;/*5. 本题分值:10题目描述:求输入的两个正整数的最大公约数。请阅读以下不完整的程序,并在计算机上调试该程序以补足其中的空格,实现其功能。代码:*/#include<iostream>using namespace std;int main()int x,m,n;cin>>m>&

7、gt;n;if(m<n) x=m;else x=n;/x取m和n中的较小值/x从m和n的较小值开始到1的范围内递减寻找公约数while(x>=1)if(m%x=0 && n%x=0)/如果x是m和n的约数,x的值即为最大公约数break;x=x-1;cout<<x<<endl;return 0;/*6.本题分值:10题目标题:数字求和。时间限制:1000MS内存限制:32768KB题目描述:给定一个正整数a,以及另外的5个正整数,问题是:这5个整数中,小于a的整数的和是多少?输入描述:输入一行,只包括6个小于100的正整数,其中第一个正整数就

8、是a。输出描述:输出一行,给出一个正整数,是5个数中小于a的数的和。样例输入:10 1 2 3 4 11样例输出:10*/#include<iostream>using namespace std;int main()int a,b,i,s=0;cout<<"请输入a和其他5个整数:"<<endl;cin>>a;for(i=0;i<5;i+)cin>>b;if(b<a)s=s+b;cout<<"小于a的数的和为:"<<s<<endl;return

9、0;/*7.本题分值:10题目标题:球弹跳高度的计算。时间限制:1000MS内存限制:32768KB题目描述:一球从某一高度落下(整数,单位米),每次落地后反跳回原来高度的一半,再落下。编程计算气球在第5次落地时,共经过多少米? 第5次反弹多高?输入描述:输入一个整数h0,表示球的初始高度。输出描述:两个数据s和h,分别表示第5次落地时共经过s米,第5次反弹高度为h米,s和h用空格隔开。注意:结果可能是实数,结果用double类型保存。提示:输出时不需要对精度特殊控制,用cout<<ANSWER即可。样例输入:10样例输出:28.75 0.3125 */#include <i

10、ostream>using namespace std;int main()int h0,i;double s,h;cin>>h0;s=h=h0;for(i=0;i<4;i+)h=h/2; s=s+2*h;cout<<"第五次落地时经过"<<s<<"米"<<endl<<"第五次反弹高度为"<<h/2<<"米"<<endl;return 0;/*8.本题分值:10题目标题:求分数序列和。时间限制:1

11、000MS内存限制:32768KB题目描述:有一个分数序列 2/1,3/2,5/3,8/5,13/8,21/13,. 求这个分数序列的前n项之和。输入描述:输入有一行:正整数n。输出描述:输出有一行:分数序列的和(浮点数,精确到小数点后4位)。【提示】 1. 最好在程序中使用双精度浮点数(double)记录求得的和。 2. 要输出浮点数、双精度数小数点后4位数字,可以用下面这种形式:cout<<fixed<<setprecision(4)<<result<<endl;按上面的形式控制输出格式时,需在源程序最开始加上一行:#include<i

12、omanip>。样例输入:99样例输出:160.4849*/#include<iostream>#include<iomanip>using namespace std;int main() double a=2,b=1,count,n,j; double m,s; cin>>n; for (count=0,s=0;count<=n;count+) m=a/b; j=a; a=a+b; b=j; s=s+m; cout<<fixed<<setprecision(4)<<s<<endl; return

13、 0;/*9.本题分值:10题目标题:点和正方形的关系。时间限制:1000MS内存限制:32768KB题目描述:在平面坐标系中,有一个正方形,四个角的坐标(x,y)分别是(1,-1),(1,1),(-1,-1),(-1,1),x是横轴,y是纵轴。写一个程序,判断给定的多个点是否在这个正方形内。输入描述:多组数据,每行包含两个浮点型数据,分别表示一个点的横、纵坐标,输入坐标为0,0时表示输入结束。(注意,输入的数据不止3组)输出描述:对每组输入的点进行判断,显示yes或no,表示是否在正方形中,最后输入的原点也要显示yes,然后才不再继续输入点坐标。(当点在正方形的边上时,也认为在正方形内)样例

14、输入:3 40.5 10 0样例输出:noyesyes*/#include <iostream>using namespace std;int main()float a,b;while(a!=0&&b!=0)cout<<"请输入坐标"<<endl;cin>>a>>b;cout<<endl;if(a>=-1&&a<=1&&b<=1&&b>=-1)cout<<"yes"<<e

15、ndl;else cout<<"no"<<endl;return 0;/*10.本题分值:10题目标题:抓交通肇事犯。时间限制:3000MS内存限制:32768KB题目描述:一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是数学家,他说:四位的车号所构成的数字正好等于某一个整数的平方。请根据以上线索求出车号。输入描述:无。输出描述:直接显示一个四位整数表示肇事车号样例输入:样例输出:*/#include<iostrea

16、m>#include<math.h>using namespace std;int main()int m=1000,a,b,c,d;float k;do a=m/1000; b=m%1000/100; c=m%100/10; d=m%10; for(k=32;k<=99;k+) if(k*k=m &&a=b&&c=d&&b!=c) cout<<m<<endl; break; m+;while (m<=9999);return 0;/*1. 本题分值:10题目描述:随机产生10个整数存放到数组

17、中(下标0的位置不放,从下标1开始),输入待查找的整数x,查找x是否存在于这10个数中。若存在,则输出x(最初)出现在这批数中的位置序号(例如1或2或);若不存在x,则输出"不存在"。以下是完成此项工作的程序,请在计算机上调试程序以补足其中的空格。代码:*/#include <iostream>using namespace std;int main( )int a101,k,x;for(k=1;k<=10;k+) /从数组中下标1的元素开始存放数据ak=rand( )%101;/产生0100之间的的整数cout<<ak<<&quo

18、t; "cout<<endl;cin>>x; /输入待查找数xfor(k=1;k<=10;k+)if(ak=x) break; /若发现了x,则不用继续循环、继续查找if(k<=10) cout<<"x存在,它的位置序号是:"<<k<<endl; else cout<<"不存在!"<<endl;return 0;/*2. 本题分值:10题目描述:编写一个程序,可以根据用户输入的不同值,建立不同长度的整型数组。给这个数组赋值,并求其所有元素之和。请填空

19、使程序完整,并在计算机上调试程序,以测试填入的部分是否正确。代码:*/#include<iostream>using namespace std;int main() int n,i,sum=0,*p; cin>>n; /输入一个整数n p=new intn; /创建一个含有n个整数的整数数组 for(i=0;i<n;i+) /输入n个整数存于动态数组p中 cin>>pi; for(i=0;i<n;i+) /求动态数组中的所有整数之和 sum=sum+*(p+i); cout<<sum<<endl; /显示结果 delet

20、e p; /删除动态数组p return 0;*3. 本题分值:10题目描述:输入5个整数依次存放到数组a中(从下标1开始存放),再输入待插入的整数x以及它要插入到数组中的位置下标k(1k5),要求插入后不影响a中原来下标为k到5的所有元素的先后顺序。请按照数组中的元素顺序,输出插入前的5个整数和插入后的这6个整数。提示:插入时,应该先从后往前地(从下标5到下标k)将每个数组元素都后移1个位置,最后再将x存放到下标k的元素中。请在计算机上调试以下程序以补足其中的空格。代码:*/#include <iostream>using namespace std;int main( )int

21、 a101,k,j,x;/分别输入5个整数for(j=1;j<=5;j+) cin>>aj;cin>>x>>k; /输入待插入的数x和插入的位置下标kif(k<1 | k>5) return 0;for(j=5;j>=k;j-) /从下标5到下标k,将每个数组元素都后移1个位置aj+1=aj;ak=x;/输出将x插入到下标k后的这6个数for(j=1;j<=6;j+) cout<<aj<<" "cout<<endl;return 0;/*4. 本题分值:10题目描述:输入字

22、符串s及待删除的字符ch,将s中所有与ch相同的字符都删除掉,输出删除后得到的新串。以下程序是直接在数组s中进行删除,得到的新串仍然在数组s中。请在计算机上调试该程序以补足其中的空格。代码:*/#include <iostream>using namespace std;int main( )char s81, ch;int k,j;cin>>s;/输入一个字符串后按回车键,该字符串存入s中cin>>ch; /输入待删除的字符后按回车键/k代表s中每个字符的下标/j代表未删除(保留)字符应放在s中新的位置下标for(k=j=0;sk!='0'

23、k+) if(sk!=ch)sj=sk;j+;sj='0' /得到的新串末尾要放结束符cout<<s<<endl;return 0;/*5. 本题分值:10题目描述:输入一行字符串,分别统计其中英文字母、空格、数字和其他字符的个数,并输出。请阅读以下不完整的程序,并在计算机上调试该程序以补足其中的空格,实现其功能。代码:*/#include<iostream>using namespace std;int main()int a,b,c,d;/a,b,c,d分别用来记录英文字母、空格、数字和其他字符的个数char s101,*p;p=s; /

24、指针p指向字符串s的第一个字符cin.getline(s,101); /输入一个含有空格的字符串存入s中a=b=c=d=0;while(*p!=0) /当p指向的字符不是字符串结束标记时循环 if(*p>='A'&&*p<='Z' | *p>='a'&&*p<='z')/如果p指向的是一个英文字母字符 a+; else if (*p=' ') /如果p指向的是一个数字字符 b+; else if(*p>='0'&&*p&l

25、t;='9') /如果p指向的是一个数字字符 c+; else d+; p+;/使指针p指向字符串中的下一个字符cout<<a<<' '<<b<<' '<<c<<' '<<d<<endl; /输出英文字母、空格、数字和其他字符的个数return 0;/*6.本题分值:10题目标题:陶陶摘苹果。时间限制:1000MS内存限制:32768KB题目描述:陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果。苹果成熟的时候,陶陶就会跑去摘

26、苹果。陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。现在已知10个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。假设她碰到苹果,苹果就会掉下来。输入描述:输入包括两行数据。第一行包含10个100到200之间(包括100和200)的整数(以厘米为单位)分别表示10个苹果到地面的高度,两个相邻的整数之间用一个空格隔开。第二行只包括一个100到120之间(包含100和120)的整数(以厘米为单位),表示陶陶把手伸直的时候能够达到的最大高度。输出描述:输出只包含一个整数,表示陶陶能够摘到的苹果的数目。样例输入:100

27、 200 150 140 129 134 167 198 200 111110样例输出:5*/#include <iostream>using namespace std;int main()int high10,max,i,n=0;cout<<"请输入十个苹果的高度(100200):"for(i=0;i<10;i+)cin>>highi;cout<<" "cout<<endl<<"请输入陶陶手能够到的最大高度(100120):"<<endl;c

28、in>>max;max=max+30;for(i=0;i<10;i+)if(max>=highi)n+;cout<<"陶陶能摘到的苹果数目为:"<<n<<endl;return 0;/*7.本题分值:10题目标题:歌唱比赛选手成绩计算。时间限制:1000MS内存限制:32768KB题目描述:歌唱大赛选手成绩这样计算:去掉一个最高分,去掉一个最低分,将剩下分数的平均值作为选手的最后得分。现假设共有6位评委,都是按百分制打分,请编程计算选手的成绩。提示:将6个评分存入score数组中。关键是求出其中的最大值max(即最

29、高分)和最小值min(即最低分)。输入描述:依次输入6位评委的打分score1score6,每个scorei都是double型,且满足0scorei100。输出描述:输出一行,表示该选手的最后得分。提示:输出时不需要对精度特殊控制,用cout<<ANSWER即可。样例输入:78.8 92.3 87.6 94.8 85.8 94.8样例输出:90.125*/#include <iostream>using namespace std;int main()double max,min,score7,answer=0;cout<<"请输入六位评委所打的分

30、数(0100):"<<endl;for(int i=1;i<7;i+)cin>>scorei; max=min=score1;for(int j=1;j<7;j+)if(scorej>max) max=scorej;for(int k=1;k<7;k+)if(scorek<min) min=scorek;for(int m=1;m<7;m+)answer=answer+scorem;answer=(answer-max-min)/4;cout<<"去掉一个最高分,最低分后的平均分为:"<

31、<answer<<endl;return 0;/*8.本题分值:10题目标题:神秘的字符加、解密技术。时间限制:1000MS内存限制:32768KB题目描述:插入式加密法是信息加密中一种简单的加密技术,其方法是在明文字符中插入一些无意义的字母来形成密文单词。例如,对于明文:China,在间隔为1的位置依次插入一个字母而形成密文:Coheifnia。因此,其解密过程与加密过程相反,即从密文中首字符开始取,每间隔1个位置依次取出字符,就得到原始的明文。请编程实现插入式加密法所对应的解密算法,将密文翻译成明文。提示:定义两个字符数组ci和pl,分别存放密文字符串和明文字符串。解密过

32、程即在字符串ci中,从下标0的字符(首字符)开始,将偶数下标的字符('0'之前的)依次取出赋值到字符数组pl中,最后即得到明文字符串。输入描述:输入一行:密文字符串。输出描述:输出有一行:翻译后的明文字符串。样例输入:Coheifnia样例输出:China*/#include <iostream>using namespace std;int main() int i=0,j=0;char ci40,pl20;cout<<"请输入密文字符串:"cin>>ci;while(cii!='0')if(i%2=0)

33、 plj=cii;j+;i+;plj='0'cout<<"翻译后的明文字符串为:"<<pl<<endl;return 0;/*9.本题分值:10题目标题:字符串大小写转换。时间限制:1000MS内存限制:32768KB题目描述:输入一个长度小于20的不含空格的字符串,然后对该字符串做如下处理:对字符串中的每个字符,如果是大写字母,将其转化为小写;如果是小写字母,将其转化为大写,最后将处理后的字符串输出。要求用指针对字符串进行处理。输入描述: 输入一行:长度小于20的不含空格的字符串。输出描述: 输出一行:处理以后的字符串。

34、样例输入:ILoveC+!样例输出:ilOVEc+!*/#include <iostream>using namespace std;int main()int i=0;char *m=new char20;cin>>m;while(mi!='0')if(mi>='A'&&mi<='Z')mi=mi+'a'-'A'if(mi>='a'&&mi>='z')mi=mi+'A'-'a&#

35、39;i+;cout<<m<<endl;deletem;return 0;/*10.本题分值:10题目标题:打印极值点下标。时间限制:3000MS内存限制:32768KB题目描述:在一个整数数组上,对于下标为i的整数,如果它大于所有它相邻的整数,或者小于所有它相邻的整数,则称为该整数为一个极值点,极值点的下标就是i。注意:数组中的第一个数(下标为0)只要和第二个数(下标为1)不相等,第一个数(下标为0)就是极值点;同理,数组中的最后一个数只要和倒数第二个数不相等,最后一个数也是极值点。输入描述:有2行输入:第一行是此数组的元素个数k(4<k<80),第二行是

36、k个整数,每两个整数之间用空格分隔。 输出描述:输出为1行:依次对应于数组的所有极值点下标值,下标值之间用空格分隔。样例输入:1512 12 122 112 222 222 222 221 76 36 31 234 256 76 73样例输出:2 3 10 12 14*/#include <iostream>using namespace std;int main()int n,a;cout<<"请输入元素个数n(480):"<<endl;cin>>n;cout<<endl<<"请输入&quo

37、t;<<n<<"个整数:"int *p=new intn;for(int i=0;i<n;i+)cin>>pi;a=p0;if(p0!=p1) cout<<"0"<<" "for(int j=1;j<n-1;j+)if(pj>pj-1&&pj>pj+1) cout<<j<<" "if(pj<pj-1&&pj<pj+1) cout<<j<<&q

38、uot; "if(pn-2!=pn-1) cout<<n-1<<endl;deletep;return 0;/*1.普通参数本题分值:4题目描述:输入日期的年份和月份,求该月有多少天。要求编写函数int daynum(int year,int month),求出以year为年份、以month为月份的某个月的天数。以下是完成此项工作的程序,请在计算机上调试程序以补足其中的空格。代码:/通过日期求某月的天数。*/#include<iostream>using namespace std;int main()int daynum(int year,int

39、 month);int y,m,d;cin>>y>>m;if(y<1900 | y>=3000 | m<1 | m>12)cout<<"输入错误!"<<endl;return 0; d=daynum(y,m);/以y、m作实参调用函数,求出该月的天数cout<<"此月的天数为"<<d<<endl;return 0;int daynum(int year,int month)int days;switch(month)case 1:case 3:ca

40、se 5:case 7:case 8:case 10:case 12: days=31; break;case 4:case 6:case 9:case 11: days=30; break;case 2: if(year%4=0&&year%100!=0 | year%400=0) days=29; else days=28; break;return days;/*2. 字符数组参数本题分值:4题目描述:编写一个函数,用来求字符串s的任意子串。函数原型为void SubString ( char s , int start , int len , char d ) ;其中s

41、是原字符串,d用来存放s中从第start个字符开始( 1startstrlen(s) ),长度为len的子串。以下是完成此项工作的程序,请在计算机上调试程序以补足其中的空格。代码:*/#include <iostream>using namespace std;int main( ) void SubString(char s , int start, int len, char d ); char s81,d81; int m,n; gets(s); /输入一个字符串的值存放在字符数组s中,以回车结束 cout<<"从第m个字符开始(m1)取n个字符构成的子

42、串。请依次输入m、n的值:" cin>>m>>n; if(m>strlen(s) | n>strlen(s) | m+n>strlen(s)+1) cout<<"m、n值超过了范围!n" return 0; SubString(s,m,n,d);cout<<d<<endl;return 0;/从s中第start个字符开始取出长度为len的子串放入d中void SubString(char s , int start, int len, char d ) int k,j; for(j=0,

43、k=start-1;j<=len-1;j+,k+) dj=sk; dlen='0'/*4. 全局变量本题分值:4题目描述:编写一函数addup,统计字符串s中字母、数字、空格和其它字符的个数,并且用几个全局变量记录上述统计结果。以下是完成此项工作的程序,请在计算机上调试程序以补足其中的空格。代码:*/#include <iostream>using namespace std;int letter, digit, space, other; /全局变量int main()void addup(char s );char str101;/cout<<

44、"输入字符串:n"gets(str);addup(str);cout<<"字母个数:"<<letter<<",数字个数:"<<digit<<",空格个数:"<<space<<",其他字符个数:"<<other<<endl;return 0;void addup(char s )int i;letter=digit=space=other=0;for(i=0;si!='0'i

45、+)if(si>='a' && si<='z' | si>='A' && si<='Z')letter+;elseif(si>='0' && si<='9')digit+;elseif(si=32)space+;elseother+; /*5. 递归调用本题分值:4题目描述:用递归方法求n的阶乘n!,递归公式为 1 (n等于0或1) n!= n×(n-1)! (n大于1)要求编写递归函数int fact(i

46、nt n); 以下是完成此项工作的程序,请在计算机上调试程序以补足其中的空格。代码:*/#include <iostream>using namespace std;int main()int fact(int n); int n,f;/cout<<"请输入整数n(n0):"cin>>n;f=fact(n);cout<<n<<"!="<<f<<endl;return 0;/求阶乘int fact(int n) int f;if(n=0 | n=1) f=1;else f=

47、fact(n-1)*n;return f;/*1. 普通参数本题分值:12题目标题:判断完数时间限制:1000MS内存限制:32768KB题目描述:判断正整数n是否为完数。已知一个数如果恰好等于除它本身外的所有因子之和,这个数就称为完数。此程序要求编写函数bool wanshu(int n),判断n是否为完数,若n是,则函数返回true;否则返回false。然后主函数通过该函数的返回值,在屏幕上输出判断结果。输入描述:输入一个正整数n。输出描述:若n是完数,则输出"yes";否则输出"no"。样例输入:28样例输出:yes*/#include<io

48、stream> using namespace std; bool wanshu(int n); int main() int m; cin>>m; if(wanshu(m) cout<<"yes"<<endl; else cout<<"no"<<endl; return 0; bool wanshu(int n) int s=0; for(int i=1;i<n;i+) if (n%i=0) s=s+i; if (s=n) return true; else return fals

49、e; /*2. 数组参数本题分值:12题目标题:统计一组数中的奇数之和时间限制:1000MS内存限制:32768KB题目描述:统计输入的10个整数中所有奇数之和。要求编写函数int oddsum(int array ,int num),求出数组array中前num个整数中的奇数之和,并将结果作为函数值返回。要求主函数必须先输出这10个数,再输出求出的奇数之和。输入描述:输入10个整数。输出描述:输出其中奇数之和。样例输入:97 48 23 17 45 59 90 75 49 92样例输出:365*/#include <iostream>using namespace std;int

50、 main()int oddsum(int array ,int num);int n,sum,d10;cout<<"请输入10个数:"for(int i=0;i<10;i+)cin>>di;cout<<endl<<"请输入要求数组array中前n个整数中的奇数之和的个数n:"cin>>n;sum=oddsum(d,n);cout<<"数组array中前num个整数中的奇数之和为:"<<sum<<endl;return 0;int o

51、ddsum(int array,int num)int i,sum=0;for(i=0;i<num;i+)if (arrayi%2!=0)sum=sum+arrayi;return sum;/*3. 嵌套调用本题分值:12题目标题:求两数的最大公约数和最小公倍数。时间限制:1000MS内存限制:32768KB题目描述:求两个正整数的最大公约数和最小公倍数。要求,写一个函数求最大公约数:int GCD(int a,int b),再写一个函数求最小公倍数:int LCM(int a,int b)。其中最大公约数函数GCD的算法:可以参考实验预习1中程序填空题5中的算法,也可以使用辗转相除法。

52、最小公倍数函数LCM的算法:a、b的最小公倍数等于a*b/a、b的最大公约数。要求:最小公倍数函数LCM中嵌套调用函数GCD,以求a、b的最大公约数。输入描述:分别输入2个整数。输出描述:当输入的数据不是正整数时,显示"ERROR!";当输入的数据都是正整数时,依次输出最大公约数x和最小公倍数y,两个数据之间用一个空格隔开。样例输入:12 18样例输出:6 36*/#include<iostream> using namespace std;int GCD(int a,int b) ;int LCM(int a,int b,int x);int main() i

53、nt a,b,x,y; cout<<"请输入两个正整数"<<endl; cin>>a>>b; if(a%1!=0|b%1!=0|a<=0|b<=0)cout<<"ERROR!"<<endl;return 0; x=GCD(a,b); y=LCM(a,b,x) ; cout<<"这两个数的最大公约数和最小公倍数分别是"<<x<<"t"<<y<<endl; return 0;

54、int GCD(int a,int b) int x; a>b?x=a:x=b; for(;a%x!=0|b%x!=0;x-); return x; int LCM(int a,int b,int x)int y; y=a*b/x; return y; /*4. 数组参数本题分值:12题目标题:字符串中小写字母转换成大写字母时间限制:1000MS内存限制:32768KB题目描述:编写函数int f (char s ),将字符串中所有的小写字母转换成对应的大写字母,其他字符不变,并统计被转换字母的个数,将其作为函数值返回。要求主函数中输入该字符串,最后输出转换后的新字符串,和转换字母的个数

55、。输入描述:输入一个字符串。输出描述:两行,第一行输出转换后的新字符串,第二行输出被转换的小写字母个数。样例输入:ser34GHj样例输出:SER34GHJ4*/#include <iostream>using namespace std;int main() int f (char s); int n;char s100; char a100; cout<<"请输入原字符串:" cin>>a;n=f(a);cout<<"输出被转换的小写字母个数为:"<<n<<endl;return

56、 0; int f (char s) int n=0;cout<<"转换后的新字符串为:" while(*s!='0') if(*s>='a' && *s<='z') *s=*s-32;n+;cout<<*s;s+; cout<<endl; return n; /*5. 指针参数本题分值:12题目标题:统计字符串中某字符出现的次数时间限制:1000MS内存限制:32768KB题目描述:输入一个字符串s和一个字符ch,统计并输出字符ch在字符串s中出现的总次数。改写要求:编写一个函数,求字符指针p所指向的字符串中,字符ch出现的次数,并将该结果作为函数值返回。函数原型为int

温馨提示

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

评论

0/150

提交评论