c+编程大题总汇.docx
- 文档编号:5238858
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:20
- 大小:21.96KB
c+编程大题总汇.docx
《c+编程大题总汇.docx》由会员分享,可在线阅读,更多相关《c+编程大题总汇.docx(20页珍藏版)》请在冰豆网上搜索。
c+编程大题总汇
1.编写程序:
用递归算法实现函数:
intsum(intn);其功能是求1+2+3+…+n的值并返回。
要求编写主函数main()去调用递归函数sum()。
编写程序如下:
【答案】
#include<>
intsum(intn)
{
if(n==0||n==1)return1;
elsereturnn+sum(n-1);
}
voidmain()
{
intn;
cout<<"pleaseinputn:
\n";
cin>>n;
cout<<"1+2+3+...+"< } 1.编写程序: 分别求出acm(5,3)、acm(4,2)、acm(5,5)的值。 阿克曼函数定义如下: n+1m=0 acm(m,n)=acm(m-1,n)n=0 acm(m-1,acm(m,n-1))n>0,m>0 编写程序如下: 【答案】#include<> intacm(intm,intn); voidmain() { intm,n; cout<<"pleaseinputmandn: \n"; cin>>m>>n; cout<<"acm(m,n)="< } intacm(intm,intn) { if(m==0) returnn+1; else { if(n==0) returnacm(m-1,n); else returnacm(m-1,acm(m,n-1)); } } 输入: 53输出: 5 输入: 42输出: 3 输入: 55输出: 6 2.编写程序: 要求输入一个整数n,能够逐位取出正序或反序输出,用递归算法实现: 函数: voidf1(intn);功能是: 将n逐位取出反序输出 函数: voidf2(intn);功能是: 将n逐位取出正序输出 算法提示: 重复除以10取余数,直到商为0为止;若函数中先输出余数,后递归调用,则为反序输出;若函数中先递归调用,后输出余数,则为正序输出。 编写程序如下: 【答案】#include<> voidf1(intn); voidf2(intn); voidmain() { intn; cout<<"pleaseinputanintnumbern="; cin>>n; cout<<"n反序输出"; f1(n); cout< cout<<"n正序输出"; f2(n); cout< } voidf1(intn) { cout< if(n<10)return; elsef1(n/10); } voidf2(intn) { if(n>10) f2(n/10); cout< return; }---------------------------------------------------- 1.编写程序: 用“筛选法”求出2~80之间的所有素数,要求每行输出4个素数。 编写程序如下: 【答案】#include<> #include<> voidmain() {intprime[39]; for(inti=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<<"2~80之间的素数: \n"; for(j=0,i=0;i<39;i++) if(prime[i]) {cout< if(j%4==0) cout< } 2.编写程序: 随机产生10个三位数的整数并存入数组中,用“选择排序法”对数组中的随机数进行升序排序。 编写程序如下: 【答案】#include<> #include<> #include<> voidmain() {inta[10],i,k; unsignedseed; cout<<"请输入一个随机数种子(无符号整数)="; cin>>seed; srand(seed); cout<<"数组中的内容: "; for(i=0;i<10;i++) {a[i]=rand()%900+100; cout< cout< intj,temp; cout<<"排序前: "; for(i=0;i<10;i++)cout< cout< 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< cout< } 3.编写程序: 随机产生10个四位数的整数并存入数组中,用“冒泡排序法”对数组中的随机数进行降序排序。 编写程序如下: 【答案】#include<> #include<> #include<> voidmain() {inta[10],i,k; unsignedseed; cout<<"请输入一个随机数种子(无符号整数)="; cin>>seed; srand(seed); cout<<"数组中的内容: "; for(i=0;i<10;i++) {a[i]=rand()%900+100; cout< cout< intj,temp; cout<<"排序前: "; for(i=0;i<10;i++)cout< cout< for(i=0;i<9;i++) for(j=9;j>i;j--) if(a[j]>a[j-1]){temp=a[j];a[j]=a[j-1];a[j-1]=temp;} cout<<"排序后: "; for(i=0;i<10;i++)cout< cout< } 4.编写程序: 随机产生10个二位数的整数并存入数组中,再从键盘上任意输入一个要查找的整数,用“顺序查找法”在数组中进行查找。 编写程序如下: 【答案】#include<> #include<> #include<> voidmain() {inta[10],i,k; unsignedseed; cout<<"请输入一个随机数种子(无符号整数)="; cin>>seed; srand(seed); cout<<"数组中的内容: "; for(i=0;i<10;i++) {a[i]=rand()%90+10; cout< cout< cout<<"请输入要查找的数: "; cin>>k; for(i=0;i<10;i++) if(a[i]==k){cout< \n";return;} cout< \n"; } 5.编写程序: 随机产生10个二位数的整数并存入数组中,对其进行升序排序,再从键盘上任意输入一个要查找的整数,用“折半查找法”在数组中进行查找。 编写程序如下: 【答案】#include<> #include<> #include<> voidmain() {inta[10],i,j,low,high,mid,k; unsignedseed; cout<<"请输入一个随机数种子(无符号整数)="; cin>>seed; srand(seed); cout<<"数组中的内容: "; for(i=0;i<10;i++) {a[i]=rand()%90+10; cout< cout< 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< cout< cout<<"请输入要查找的数: "; cin>>k; for(low=0,high=9;low<=high;) {mid=(low+high)/2; if(a[mid]==k) {cout< \n"; exit(0);} if(k>a[mid])low=mid+1; elsehigh=mid-1;} cout< \n"; } 1.编写程序: 有数组inta[12];找出该数组中的最大元素及其下标、最小元素及其下标。 要求用指针实现。 编写程序如下: 【答案】#include<> voidmain() { inta[12],*p,i,j=0; cout<<"pleaseinput12integernumbers"< for(i=0;i<12;i++)cin>>a[i]; for(i=0;i<12;i++) { if(a[j] j=i; p=&a[j]; } cout<<"themaxnumberisa["< for(i=0;i<12;i++) { if(a[j]>a[i]) j=i; p=&a[j]; } cout<<"theminnumberisa["< } 2.编写程序: 有数组inta[12];并从键盘上输入12个整数存入数组a中,然后将数组a中的数据按逆序存放,要求不能借助于其他数组,并用指针实现。 编写程序如下: 【答案】#include<> voidmain() { inta[12],*p1,*p2,t,i; cout<<"pleaseinput12integernumbers"< for(i=0;i<12;i++)cin>>a[i]; cout<<"theformernumbersare"; for(i=0;i<12;i++)cout< cout< for(p1=a,p2=a+11;p1 {t=*p1;*p1=*p2;*p2=t;} cout<<"aftertransmation"; for(i=0;i<12;i++)cout< cout< } 3.编写程序: 随机产生15个22~88之间的整数并存入矩阵a[3][5]中,求矩阵a[3][5]的转置矩阵b[5][3],并按矩阵形式输出两矩阵,要求用指针实现。 编写程序如下: 【答案】#include<> #include<> #include<> voidmain() { inta[3][5],b[5][3],*p,*q,i,j,t; unsignedseed; cout<<"pleaseinputaseednumber"< cin>>seed; srand(seed); for(i=0;i<3;i++) { for(j=0;j<5;j++) a[i][j]=rand()%66+22; } cout<<"a[3][5]=\n"; for(p=(int*)a,i=0;i<15;i++) { if(i&&(i%5==0))cout< cout<<*p++<<'\t'; } cout< for(i=0;i<3;i++) { for(j=0;j<5;j++) b[j][i]=a[i][j]; } cout<<"b[3][5]=\n"; for(q=(int*)b,j=0;j<5;j++) { for(i=0;i<3;i++) cout< cout< } } 1.根据给出的运行结果,完善下面程序。 运行结果: 第1遍输出: TurboC VisualC++ BorlandC++ 第2遍输出: TurboC VisualC++ BorlandC++ #include<> voidmain() {inti; char*name①={"TurboC","VisualC++","BorlandC++"}; cout<<"第1遍输出: "< for(i=0;i<3;i++) cout< cout<<"第2遍输出: "< for(i=0;i<3;i++) cout<<②(name+i)< } 【答案】①[] 【答案】②* 2.根据给出的运行结果,完善下面程序。 运行结果: 第1遍输出: TurboC VisualC++ BorlandC++ 第2遍输出: TurboC VisualC++ BorlandC++ #include<> voidmain() {inti; char*name[]={"TurboC","VisualC++","BorlandC++"}; char①p; cout<<"第1遍输出: "< for(i=0;i<3;i++) {p=name+i;//把name[i]的地址赋给p cout<<*p<<"\n";} cout<<"第2遍输出: "< for(i=0;i<3;i++) cout< } 【答案】①* 【答案】②[i] 1.函数find()用来判断数组a中的数据是升序、降序或无序。 若为升序返回1,若为降序返回2,若为无序返回3。 形参n为数组a中有效整数的个数。 #include<> intfind(inta[],intn) {ints,i; if(a[0] elses=2; if(s==1) {i=1; while(i {if(_________②_________){s=3;break;} _________③_________;} } if(s==2) for(i=1;_________④_________;i++) if(a[i] returns; } voidmain() {inta[10],k; for(k=0;k<10;k++)a[k]=2*k; k=find(_________⑥_________,10); switch(k) {case1: cout<<“升序\n”;break; case2: cout<<“降序\n”;break; case3: cout<<“无序\n”;} } 【答案】①s=1 【答案】②a[i]>a[i+] 【答案】③break 【答案】④i 【答案】⑤s=3 【答案】⑥a 2.下面函数inverse的功能是使一个字符串按逆序存放,请填空。 #include<> #include<> voidinverse(charstr[]) {charm; inti,j; for(i=0,j=strlen(str)-1;i<_________①_________;i++,_________②_________) {m=str[i]; str[i]=_________③_________; _________④_________;} } voidmain() {chars[100]; cout<<“请输入一行字符: ”; (s,100); cout<<“调用前字符串: ”< inverse(s); cout<<“调用后字符串: ”< } 【答案】①strlen(str)/2 【答案】②j-- 【答案】③str[j] 【答案】④str[j]=m 1.参考输出结果,完成填空。 #include<> voidswap1(intp1,intp2) {inttemp=p1;p1=p2;p2=temp;} voidswap2(int&p1,int&p2) {inttemp=p1;p1=p2;p2=temp;} voidswap3(int*p1,int*p2) {inttemp=*p1;*p1=*p2;*p2=temp;} voidswap4(int*p1,int*p2) {int*temp=p1;p1=p2;p2=temp;} voidmain() {inta=3,b=6; swap1(①); cout<<“a=”< a=3b=6 a=3;b=6; swap2(②); cout<<“a=”< a=6b=3 a=3;b=6; swap3(③); cout<<“a=”< a=6b=3 a=3;b=6; swap4(④);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编程 总汇