c++编程大题总汇.doc_第1页
c++编程大题总汇.doc_第2页
c++编程大题总汇.doc_第3页
c++编程大题总汇.doc_第4页
c++编程大题总汇.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

1编写程序:用递归算法实现函数:int sum( int n ); 其功能是求 1+2+3+n 的值并返回。要求编写主函数main()去调用递归函数sum()。编写程序如下:【答案】#include int sum (int n)if(n=0|n=1) return 1;else return n+sum(n-1);void main()int n;coutn;cout1+2+3+.+n=sum(n)0,m0编写程序如下:【答案】#include int acm(int m, int n);void main()int m,n;coutmn;coutacm(m,n)=acm(m,n)endl;int acm(int m,int n)if(m=0)return n+1;elseif(n=0)return acm(m-1,n);elsereturn acm(m-1,acm(m,n-1);输入:5 3输出:5输入:4 2输出:3输入:5 5输出:62 编写程序:要求输入一个整数n,能够逐位取出正序或反序输出,用递归算法实现:函数: void f1( int n ); 功能是:将 n 逐位取出反序输出函数: void f2( int n ); 功能是:将 n 逐位取出正序输出算法提示:重复除以10取余数,直到商为0为止;若函数中先输出余数,后递归调用,则为反序输出;若函数中先递归调用,后输出余数,则为正序输出。编写程序如下:【答案】#include void f1(int n);void f2(int n);void main()int n;coutn;coutn反序输出;f1(n);coutendl;coutn正序输出;f2(n);coutendl;void f1(int n)coutn%10;if (n10)f2(n/10);coutn%10 ;return;-1编写程序:用“筛选法”求出 2 80 之间的所有素数,要求每行输出4个素数。编写程序如下:【答案】#include#includevoid main ( ) int prime 39 ; for ( int i=0 , j=3 ; i39 ; i+ , j+=2 ) prime i = j ; for ( i=0 ; i39 ; i+ ) if ( prime i ) for ( j = i+1 ; j39 ; j+ ) if ( prime j & prime j % prime i = 0 ) prime j = 0 ; cout 280之间的素数:n ; for ( j=0 , i=0 ; i39 ; i+ ) if ( prime i ) cout setw(8) prime i ; j+ ; if ( j%4 = 0 ) cout endl ; 2编写程序:随机产生10个三位数的整数并存入数组中,用“选择排序法”对数组中的随机数进行升序排序。编写程序如下:【答案】#include#include#includevoid main ( ) int a 10 , i , k ; unsigned seed ; cout seed ; srand( seed ) ; cout 数组中的内容: ; for ( i=0 ; i10 ; i+ ) a i = rand()%900 + 100 ; cout setw(6) a i ; cout endl ;int j , temp ; cout 排序前: ; for ( i=0 ; i10 ; i+ ) cout setw(6) a i ; cout endl ; for ( i=0 ; i9 ; i+ ) temp = a i ; k = i ; for ( j = i+1 ; j a j ) temp = a j ; k = j ; if ( k != i ) temp = a i ; a i = a k ; a k = temp ; cout 排序后: ; for ( i=0 ; i10 ; i+ ) cout setw(6) a i ; cout endl ; 3编写程序:随机产生10个四位数的整数并存入数组中,用“冒泡排序法”对数组中的随机数进行降序排序。编写程序如下:【答案】#include#include#includevoid main ( ) int a 10 , i , k ; unsigned seed ; cout seed ; srand( seed ) ; cout 数组中的内容: ; for ( i=0 ; i10 ; i+ ) a i = rand()%900 + 100 ; cout setw(6) a i ; cout endl ; int j , temp ; cout 排序前: ; for ( i=0 ; i10; i+ ) cout setw(6) a i ; cout endl ; for ( i=0 ; ii ; j- ) if ( a j a j-1 ) temp = a j ; a j = a j-1 ; a j-1 = temp ; cout 排序后: ; for ( i=0 ; i10 ; i+ ) cout setw(6) a i ; cout endl ;4编写程序:随机产生10个二位数的整数并存入数组中,再从键盘上任意输入一个要查找的整数,用“顺序查找法”在数组中进行查找。编写程序如下:【答案】#include#include#includevoid main ( ) int a 10 , i , k ; unsigned seed ; cout seed ; srand( seed ) ; cout 数组中的内容: ; for ( i=0 ; i10 ; i+ ) a i = rand()%90 + 10 ; cout setw(6) a i ; cout endl ; cout k ; for ( i=0 ; i10 ; i+ ) if ( a i = k ) cout k 已找到!n ; return ; cout k 未找到!n ; 5编写程序:随机产生10个二位数的整数并存入数组中,对其进行升序排序,再从键盘上任意输入一个要查找的整数,用“折半查找法”在数组中进行查找。编写程序如下:【答案】#include#include#includevoid main ( ) int a 10 , i , j,low , high , mid ,k ; unsigned seed ; cout seed ; srand( seed ) ; cout 数组中的内容: ; for ( i=0 ; i10 ; i+ ) a i = rand()%90 + 10 ; cout setw(6) a i ; cout endl ; for ( i=0 ; i9 ; i+ ) for ( j=i+1 ; j a j ) k = a i ; a i = a j ; a j = k ; cout 数组中的内容(排序后): ; for ( i=0 ; i10 ; i+ ) cout setw(4) a i ; cout endl ; cout k ; for ( low=0 , high=9 ; low = high ; ) mid = ( low + high ) / 2 ; if ( a mid = k ) cout k a mid ) low = mid+1 ; else high = mid-1 ; cout k 未找到!n ; 1编写程序:有数组int a 12 ; 找出该数组中的最大元素及其下标、最小元素及其下标。要求用指针实现。编写程序如下:【答案】#includevoid main()int a12,*p,i,j=0;cout please input 12 integer numbersendl;for(i=0;iai;for(i=0;i12;i+)if(ajai)j=i;p=&aj;coutthe max number is aj+1=*pendl; for(i=0;iai)j=i;p=&aj;coutthe min number is aj+1=*pendl; 2编写程序:有数组int a 12 ; 并从键盘上输入12个整数存入数组a中,然后将数组a中的数据按逆序存放,要求不能借助于其他数组,并用指针实现。编写程序如下:【答案】#includevoid main()int a12,*p1,*p2,t,i;coutplease input 12 integer numbersendl;for(i=0;iai;coutthe former numbers are;for(i=0;i12;i+)coutait;coutendl;for(p1=a,p2=a+11;p1p2;p1+,p2-)t=*p1;*p1=*p2;*p2=t;coutafter transmation;for(i=0;i12;i+)coutait;coutendl;3编写程序:随机产生15个2288之间的整数并存入矩阵a 3 5 中,求矩阵a 3 5 的转置矩阵b 5 3 ,并按矩阵形式输出两矩阵,要求用指针实现。编写程序如下:【答案】#include#include#includevoid main()int a35,b53,*p,*q,i,j,t;unsigned seed;coutplease input a seed numberseed;srand(seed);for(i=0;i3;i+)for(j=0;j5;j+)aij=rand()%66+22;couta35 =n;for(p=(int*)a,i=0;i15;i+)if(i&(i%5=0)coutendl;cout*p+t;coutendl;for(i=0;i3;i+)for(j=0;j5;j+)bji=aij;coutb35 =n;for(q=(int*)b,j=0;j5;j+)for(i=0;i3;i+)coutbjit;coutendl;1根据给出的运行结果,完善下面程序。运行结果:第1遍输出:Turbo CVisual C+Borland C+第2遍输出:Turbo CVisual C+Borland C+# include void main() int i ;char *name = Turbo C , Visual C+ , Borland C+ ;cout 第1遍输出: endl ;for ( i=0; i3; i+ )cout name i endl ;cout 第2遍输出: endl ;for ( i=0; i3; i+ )cout ( name + i ) endl ;【答案】 【答案】 *2根据给出的运行结果,完善下面程序。运行结果:第1遍输出:Turbo CVisual C+Borland C+第2遍输出:Turbo CVisual C+Borland C+#includevoid main() int i ;char *name = Turbo C , Visual C+ , Borland C+ ;char p ;cout 第1遍输出: endl ;for ( i=0 ; i3 ; i+ ) p = name + i ; /把name i 的地址赋给pcout *p n ; cout 第2遍输出: endl ;for ( i=0; i3; i+ )cout name endl ;【答案】 *【答案】 i1函数find() 用来判断数组a中的数据是升序、降序或无序。若为升序返回1,若为降序返回2,若为无序返回3 。形参n为数组a中有效整数的个数。# include int find ( int a , int n ) int s , i ;if ( a0 a1 ) _;else s = 2 ;if ( s = 1 ) i = 1 ;while ( i n-1 ) if (_ ) s = 3 ; break ; _; if ( s = 2 )for ( i = 1 ; _; i+ )if ( ai ai+1 ) _; break ; return s ;void main ( ) int a 10 , k ;for ( k=0 ; k10 ; k+ ) a k = 2*k ;k = find( _, 10 ) ;switch ( k ) case 1 : cout “升序n” ; break ;case 2 : cout “降序n” ; break ;case 3 : cout ai+【答案】break【答案】in-1【答案】s=3【答案】a2下面函数inverse的功能是使一个字符串按逆序存放,请填空。# include # include void inverse ( char str ) char m ;int i , j ;for ( i=0 , j=strlen(str)-1 ; i_ ; i+ , _ ) m = str i ;str i = _;_; void main ( ) char s 100 ; cout “请输入一行字符:” ;cin.getline( s , 100 ) ;cout “调用前字符串:” s endl ;inverse( s ) ;cout “调用后字符串:” s endl ;【答案】strlen(str)/2【答案】j-【答案】strj【答案】strj=m1参考输出结果,完成填空。#includevoid swap1 ( int p1 , int p2 ) int temp = p1 ; p1 = p2 ; p2 = temp ; void swap2 ( int &p1 , int &p2 ) int temp = p1 ; p1 = p2 ; p2 = temp ; void swap3 ( int *p1 , int *p2 ) int temp = *p1 ; *p1 = *p2 ; *p2 = temp ; void swap4 ( int *p1 , int *p2 ) int *temp = p1 ; p1 = p2 ; p2 = temp ; void main ( ) int a = 3 , b = 6 ;swap1( ) ;cout “a=” a “tb=” b endl ; /输出:a=3 b=6a = 3 ; b = 6 ;swap2( ) ;cout “a=” a “tb=” b endl ; /输出:a=6 b=3a = 3 ; b = 6 ;swap3( ) ;cout “a=” a “tb=” b endl ; /输出:a=6 b=3a = 3 ; b = 6 ;swap4( ) ;cout “a=” a “tb=” b endl ; /输出:a=3 b=6【答案】 a, b【答案】 a, b【答案】 &a, &b【答案】 &a, &b2下面函数inverse的功能是使一个字符串按逆序存放,请填空。# include # include void inverse ( char *str ) char m ; int i , j ; for ( i=0 , j=strlen( )-1 ; ij ; i+ , ) m = *( str+ i ) ; *( str+ i ) = ; ; void main ( ) char s 100 ; cout “请输入一行字符:” ; cin.getline( s , 100 ) ; cout “调用前字符串:” s endl ;inverse( ) ; cout “调用后字符串:” s endl ; 【答案】 str【答案】 j-【答案】 *(str+j)【答案】 *(str+i)【答案】 s3输入一个字符串,串内含有数字和非数字字符,将其中连续的数字串转换为对应的一个整数,依次存放到另一个整型数组b中。例如:输入字符串abc2345up345rf78fd945,将2345存放到b0、345放入b1、。统计出字符串中所含整数的个数,并输出这些整数。#includeint cton( char *p1, int *p ) /转换函数,返回值是提取数字的个数 int m, n = 0 ;char c;while ( )if ( c=0 & c=0 & c=9 )m = m*10+(c-48) ; /将这一串连续的数字字符转换为整数p n = m ; /将这个转换好的整数存入数组 ; /提取出的整数个数增加1return n ;void main( ) int i , n , a 20 ;char p 100 ;cout 请输入一行带有数字的字符串: ;cin.getline( p , 100 ) ;n = cton( ) ;cout 字符串 p 中包含 n 个整数为:n ;for ( i=0 ; in ; i+ ) cout a i t ;cout endl ;【答案】 c=p1+【答案】 m=c-48;【答案】 n+1【答案】 p,a1 编写程序: 字符串处理函数:char * stringcat ( char *s1, const char *s2 );功能:将字符串s2 拼接到 字符串s1 尾部,并将字符串s1 返回。编写main()函数 对stringcat()函数 进行测试。编写程序如下:【答案】#include#includechar *stringcat(char *s1,const char *s2)char *p=s1;while(*p+);p-;while(*p+=*s2+);return s1;void main()char s150,s220;couts1s2;coutthey arens1ns2endl;cout拼接后stringcat(s1,s2)endl;2编写程序:字符串处理函数:int stringlen ( const char *s );功能:求字符串s 中所含字符的个数,并将该个数返回。编写main()函数 对stringlen ()函数 进行测试。编写程序如下:【答案】#include#includeint stringlen(const char *s)const char *p=s;int

温馨提示

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

评论

0/150

提交评论