1、c+编程大题总汇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,
2、n)=acm(m,n)endl;int acm(int m,int n) if(m=0) return n+1; else if(n=0) return acm(m-1,n); else return 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为止;若函数中先输出余
3、数,后递归调用,则为反序输出;若函数中先递归调用,后输出余数,则为正序输出。编写程序如下:【答案】#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#includevo
4、id 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 =
5、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 排序前: ; fo
6、r ( 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个四位数的整数并存入数组中,用“冒泡排序法”对数组中的随机数
7、进行降序排序。编写程序如下:【答案】#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
8、=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 ; sran
9、d( 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
10、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+
11、 ) 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 plea
12、se 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
13、,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 ,并按矩阵形式输出两矩阵,要求用指
14、针实现。编写程序如下:【答案】#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+) bj
15、i=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 ;cou
16、t 第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
17、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 (
18、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的功能是使一个字符串按逆序存放,请填空。# incl
19、ude # 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 “请输入一行字符:” ;( s , 100 ) ;cout “调用前字符串:” s endl ;inverse( s ) ;cout “调用后字符串:” s endl ;【答案】strlen(str)/2【答案】j-【答案】strj【答案】strj=m1参考输出结果,完成填空。#i
20、ncludevoid 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 ma
21、in ( ) 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,
22、 &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 “请输入一行字符:” ; ( 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 ) /
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1