C++大题库1.docx
- 文档编号:28396035
- 上传时间:2023-07-13
- 格式:DOCX
- 页数:44
- 大小:24.57KB
C++大题库1.docx
《C++大题库1.docx》由会员分享,可在线阅读,更多相关《C++大题库1.docx(44页珍藏版)》请在冰豆网上搜索。
C++大题库1
124
编写一个函数voidSelectSort(inta[],intn),采用选择排序的方法按升序排列数组a中的n个元素。
答案:
inti,j,k;
for(i=1;i k=i-1; for(j=i;j ifa[j] intx=a[i-1];a[i-1]=a[k];a[k]=x; } 125 求多项式1! +2! +3! +……+15! 的值。 存入变量out.dat中。 答案: for(inti=1;i<=15;i++) { n=n*i; s+=n; } cout< out=s; 128 求1-200之间的所有质数,将指数和存入变量sum中。 答案: for(m=2;m<=N;m++) { inti,tmp=(int)sqrt(m); for(i=2;i<=tmp;i++) if(m%i==0)break; if(i>tmp) { cout<<""""< sum+=m; } } 159 在一维数组中分类统计正数和负数的个数。 正数的个数存入变量C1中,负数个数存入变量C2中。 —————————————————————— 标准答案: for(i=0;i<10;i++) if(a[i]>0) c1++; elseif(a[i]<0) c2++; 160 在包含10个数的一维整数数组a中查找给定的数据num,如果找到则返回1,未找到返回0. 答案: for(inti=0;i<10;i++) if(a[i]==num)break; if(i<10) return1; else return0; 163 题目: 在包含10个数的一堆整数数组a中查找最大元素max和最小元素min. -----【标准答案】------- ---------------------------- max=a[0]; min=a[0]' for(i=1;i<10;i++){ if(a[i]>max)max=a[i]; if(a[i] } ----------------------------- 165 用while循环编程,求自然数1至100之间各奇数平方和sum. #include #include voidmain() { inti=0,sum=0; ------------------ ------------------ voidwwjt(int); wwjt(sum); } voidwwjt(into) { fstreammyile; myfile.open("out.txt",ios: : out); myfile< myfile.close(); } 答案: while(i<=100) {sum+=i*i;i+=2;} cout<<"sum="< 177 编写一个函数,统计出一维数组中大于等于所有元素平均值的元素个数并返回它。 答案: doublem=0; inti; for(i=0;i m=m/n; intc=0; for(i=0;i if(a[i]>=m)c++; returnc; 214 判断一个数23437是否是素数(要求程序中设置一个参数flag,flag为1代表是素数,但0代表不是)。 答案: for(n=2;n<=m/2&&flag;n++) if(m%n==0)flag=0; cout< 217 已知一个数m(=252)求各位数字之和 答案---------------------------------- while(m! =0) {n=m%10;s+=n;m=m/10;} ----------------------------------- 219 已知一个数m(m=252),求各位数字之积f。 答案: while(m! =0) {n=m%10;f*=n;m=m/10;} 221 求1-1000之间同构数及个数n。 同构数是: "某数与其自身的平方数的后几位相同"。 例如: 25*25=625. 答案: { i=1,k=m; j=m*m; while(k! =0) {k/=10; i*=10;} if(j%i==m) {n++;cout< 223 已知10个四位数输出所有对称数及个数n。 例如1221,2332都是对称数。 答案: inta,b,c,d; a=m[i]/1000; b=m[i]%1000/100; c=m[i]%100/10; d=m[i]%10; if(a==d&&c==b) {cout< n++;} 226 将1-100之间奇数顺序累加存入n中,直到其和等于或大于200为止。 答案: for(m=1;m<=100&&n<200;m+=2) n+=m; 254 用"辗转相除方法"计算两个数x,y的最大公约数。 答案: n=x%y; while(n! =0) {x=y;y=n;n=x%y;} 255 利用选择法将10个数降序排列。 答案: for(i=0;i<9;i++) {k=i; for(j=i+1;j<10;j--) if(n[k] k=j; t=n[i];n[i]=n[k];n[k]=t;} 256 题目: 利用冒泡法将10个数按降序排列 ———————————————————————— #include #include #include voidwriteinfile(intn[]); voidmain() { intn[]={5642378567},i,j,k; ******************************* ******************************* for(i=0;i<10;i++) cout< writeinfile 标准答案: for(i=0;i<9;i++) { for(j=0;j<9;j++) if(n[j+1}>n[j]) (k=n[j+1];n[j+1]=n[j];n[j];n[j]=k;) } 257 从若干学生成绩中统计高于平均分的人数k,用-1作为学生成绩的结束标志(说明: 数组cj表示学生成绩)。 答案: while(cj[n]) {sum+=cj[n];n++;) aver=sum/n; for(i=0;i if(cj[i]>aver)k++; cout< 258 已知三个数a,b,c,按由大到小的顺序存入a,b,c中并输出。 #include #include #include voidwriteinfile(inta,intb,intc); voidmain() { inta=8,b=56,c=7,t; ---------------------- ----------------------ccout< writeinfile(a,b,c); } voidwriteinfile(inta,intb,intc) { fstreammyile; myfile.open("f.txt",ios: : out); myfile< myfile.close(); } 答案: if(a>b){t=a;a=b;b=t;} if(a>c){t=a;a=c;c=t;} if(b>c){t=b;b=c;c=t;} 259 利用顺序排列法将10个数按降序排列。 答案: for(i=0;i<9;i++) for(j=i+1;j<10;i++) if(n[i] {k=n[j];n[j]=n[i];n[i]=k;} 261 对给定的10个数置逆序排列。 答案: for(i=0;i<5;i++) {t=n[i];n[i]=n[9-i];n[9-i]=t;} for(i=0;i<10;i++) cout< 262 题目: 求具有10个数的数组中的最大值和次最大值,并把最大值和a[0]中的数对调,次最大数和a[1]中的数对调,次最大数和a[1]中的数对调 ---------------------------------- 注意: 部分源程序给出如下,请勿改动主函数main和其它函数中的任何内容,仅在函数的花括号中填入所编写的若干语句。 ----------------------------------------------------------- #include #include #include voidwriteinfile(inta[]0; voidmain) {inta[10]={39,-47,21,2,-8,15,98,-3,87,56},max,cmax,j,l,i,t,m,n; writeinfile(a); } voidwriteinfile(inta[]) { intk; fstreammyfile; myfile.open("f.txt",ios: : out); for(k=0;k<10;k++) myfile< myfile.close(); } 标准答案 max=a[0]; cmax=a[1]; for(i=1;i<10;i++) if(a[i]>max) {max=a[i]; m=i;} t=a[0]; a[0]=a[m]; a[m]=t; for(j=2;j<10;j++) if(a[j]>cmax) {cmax=a[j]; n=j;} l=a[1]; a[1]=a[n]; a[n]=l; 263 已知n,计算n以内的所有素数之和sum。 #include #include #include voidwriteinfile(intn); voidmain() { intn,k,m,l,sum=0; m=100; ----------------- ---------------- writeinfile(sum); } voidwriteinfile(intn) { fstreammyfile; myfile.open("f.txt",ios: : out); myfile< myfile.close(); } 答案: for(k=2;k {m=1; for(l=2;l<=k/2&&m==1;l++) if(k%l==0)m=0; if(m)sum+=k;} cout< 265 将10进制正整数N转化成K进制(K<9)按位输出到m。 答案: m=0; while(n=0) {m=m+n%k*l; n=n/k;l*10;} 266 已知10个数求最大值及最小值以及他们的差,例如输入8,92,7,8,1,56,37,23,25,26则输出max=92,min=1,ca=91. 答案: max=min=a[0]; for(i=0;i<10;i++) {if(a[i]>max)max=a[i]; if(a[i] ca=max-min; 268 一个数列,它的第一项是0,第二项是1,以后每一项都是前两项之和,求前20项之和s。 答案: for(k=2;k<=10;k++) {a1=a1+a2; a2=a1+a2; s=s+a1+a2;} 269 找出1-200之间的完数及个数n(完数是一个数的因子之和是这个数本身。 例如6=1+2+3). 答案: n=0; for(m=1;m<=200;m++) {s=1; for(l=2;l if(m%l==0)s+=l; if(m==s){n++;cout< } 526 将所有小写字母改成大写字母。 答案: for(inti=0;i if(s[i]='a'&&s[i]<=‘z') s[i]=s[i]-'a'+'A'; 530 题目: 编写一个函数,统计出一堆数组中大于等于所有元素平均值的元素个数并返回它。 --------【标准答案】--------- doublem=0; inti; for(i=0;i m=m/n; intc=0; for(i=0;i if(a[i]>=m)c++; returnc; 598 编写一个程序,要求打印出1-100间既不能被5整除,也不能被6整除的数且每行输出5个。 答案: inti;//定义循环变量 intj=1;;//定义计数器变量 for(i=1;i<=100;i++);//循环结构 { if(i%5! =0&&i%6! );//条件 { cout< if(j%5==0)cout< j++;;//计数器变量累加 } } 599 编写程序输出1! +2! +3! +…+10! 的结果。 答案: inti;//定义循环变量 ints=0;//定义求和变量 intm=1;//定义阶乘变量 for(i=1;i<=c;i++)//循环结构 { s=s+m;//累加 m=m*i;//求各数的阶乘 } returns; 600 数组a包含10个整数,把a中所有的后项除以前项之商取整后存入数组b,并按每行3个元素的格式输出数组b。 数组a包含10个整数,把a中所有的后项除以前项之商取整后存入数组b,并按每行3个元素的格式输出数组b。 答案: inti;//定义循环变量 inta[10],b[10];//定义数组 for(i=0;i<=10;i++);//循环结构 cin>>a[i];//输入数组元素 for(i=1;i<=10;i++) b[i]=a[i]/a[i];//数组b元素的表达式 for(i=1;i<10;i++) { cout< if(i%3==0)cout< } 601 编写程序,利用冒泡法对10个整数进行排序(按从小到大的顺序)。 数组为: inta[10]={34,91,83,56,29,93,56,12,88,72}; 答案: inta[10]={34,91,83,56,29,93,56,12,88,72};//定义数组 inti,j,t;//定义变量 for(i=0;i<=8;i++)/循环结构 for(j=0;j<=8-i;j++) if(a[j]>a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } for(i=0;i<=9;i++) cout< 608 每个苹果0.8元,第一天买2个苹果,第二天开始,每天买前一天的2倍,直至购买的苹果个数达到不超过100的最大值 编写程序求每天平均花多少钱? ------------------------ #include #include voidwwjt(floato); voidmain() { intday=0,buy=2; floatsum=0,0,ave; --------------------- --------------- ave=sum/day; printf("%f",ave); wwjt(ave); } voidwwjt(floato) { fstreammyfile; myfile.open("out.txt",ios: : out); myfile< myfile.close(); } 标准答案 do { sum+=0.88*buy; day++; buy*=2; } while(buy<=100); 610 求100以内的自然数中被13整除的最大数。 答案: for(i=100;i>12;i--) if(i%13==0) { cout<<"100内最大被13整除的数是: "< break; } 612 求下列分数序列的前15项之和。 答案: for{inti=1;i<=15;i++) { sum+=a/b; t=a; a+=b; b=t; } 613 编写函数利用数组名作参数计算数组arr[3][4]所有元素的和。 答案: for(i=0;i for(j=0;j p+=a[i][j]; returnp; 615 编写函数将字符串按逆序存放。 答案: for(i=0;i<=3;i++) { temp=s[i]; s[i]=s[4-i]; s[4-i]=temp; } 617 求任意两个正整数的最大公约数和最小公倍数。 算法: 设两个数为m,n(大的在m中),r=m%n,如果r=0则m为最大公约数,否则m=n,n=r,继续直到r=0 ------------------------------ #include #include voidwwjt(into,ints); voidmain() { intm,n,r,temp,p,t; m=18; n=68; p=m*n; ------------------- ----------------- t=p/m; cout<<“最大公约数"< cout<<"最小公倍数"< wwjt(m,t); } voidwwjt(ints,ints) { fstreammvfile; myfile.open("out.txt",ios: : out); myfile< myfile< myfile.close(); } if(m { temp=m; m=n; n=temp; } while(n! =0) { r=m%n; m=n; n=r; } 618 编写一个函数来检验输入的一个字符是大写字母还是小写字母或不是26个英文字母。 答案: int1; if(ch>='a')&&(ch<='z')) I=1; elseif(ch='A')&&(ch<='z')) I=2; else I=3; returnI; 619 题目: 编写函数将化氏温度转换为摄氏温度 公式为C=(F-32)*9/5; 并在主函数中调用。 —————————————————————— 标准答案: doublefun(doublef) { doublec; c=5.0/9*(f-32); returnc; } 620 利用递归的方法编写函数斐波那契数列的第n项. 答案: if(n==0) return1; elseif(n==1) return1; else returnfeb(n-1)+feb(n-2); 623 已有变量定义和函数调用语句: inta,b;b=sum(a); 函数sum()用以如样张所示公式,和数作为函数值返回。 若a的值为10,经函数sum的计算后,b的值是55. 答案: inti,k=0; for(i=0;i<=n;i++) k+=i; returnk; 624 通过循环按行顺序为一个5*5的二维数组赋1-25个自然数,然后计算该数组的左下半三角元素之和并输出左下半三角元素。 #include #include voidwwjt(int0); voidmain() { inta[5][5].i,j,n=1,sum=0; ---------------------- ---------------------- cout<<"输出左下半三角元素之和为: "< fstreammyile; myfile.open("out.txt",ios: : out); myfile<<0< myfile.close(); } 答案: for(I=0;I<5;I++) for(j=0;j<5;j++) a[I][j]=m++; for(I=0;I<5;I++) { for(j=0;j { sum+=a[I][j];
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 题库