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

下载本文档

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

文档简介

1、1编写程序:用递归算法实现函数:int sum( int n ); 其功能是求 1+2+3+n 的值并返回。要求编写主函数main()去调用递归函数sum()。编写程序如下:【答案】#include <iostream.h>int sum (int n)if(n=0|n=1) return 1;else return n+sum(n-1);void main()int n;cout<<"please input n:n"cin>>n;cout<<"1+2+3+.+"<<n<<&quo

2、t;="<<sum(n)<<endl;1 编写程序:分别求出acm(5,3)、acm(4,2)、acm(5,5)的值。阿克曼函数定义如下:n+1 m=0acm ( m , n ) = acm ( m-1 , n ) n=0acm ( m-1 , acm ( m, n-1 ) ) n>0,m>0编写程序如下:【答案】#include <iostream.h>int acm(int m, int n);void main()int m,n;cout<<"please input m and n:n"cin&g

3、t;>m>>n;cout<<"acm(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

4、n ); 功能是:将 n 逐位取出正序输出算法提示:重复除以10取余数,直到商为0为止;若函数中先输出余数,后递归调用,则为反序输出;若函数中先递归调用,后输出余数,则为正序输出。编写程序如下:【答案】#include <iostream.h>void f1(int n);void f2(int n);void main()int n;cout<<"please input an int number n="cin>>n;cout<<"n反序输出"f1(n);cout<<endl;cout<

5、;<"n正序输出"f2(n);cout<<endl;void f1(int n)cout<<n%10;if (n<10) return;else f1(n/10);void f2(int n)if (n>10)f2(n/10);cout<<n%10 ;return;-1编写程序:用“筛选法”求出 2 80 之间的所有素数,要求每行输出4个素数。编写程序如下:【答案】#include<iostream.h>#include<iomanip.h>void main ( ) int prime 39 ;

6、 for ( int i=0 , j=3 ; i<39 ; i+ , j+=2 ) prime i = j ; for ( i=0 ; i<39 ; i+ ) if ( prime i ) for ( j = i+1 ; j<39 ; j+ ) if ( prime j && prime j % prime i = 0 ) prime j = 0 ; cout << "280之间的素数:n" ; for ( j=0 , i=0 ; i<39 ; i+ ) if ( prime i ) cout << setw(

7、8) << prime i ; j+ ; if ( j%4 = 0 ) cout << endl ; 2编写程序:随机产生10个三位数的整数并存入数组中,用“选择排序法”对数组中的随机数进行升序排序。编写程序如下:【答案】#include<iostream.h>#include<iomanip.h>#include<stdlib.h>void main ( ) int a 10 , i , k ; unsigned seed ; cout << "请输入一个随机数种子(无符号整数)= " cin >

8、;> seed ; srand( seed ) ; cout << "数组中的内容:" ; for ( i=0 ; i<10 ; i+ ) a i = rand()%900 + 100 ; cout << setw(6) << a i ; cout << endl ;int j , temp ; cout << "排序前:" ; for ( i=0 ; i<10 ; i+ ) cout << setw(6) << a i ; cout <<

9、endl ; for ( i=0 ; i<9 ; i+ ) temp = a i ; k = i ; for ( j = i+1 ; j<10 ; j+ ) if ( temp > a j ) temp = a j ; k = j ; if ( k != i ) temp = a i ; a i = a k ; a k = temp ; cout << "排序后:" ; for ( i=0 ; i<10 ; i+ ) cout << setw(6) << a i ; cout << endl ; 3编写

10、程序:随机产生10个四位数的整数并存入数组中,用“冒泡排序法”对数组中的随机数进行降序排序。编写程序如下:【答案】#include<iostream.h>#include<iomanip.h>#include<stdlib.h>void main ( ) int a 10 , i , k ; unsigned seed ; cout << "请输入一个随机数种子(无符号整数)= " cin >> seed ; srand( seed ) ; cout << "数组中的内容:" ; f

11、or ( i=0 ; i<10 ; i+ ) a i = rand()%900 + 100 ; cout << setw(6) << a i ; cout << endl ; int j , temp ; cout << "排序前:" ; for ( i=0 ; i<10; i+ ) cout << setw(6) << a i ; cout << endl ; for ( i=0 ; i<9 ; i+ ) for ( j=9 ; j>i ; j- ) if ( a

12、j > a j-1 ) temp = a j ; a j = a j-1 ; a j-1 = temp ; cout << "排序后:" ; for ( i=0 ; i<10 ; i+ ) cout << setw(6) << a i ; cout << endl ;4编写程序:随机产生10个二位数的整数并存入数组中,再从键盘上任意输入一个要查找的整数,用“顺序查找法”在数组中进行查找。编写程序如下:【答案】#include<iostream.h>#include<iomanip.h>#in

13、clude<stdlib.h>void main ( ) int a 10 , i , k ; unsigned seed ; cout << "请输入一个随机数种子(无符号整数)= " ; cin >> seed ; srand( seed ) ; cout << "数组中的内容:" ; for ( i=0 ; i<10 ; i+ ) a i = rand()%90 + 10 ; cout << setw(6) << a i ; cout << endl ; co

14、ut << "请输入要查找的数:" ; cin >> k ; for ( i=0 ; i<10 ; i+ ) if ( a i = k ) cout << k << " 已找到!n " ; return ; cout << k << "未找到!n " ; 5编写程序:随机产生10个二位数的整数并存入数组中,对其进行升序排序,再从键盘上任意输入一个要查找的整数,用“折半查找法”在数组中进行查找。编写程序如下:【答案】#include<iostream.h

15、>#include<iomanip.h>#include<stdlib.h>void main ( ) int a 10 , i , j,low , high , mid ,k ; unsigned seed ; cout << "请输入一个随机数种子(无符号整数)= " ; cin >> seed ; srand( seed ) ; cout << "数组中的内容:" ; for ( i=0 ; i<10 ; i+ ) a i = rand()%90 + 10 ; cout <

16、;< setw(6) << a i ; cout << endl ; for ( i=0 ; i<9 ; i+ ) for ( j=i+1 ; j<10 ; j+ ) if ( a i > a j ) k = a i ; a i = a j ; a j = k ; cout << "数组中的内容(排序后):" ; for ( i=0 ; i<10 ; i+ ) cout << setw(4) << a i ; cout << endl ; cout << &qu

17、ot;请输入要查找的数:" cin >> k ; for ( low=0 , high=9 ; low <= high ; ) mid = ( low + high ) / 2 ; if ( a mid = k ) cout << k << "已找到!n " ; exit( 0 ) ; if ( k > a mid ) low = mid+1 ; else high = mid-1 ; cout << k << "未找到!n " ; 1编写程序:有数组int a 12 ;

18、找出该数组中的最大元素及其下标、最小元素及其下标。要求用指针实现。编写程序如下:【答案】#include<iostream.h>void main()int a12,*p,i,j=0;cout<<" please input 12 integer numbers"<<endl;for(i=0;i<12;i+)cin>>ai;for(i=0;i<12;i+)if(aj<ai)j=i;p=&aj;cout<<"the max number is a"<<j+1&

19、lt;<"="<<*p<<endl; for(i=0;i<12;i+)if(aj>ai)j=i;p=&aj;cout<<"the min number is a"<<j+1<<"="<<*p<<endl; 2编写程序:有数组int a 12 ; 并从键盘上输入12个整数存入数组a中,然后将数组a中的数据按逆序存放,要求不能借助于其他数组,并用指针实现。编写程序如下:【答案】#include<iostream.h>v

20、oid main()int a12,*p1,*p2,t,i;cout<<"please input 12 integer numbers"<<endl;for(i=0;i<12;i+)cin>>ai;cout<<"the former numbers are"for(i=0;i<12;i+)cout<<ai<<"t"cout<<endl;for(p1=a,p2=a+11;p1<p2;p1+,p2-)t=*p1;*p1=*p2;*p2=

21、t;cout<<"after transmation"for(i=0;i<12;i+)cout<<ai<<"t"cout<<endl;3编写程序:随机产生15个2288之间的整数并存入矩阵a 3 5 中,求矩阵a 3 5 的转置矩阵b 5 3 ,并按矩阵形式输出两矩阵,要求用指针实现。编写程序如下:【答案】#include<iostream.h>#include<iomanip.h>#include<stdlib.h>void main()int a35,b53,*

22、p,*q,i,j,t;unsigned seed;cout<<"please input a seed number"<<endl;cin>>seed;srand(seed);for(i=0;i<3;i+)for(j=0;j<5;j+)aij=rand()%66+22;cout<<"a35 =n"for(p=(int*)a,i=0;i<15;i+)if(i&&(i%5=0)cout<<endl;cout<<*p+<<'t'

23、cout<<endl;for(i=0;i<3;i+)for(j=0;j<5;j+)bji=aij;cout<<"b35 =n"for(q=(int*)b,j=0;j<5;j+)for(i=0;i<3;i+)cout<<bji<<"t"cout<<endl;1根据给出的运行结果,完善下面程序。运行结果:第1遍输出:Turbo CVisual C+Borland C+第2遍输出:Turbo CVisual C+Borland C+# include < iostream

24、.h >void main() int i ;char *name = "Turbo C" , "Visual C+" , "Borland C+" ;cout << "第1遍输出:" << endl ;for ( i=0; i<3; i+ )cout << name i << endl ;cout << "第2遍输出:" << endl ;for ( i=0; i<3; i+ )cout <<

25、 ( name + i ) << endl ;【答案】 【答案】 *2根据给出的运行结果,完善下面程序。运行结果:第1遍输出:Turbo CVisual C+Borland C+第2遍输出:Turbo CVisual C+Borland C+#include<iostream.h>void main() int i ;char *name = "Turbo C" , "Visual C+" , "Borland C+" ;char p ;cout << "第1遍输出:" <

26、< endl ;for ( i=0 ; i<3 ; i+ ) p = name + i ; /把name i 的地址赋给pcout << *p << "n" ; cout << "第2遍输出:" << endl ;for ( i=0; i<3; i+ )cout << name << endl ;【答案】 *【答案】 i1函数find() 用来判断数组a中的数据是升序、降序或无序。若为升序返回1,若为降序返回2,若为无序返回3 。形参n为数组a中有效整数的个数。#

27、include < iostream.h >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 ; k<10 ; k+ ) a k =

28、 2*k ;k = find( _, 10 ) ;switch ( k ) case 1 : cout << “升序n” ; break ;case 2 : cout << “降序n” ; break ;case 3 : cout << “无序n” ; 【答案】s=1【答案】ai>ai+【答案】break【答案】i<n-1【答案】s=3【答案】a2下面函数inverse的功能是使一个字符串按逆序存放,请填空。# include < iostream.h ># include < string.h >void inverse

29、 ( 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 ;【答案】

30、strlen(str)/2【答案】j-【答案】strj【答案】strj=m1参考输出结果,完成填空。#include<iostream.h>void 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 ; v

31、oid 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=

32、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的功能是使一个字符串按

33、逆序存放,请填空。# include < iostream.h ># include < string.h >void inverse ( char *str ) char m ; int i , j ; for ( i=0 , j=strlen( )-1 ; i<j ; i+ , ) m = *( str+ i ) ; *( str+ i ) = ; ; void main ( ) char s 100 ; cout << “请输入一行字符:” ; cin.getline( s , 100 ) ; cout << “调用前字符串:” &l

34、t;< s << endl ;inverse( ) ; cout << “调用后字符串:” << s << endl ; 【答案】 str【答案】 j-【答案】 *(str+j)【答案】 *(str+i)【答案】 s3输入一个字符串,串内含有数字和非数字字符,将其中连续的数字串转换为对应的一个整数,依次存放到另一个整型数组b中。例如:输入字符串abc2345up345rf78fd945,将2345存放到b0、345放入b1、。统计出字符串中所含整数的个数,并输出这些整数。#include<iostream.h>int cton(

35、 char *p1, int *p ) /转换函数,返回值是提取数字的个数 int m, n = 0 ;char c;while ( )if ( c>='0' && c<='9' ) /遇到了一串连续数字字符中的第一个 ; /将该数字字符转换为一位数字while ( (c=*p1+) && c>='0' && c<='9' )m = m*10+(c-48) ; /将这一串连续的数字字符转换为整数p n = m ; /将这个转换好的整数存入数组 ; /提取出的整

36、数个数增加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 ; i<n ; i+ ) cout << a i << &#

37、39;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<iostream.h>#include<fstream.h>char *stringcat(char *s1,const char *

38、s2)char *p=s1;while(*p+);p-;while(*p+=*s2+);return s1;void main()char s150,s220;cout<<"please input two stings of wordsn"cin>>s1>>s2;cout<<"they aren"<<s1<<"n"<<s2<<endl;cout<<"拼接后"<<stringcat(s1,s2)<<endl;2编写程序:字符串处理函数:int stringlen ( const char *s );功能:求字符串s 中所含字符的个数,并将该个数返回。编写main()函数 对stringlen ()函数 进行测试。编写程序如下:【答案】#include<iostream.h>#include<fstream.h>int stringlen(const char *s)const char *p=s;int n=0;while(*p+)n+;return n;voi

温馨提示

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

评论

0/150

提交评论