c+编程大题总汇.docx

上传人:b****4 文档编号:5238858 上传时间:2022-12-14 格式:DOCX 页数:20 大小:21.96KB
下载 相关 举报
c+编程大题总汇.docx_第1页
第1页 / 共20页
c+编程大题总汇.docx_第2页
第2页 / 共20页
c+编程大题总汇.docx_第3页
第3页 / 共20页
c+编程大题总汇.docx_第4页
第4页 / 共20页
c+编程大题总汇.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

c+编程大题总汇.docx

《c+编程大题总汇.docx》由会员分享,可在线阅读,更多相关《c+编程大题总汇.docx(20页珍藏版)》请在冰豆网上搜索。

c+编程大题总汇.docx

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(④);

cout<<“a=”<

a=3b=6

}

【答案】①a,b

【答案】②a,b

【答案】③&a,&b

【答案】④&a,&b

2.下面函数inverse的功能是使一个字符串按逆序存放,请填空。

#include<>

#include<>

voidinverse(char*str)

{charm;

inti,j;

for(i=0,j=strlen(①)-1;i

{m=*(str+i);

*(str+i)=③;

④;}

}

voidmain()

{chars[100];

cout<<“请输入一行字符:

”;

(s,100);

cout<<“调用前字符串:

”<

inverse(⑤);

cout<<“调用后字符串:

”<

}

【答案】①str

【答案】②j--

【答案】③*(str+j)

【答案】④*(str+i)

【答案】⑤s

3.输入一个字符串,串内含有数字和非数字字符,将其中连续的数字串转换为对应的一个整数,依次存放到另一个整型数组b中。

例如:

输入字符串abc2345up345rf78fd945,将2345存放到b[0]、345放入b[1]、…。

统计出字符串中所含整数的个数,并输出这些整数。

#include<>

intcton(char*p1,int*p)//

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1