C++编程题及答案.docx

上传人:b****5 文档编号:27608054 上传时间:2023-07-03 格式:DOCX 页数:23 大小:22.10KB
下载 相关 举报
C++编程题及答案.docx_第1页
第1页 / 共23页
C++编程题及答案.docx_第2页
第2页 / 共23页
C++编程题及答案.docx_第3页
第3页 / 共23页
C++编程题及答案.docx_第4页
第4页 / 共23页
C++编程题及答案.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

C++编程题及答案.docx

《C++编程题及答案.docx》由会员分享,可在线阅读,更多相关《C++编程题及答案.docx(23页珍藏版)》请在冰豆网上搜索。

C++编程题及答案.docx

C++编程题及答案

C++编程题

1、求Sn=a+aa+aaa+aaaa+…+aa…a(n个a)之值,其中a是一个数字,n表示a的位数。

程序如下:

例如:

2+22+222+2222(此时a=2,n=4)

#include

usingnamespacestd;

intmain()

{

 inta,n,b=0,s=0;

 cin>>a>>n;

  for(inti=1;i<=n;i++)

  {

    b=b*10+a;

    s+=b;

  }

 cout<

  return0;

}

2、从键盘上输入一个正整数,判别它是否为一回文数。

如:

123321

程序如下:

#include

usingnamespacestd;

intmain()

{

 longi,n,m;

 cout<<"请输入一个整数"<

 cin>>m;

 cout<

i=m;n=m;m=0;

while(i)

 { m=m*10+i%10;

 i=i/10; }

 if(m==n)cout<<"是回文数";

 elsecout<<"不是回文数";

 cout<

 return0;

}

3、n为一个整数(小于10万),它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

程序如下:

#include

#include

usingnamespacestd;

intmain()

{

unsignedlonginti,x,y,z;

for(i=1;i<1000000;i++)

{

x=(sqrt(i+100));

y=(sqrt(i+268));

if(x*x==i+100&&y*y==i+268)

{

cout<

}

return0;

}

4、求1000之内的完全数。

Ÿ说明:

完全数就是:

除了它本身以外所有因子之和等于其本身,例如:

6=1+2+3。

程序如下:

#include

usingnamespacestd;

intmain()

{

 inti,j,t;

cout<<"1000以内的完全数为"<

for(i=1;i<=1000;i++)

t=0;

for(j=1;j

if(i%j==0)t+=j;

 if(t==i)

 cout<

}

return0;

}

5、求出[900,1000]间有偶数个因子(这里因子不含1和自身)的数有多少个,其中最小的一个?

程序如下:

#include

#include

usingnamespacestd;

voidmain()

{

  inti,w=0,j=0;

  floata;

 for(i=900;i<=1000;i++)

  {

 a=sqrt(i);

 if(a*a==i)

    j++;

 else

 w++;

  if(w==1)

       cout<<"[900,1000]间有偶数个因子的数的个数为"<

 }

cout<<"[900,1000]中最小的有偶数因子的数是";

cout<

}

6、编写一个自定义函数:

intf(intM,intN),f()的功能是:

对给定的正整数M和N,找出满足方程“7x+4y=M”的正整数解中x是偶数且y是奇数的解,其中:

x,y属于[1,N]的范围。

Ÿ要求:

若M和N不都是正整数,则结束函数并返回-1;只有M和N都是正整数时,才继续求解操作,用二重循环进行求解:

(1)在函数中输出满足条件的正整数解x和y,

(2)并且使函数值返回满足条件的正整数解的组数。

程序如下:

(可参考第20题)

intf(intM,intN)

{

 intx,y,count=0;

  if(M<1||N<1)return-1;

  for(x=2;x<=N/7;x+=2)

  {    

  for(y=1;y<=M/4;y+=2)

    {      

     if(7*x+4*y==M)

      { count++;

        cout<<"x="<

       }

     }

  }

  return(count?

count:

-1);

}

7、写一个函数:

找出一个整数数组中,第二大的数.

程序如下:

intfind_sec_max(intdata[],intcount)

{

intmaxnumber=data[0];

intsec_max=data[0];

for(inti=1;i

{

if(data[i]>maxnumber)

{

sec_max=maxnumber;

maxnumber=data[i];

}

else

{

if(data[i]>sec_max)

sec_max=data[i];

}

}

returnsec_max;

}

8、写一个函数,找出给定字符串中数字字符(即’0’—‘9’这10个数字)的个数(如字符串“olympic2000”中数字字符的个数为4个。

函数的原型为:

intCalcDigital(char*str);

 函数参数:

str为所要处理的字符串。

 函数返回值:

所给字符串中数字字符的个数。

程序如下:

int CalcDigital(char*str)

{

 if(str==NULL)

return0;

  intnum_of_digital=0;

 for(inti=0;str[i]!

=0x0;i++)

if(str[i]<=9&&str[i]>=0)

 num_of_digital++;

 returnnum_of_digital;

}

9、编写一个自定义函数:

intf(charx,intN),f()的功能是:

对给定的字符c和整数N,用c代表的符号打印一个N行的图案,每行开头没有任何空格。

比如,当c为"*"且N为5时,打印的图案如本题图所示。

且函数值返回1。

 

#include

usingnamespacestd;

intf(charx,intN);

intmain()

{

f('*',5);

return0;

}

程序如下:

#include

usingnamespacestd;

intf(charx,intN);

intmain()

{

f('*',5);

return0;

}

intf(charx,intN)

{

for(inti=0;i

{

 for(intj=0;j<=i;j++)

 cout<

 cout<

}

return0;

}

10、编写一个自定义函数:

intf(intN),f()的功能是:

对给定的正整数N,打印一个N行N列的由"A"、"B"、"C"以及空格""符号组成的方阵图案。

比如,当N为5时,打印的图案如本题图所示。

且函数值返回1。

 

#include

usingnamespacestd;

intf(intN);

voidmain()

{f(5);}

程序如下:

#include

usingnamespacestd;

intf(intN);

voidmain()

{f(5);}

intf(intN)

{

inti,j;

for(i=0;i

{

for(j=0;j

{

 if(j==0||j==i)cout<<"A";

 elseif(i

 else cout<<"C";

}

cout<

}

return1;

}

11、编写函数f(),计算具有n个元素的一维数组a中每组相邻两个数的差,找出其中的最大差作为函数值返回。

#include

usingnamespacestd;

#defineM5

intf(inta[],intn);

voidmain()

{inti,a[M];

 for(i=0;i

  cin>>a[i];

 cout<<"Theresultis"<

}

程序如下:

#include

usingnamespacestd;

#defineM5

intf(inta[],intn);

voidmain()

{inti,a[M];

 for(i=0;i

  cin>>a[i];

 cout<<"Theresultis"<

}

intf(inta[],intn)

{

inti,t;

t=abs(a[0]-a[1]);

for(i=1;i

 if(t

returnt;

}

12、根据下列要求和提示,编写一个函数f(N)判断某数N是否为“完全数”,N由主函数给出;如果N是“完全数”则函数值返回1,N不是“完全数”则函数值返回0。

“完全数”定义如下:

如果一个数恰好等于它的因子之和(因子包括1,不包括数本身),则称该数为“完全数”。

如:

6的因子是1、2、3,而6=1+2+3,则6是个“完全数”。

#include

usingnamespacestd;

intf(intN);

voidmain()

{intN;

 cin>>N;

 if(f(N)==1)

   cout<

"<

 else

   cout<

"<

}

程序如下:

#include

usingnamespacestd;

intf(intN);

voidmain()

{intN;

 cin>>N;

 if(f(N)==1)

   cout<

"<

 else

   cout<

"<

}

intf(intN)

{

inti,s=0;

for(i=1;i

 if(N%i==0)s=s+i;

if(s==N)return1;

return0;

}

13、编写程序,求e的值,e≈1+1/1!

+1/2!

+1/3!

+1/4!

+...,最后一项的值小于1e-6。

程序如下:

#include

usingnamespacestd;

intmain()

{

inti=0;

doublej=1,e=1;

while(1/j>1e-6)

{

i=i+1;

j=j*i;

e=e+1/j;

}

cout<<"e="<

return0;

}

14、有十进制数字a,b,c,d和e,求满足式子:

abcd*e=dcba(a非0,e非0非1)的四位数中:

(1)共有多少个?

(2)最小的abcd;

(3)与之相对应的e。

程序如下:

#include

usingnamespacestd;

intmain()

{

inta,b,c,d,e;

ints=0,f=0;

for(a=1;a<=9;a++)

 for(b=0;b<=9;b++)

 for(c=0;c<=9;c++)

  for(d=0;d<=9;d++)

  for(e=2;e<=9;e++)

   if((a*1000+b*100+c*10+d)*e==d*1000+c*100+b*10+a)

   {s++;

   if(f==0)

    cout<

   f=1;

   }

cout<

return0;

}

15、有一个7层灯塔,每层所点灯数都等于该层上一层的两倍,灯的总数是381盏,求:

塔底灯数?

第几层的灯数为48?

程序如下:

#include

usingnamespacestd;

voidmain()

{

inti,j,t,s;

for(i=1;;i++)

{

 t=i;

 s=0;

 for(j=1;j<=7;j++)

 {

 s=s+t;

 if(t==48)cout<

 t=t*2;

 }

 if(s==381)

 break;

}

cout<<"塔底灯数="<

}

16、有3个红球,5个白球,6个黑球,从中任意取出8个球,且其中必须有白球,请求出共有多少种取法?

程序如下:

#include

usingnamespacestd;

voidmain()

{

intr,w,b,c=0;

for(r=0;r<=3;r++)

 for(w=1;w<=5;w++)

 for(b=0;b<=6;b++)

  if(r+w+b==8)c++;

cout<

}

17、求数列1,3,3,3,5,5,5,5,5,7,7,7,7,7,7,7……。

求:

第40项的值;值为17的第1个数是数列中第几项?

程序如下:

#include

usingnamespacestd;

voidmain()

{

inti,j,c=0;

for(i=1;;i+=2)

{

 if(i==17)

 {

 cout<<"值为17的第1个数的项数为"<

 break;

 }

 for(j=1;j<=i;j++)

 {

 c++;

 if(c==40)cout<<"第40项的值ֵ="<

 }

}

}

18、计算p的近似值,直到最后一项的绝对值小于10-8为止,近似公式为

程序如下:

#include"stdafx.h"

#include

usingnamespacestd;

intmain(intargc,char*argv[])

{

doublepi=1,t=1,i=1;

while(1/>=1e-8)

{t=-t;

i=i+2;

pi=pi+t/i;

}

cout<<"pi="<<4*pi<

return0;

}

19、用牛顿迭代法求方程3x^3-4x^2-5x+13=0在x=1附近的根,要求精度为10-6。

牛顿迭代公式为:

x1=x0-f(x0)/f"(x0)

程序如下:

#include

#include

usingnamespacestd;

intmain()

{

doublediedai(doublea,doubleb,doublec,doubled,doublex);

doublea,b,c,d;

doublex=10000.0;

cout<<"请依次输入方程四个系数:

";

cin>>a>>b>>c>>d;

x=diedai(a,b,c,d,x);

cout<

return0;

}

doublediedai(doublea,doubleb,doublec,doubled,doublex)

{

while(abs(a*x*x*x+b*x*x+c*x+d)>0.000001)

{

x=x-(a*x*x*x+b*x*x+c*x+d)/(3*a*x*x+2*b*x+c);

}

returnx;

}

20、编写一个自定义函数:

intf(int M,intN),函数f的功能是:

对给定的正整数M和N,找出满足方程"5x+6y=M"的正整数解中x和y都是偶数的解。

要求:

若M和N不都是正整数,则结束函数并返回-1;只有M和N都是正整数时,且x,y∈[1,N],才继续求解操作,并用二重循环进行求解:

(1)在函数中输出满足条件的正整数解x和y,

(2)使函数值返回满足条件的正整数解的组数。

#include

usingnamespace std;

intf(intM,intN);

voidmain()

{ cout<

程序如下:

#include

usingnamespace std;

intf(intM,intN);

voidmain()

{ cout<

intf(intM,intN)

intx,y;

intn=0;

  if(M<0||N<0)return-1;

  for(x=1;x

   for(y=1;y

    { if(5*x+6*y==M&&x%2==0&&y%2==0) 

     {n=n+1;

      cout<<"x="<

    } 

  returnn;

}

21、编写一个自定义函数:

intf(longa[],intn,longx),f()的功能是:

对给定的含有n个元素的一维数组a及某个指定数x,查找数组a中是否存在元素值等于x的元素,若存在,则函数值返回找到的下标最大的那个元素的下标;若不存在,则函数值返回-1。

#include 

usingnamespace std;

intf(longa[],intn,longx);

voidmain()

{longx=7;

long a[5]={3,5,2,7,9};

cout<

}

程序如下:

#include 

usingnamespace std;

intf(longa[],intn,longx);

voidmain()

{longx=7;

long a[5]={3,5,2,7,9};

cout<

}

intf(longa[],intn,longx) 

{

  inti;

  intmaxi=-1;

  for(i=1;i

   if(a[i]==x) maxi=i; 

  if(maxi>=0)returnmaxi;

  elsereturn-1;

}

22、求s=2+22+222+...+222...2的和,即第n个加数是一个n位的整数,且各数位上的数字均为2,例如当n=4时,s=2+22+222+2222。

要求设计一个函数intf(intn)求每一个加数,在main()中用累加求和方式求出总和。

#include"stdafx.h"

#include

intf(intn);

intmain(intargc,char*argv[])

{

ints=0,i,n;

cout<<"Inputn:

";

cin>>n;

for(i=1;i<=n;i++)

 s=s+f(i);

cout<<"2+22+222+...="<

return0;

}

程序如下:

#include

intf(intn);

intmain(intargc,char*argv[])

{

ints=0,i,n;

cout<<"Inputn:

";

cin>>n;

for(i=1;i<=n;i++)

 s=s+f(i);

cout<<"2+22+222+...="<

return0;

}

intf(int n)

{

int i,j=0;

for(i=1;i<=n;i++)

j=2+j*10;

returnj;}

23、所有能被13整除又能被17整除且末位不是偶数的三位数有几个?

最大的一个?

程序如下:

#include

usingnamespacestd;

intmain(intargc,char*argv[])

{

inti,j=0;

for(i=999;i>=101;i-=2)

if(i%(13*17)==0) 

{j++;

 if(j==1)c=i;

cout<

return0;

}

24、有一个分数序列:

1/2,2/3,3/5

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

当前位置:首页 > 人文社科 > 视频讲堂

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

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