C++网上题库编程题.docx
- 文档编号:30727163
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:20
- 大小:18.99KB
C++网上题库编程题.docx
《C++网上题库编程题.docx》由会员分享,可在线阅读,更多相关《C++网上题库编程题.docx(20页珍藏版)》请在冰豆网上搜索。
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()
{
doublea,b,sn=0;
inti,n;
cin>>a>>n;
b=a;
for(i=1;i<=n;i++)
{
sn+=b;
b=b*10+a;
}
cout<<"sn="< return0; } 2.从键盘上输入一个正整数,判别它是否为一回文数。 如: 123321 #include usingnamespacestd; intmain() { inta,i,m(0),j; cin>>a;i=a; while(i>0) { j=i%10; m=10*m+j; i=i/10; } if(m==a) cout<<"Y"; else cout<<"N"; return0; } 3.n为一个整数(小于10万),它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? #include #include usingnamespacestd; intpp(intn) { inti=sqrt(n); if(i*i==n) return1; elsereturn0; } intmain() { inti; for(i=1;i<=10000;i++) if(pp(i+100)&&pp(i+168)) cout< return0; } 4.求1000之内的完全数。 说明: 完全数就是: 除了它本身以外所有因子之和等于其本身,例如: 6=1+2+3。 #include usingnamespacestd; intmain() {inti,j,s; for(i=1;i<=1000;i++) { for(s=0,j=1;j<=i/2;j++) { if(i%j==0) s+=j;} if(s==i) cout< } return0; } 5.求出[900,1000]间有偶数个因子(这里因子不含1和自身)的数有多少个,其中最小的一个? #include usingnamespacestd; intmain() { inta,i,k,c(0),min=0; for(a=1000;a>=900;a--){ k=0; for(i=2;i<=a/2;i++){ if(a%i==0) k++; } if(k! =0&&k%2==0){ c++;min=a; } } cout< return0; } 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)并且使函数值返回满足条件的正整数解的组数。 #include usingnamespacestd; intf(intM,intN) {if(M<=0 ||N<=0) return-1; intx,y,i; for(x=2;x<=N;x+=2) for(y=1;y<=N;y+=2) {if(7*x+4*y==M){ cout< } } intmain() { intM,N; cin>>M>>N; cout< return0; } 7 写一个函数,找出给定字符串中数字字符(即’0’—‘9’这10个数字)的个数(如字符串“olympic2000”中数字字符的个数为4个。 函数的原型为: intCalcDigital(char*str); 函数参数: str为所要处理的字符串。 函数返回值: 所给字符串中数字字符的个数。 #include #include usingnamespacestd; intCalcDigital(char*str) { intk,j,i(0); k=strlen(str); for(j=0;j<=k;j++) { if(str[j]<='9'&&str[j]>='0') i++; } returni; } intmain() { charstr[]="khd42944sgdkjfj7222222ghds"; cout< } 8编写一个自定义函数: intf(charx,intN),f()的功能是: 对给定的字符c和整数N,用c代表的符号打印一个N行的图案,每行开头没有任何空格。 比如,当c为"*"且N为5时,打印的图案如本题图所示。 且函数值返回1。 #include usingnamespacestd; intf(charx,intN); intmain() { f('*',5); return0; } intf(charch,intn){ inti,j=n; for(i=0;i cout<<"\n"; for(j=0;j<=i;j++) cout<<""< } return1; } 9编写一个自定义函数: intf(intN),f()的功能是: 对给定的正整数N,打印一个N行N列的由"A"、"B"、"C"以及空格""符号组成的方阵图案。 比如,当N为5时,打印的图案如本题图所示。 且函数值返回1。 #include usingnamespacestd; intf(intN) { inti,j; for(i=0;i {for(j=0;j {if(j==0||j==i)cout<<'A'<<""; if(j>i)cout<<'B'<<""; if(j =0)cout<<'C'<<""; } cout< return1; } intmain() {intN; cin>>N; f(N); return0; } 10编写函数f(),计算具有n个元素的一维数组a中每组相邻两个数的差,找出其中的最大差作为函数值返回。 #include usingnamespacestd; #defineM5 intf(inta[],intn) { intmax; max=a[1]-a[0]; for(inti=2;i<=M;i++) { if(a[M]-a[M-1]>max) max=a[M]-a[M-1]; } returnmax; } intmain() {inti,a[M]; for(i=0;i cin>>a[i]; cout<<"Theresultis"< return0; } 11根据下列要求和提示,编写一个函数f(N)判断某数N是否为“完全数”,N由主函数给出;如果N是“完全数” 则函数值返回1,N不是“完全数”则函数值返回0。 “完全数”定义如下: 如果一个数恰好等于它的因子之和 (因子包括1,不包括数本身),则称该数为“完全数”。 如: 6的因子是1、2、3,而6=1+2+3,则6是个“完全数”。 #include usingnamespacestd; intf(intN) { intm(0),i; for(i=1;i<=N/2;i++) if(N%i==0){m+=i; } if(m==N)return1; elsereturn0; } intmain() {intN; cin>>N; if(f(N)==1) cout< "< else cout< "< return0; } 12.编写程序,求e的值,e≈1+1/1! +1/2! +1/3! +1/4! +...,最后一项的值小于1e-6 #include usingnamespacestd; intmain() {doublee=1,t=1,i=1; while(1/t>1e-6) { t=t*i; i++; e=e+1/t;} cout<<"e="< return0;} 13.有十进制数字a,b,c,d和e,求满足式子: abcd*e=dcba(a非0,e非0非1)的四位数中: (1)共有多少个? (2)最小的abcd; (3)与之相对应的e #include usingnamespacestd; intmain() { intmin(9999),k(0); for(inta=1;a<=9;a++) for(intb=0;b<=9;b++) for(intc=0;c<=9;c++) for(intd=0;d<=9;d++) for(inte=2;e<=9;e++) {if((a*1000+b*100+c*10+d)*e==(d*1000+c*100+b*10+a)) { k++;min=(a*1000+b*100+c*10+d); if(k==1) {cout<<""< }} cout< return0; } 14.有一个7层灯塔,每层所点灯数都等于该层上一层的两倍,灯的总数是381盏,求: 塔底灯数? 第几层的灯数为48? #include usingnamespacestd; intmain() {intm; for(intd=1;d<381;d++) { intall(0);intt;t=d; for(inti=1;i<=7;i++) {all+=t; t/=2; } if(all==381) { cout<<"diyiceng"< for(intj=1;j<=7;j++) {if(m==48)cout<<"di"< ;m/=2;} }} return0; } 15.有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< 16.求数列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项的值="< } }} 17计算p的近似值,直到最后一项的绝对值小于10-8为止,近似公式为 #include #include #include usingnamespacestd; intmain() { doublesum=0,faction=1; intdenominator=1; intsign=1; while(fabs(faction)>=1e-8) { sum+=faction; denominator+=2; sign*=-1; faction=sign/double(denominator); } sum*=4; cout<<"π≈"< : fixed)< return0; } 18 用牛顿迭代法求方程3x3-4x2-5x+13=0在x=1附近的根,要求精度为10-6。 牛顿迭代公式为: x1=x0-f(x0)/f"(x0) #include #include usingnamespacestd; doublef(doublex) { return3*x*x*x-4*x*x-5*x+13; } doubledf(doublex) { return9*x*x-8*x-5; } intmain() { doublex0=0,x1=1; while(fabs(x1-x0)>1e-6){ x0=x1; x1=x0-f(x0)/df(x0); } cout< return0; } 19编写一个自定义函数: intf(intM,intN),函数f的功能是: 对给定的正整数M和N,找出满足方程"5x+6y=M"的正 整数解中x和y都是偶数的解。 要求: 若M和N不都是正整数,则结束函数并返回-1;只有M和N都是正整数时,且x,y∈[1,N], 才继续求解操作,并用二重循环进行求解: (1)在函数中输出满足条件的正整数解x和y, (2)使函数值返回满足条件的正整数解的组数。 见6 #include usingnamespacestd; intf(intM,intN); intmain() { cout< return0; } intf(intM,intN) { if(M<=0||N<=0)return-1; intx,y,cnt=0; for(x=2;x for(y=2;y if(5*x+6*y==M){ cout<<"x="< cnt++; } } } returncnt; } 20 求s=2+22+222+...+222...2的和,即第n个加数是一个n位的整数,且各数位上的数字均为2,例如当n=4时,s=2+22+222+2222。 要求设计一个函数intf(intn)求每一个加数,在main()中用累加求和方式求出总和。 #include usingnamespacestd; 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(intn) { intx=2; for(inti=1;i x=x*10+2; } returnx; } 23 有一个分数序列: 1/2,2/3,3/5,5/8,8/13,13/21。 求: (1)这个序列的前20项之和; (2)第15项的值。 #include usingnamespacestd; intfib(intn) { if(n==0||n==1)return1; returnfib(n-1)+fib(n-2); } intmain(intargc,char*argv[]) { cout< doubles=0; for(inti=1;i<=20;i++){ s+=fib(i)*1.0/fib(i+1); } cout< return0; } 22 所有能被13整除又能被17整除且末位不是偶数的三位数有几个? 最大的一个? #include usingnamespacestd; voidmain() { intn,max=100,count=0; for(n=100;n<=999;n++) if(n%13==0&&n%17==0&&n%2! =0) { count++; if(max }cout< cout<<"max="< } #include usingnamespacestd; intf(longa[],intn,longx); intmain() { longx=7; longa[5]={3,5,2,7,9}; cout< return0; } intf(longa[],intn,longx) { intcnt=-1; for(inti=0;i if(a[i]==x)cnt=i; } returncnt; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 网上 题库 编程