C++题集含答案Word文档格式.docx
《C++题集含答案Word文档格式.docx》由会员分享,可在线阅读,更多相关《C++题集含答案Word文档格式.docx(41页珍藏版)》请在冰豆网上搜索。
18.给定含有m+n个元素的整型数组A(其中m>
0,n>
0),它分为两个互不重叠的,长度分别为m和n的子数组段,写出交换这两个子数组段的程序,要求不引入数组A以外的数组,但可引入若干中间变量。
19.用数组存储数据,实现筛选法求素数问题的求解。
要求求出2到1000之间的所有素数。
筛选法求出2~N间的所有素数的方法是:
首先将这些数全部放入一个数组中,然后重复下面的操作直到数组为空为止:
a.找出其中的最小数K,则K一定是一个素数,因此可输出。
b.从数组中删除K及其所有倍数。
20.编程实现二分查找算法。
二分(折半)查找(搜索)算法如下:
数组a中的n个数从大到小(降序)的顺序排列,要检索一个数x是否在a中,折半查找算法的思路是:
设查找区间为[lower,upper],初值lower=0,upper=n-1;
算法步骤:
(1)输入数组a的元素及x;
(2)x是否为a的第一或最后一个元素。
若是其中之一,算法结束;
(3)将区间两等分为[lower,mid]和[mid,upper],mid为区间中点,每次取出中间项进行检查,若x=a[mid],x被检索到,算法结束;
若x<
a[mid],则在后半区间[mid,upper]内重复折半检索;
若x>
a[mid],则在前半区间[lower,mid]内重复折半检索。
反复执行上述步骤,使lower和upper相等或相差1(表示未检索到x),或a[mid]=x。
21.编程实现查找矩阵中最大元素的位置。
要求输入一个矩阵中所有元素,输出该矩阵,并输出矩阵中最大数所在的行、列号及该元素的值。
22.编写程序找出二维整形数组中所有这样的元素及其位置:
它在所在的行上是最大的,在所在的列上也是最大的。
设数组中的元素各不相同。
先在第i行中寻找此行最大值元素,记下其行和列,然后在其所在的列判断它是否也是最大的,若是则输出结果。
可以引入标志变量表示找到这个元素。
23.编程产生下列数组,并输出。
123456
234560
345601
456012
560123
601234
24.编程产生下列数组,并输出
212345
321234
432123
543212
654321
25.编程产生下列数组,并输出。
123.....n-10
234.....01
345.....12
................
n-101.....n-3n-2
012.....n-2n-1
26.打印下面图形。
1
131
13531
1357531
135797531
…………………
13……21………31
27.打印如下图形
ABCDE
BCDEA
CDEAB
DEABC
EABCD
//加密字符串
#include<
iostream.h>
voidmain()
{
chara[21],b,key;
cout<
<
"
请输入字符串和密钥:
;
cin>
>
a>
b;
for(inti=0;
a[i]!
=0;
i++){
a[i]=a[i]^b;
}
加密后:
for(intk=0;
a[k]!
k++){
a[k];
}
endl<
请输入密码:
key;
for(intj=0;
a[j]!
j++){
a[j]=a[j]^key;
for(intg=0;
a[g]!
g++){
a[g];
endl;
main()
intyear,month,days;
请输入年份,月份:
year>
month;
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){
days=31;
year<
年"
month<
月有"
days<
天\n"
}elseif(month==4||month==6||month==9||month==11){
days=30;
}elseif((year%4==0&
&
year%100!
=0)||year%400==0){
days=29;
}else{
days=28;
}
return0;
3.
//收过桥费
intkind;
1.自行车\n"
2.摩托车\n"
3.小汽车\n"
4.大货车或客车\n"
5.货柜车\n"
请输入汽车种类:
cin>
kind;
switch(kind){
case1:
thefeeis:
0yuanonce."
break;
case2:
2yuanonce."
case3:
5yuanonce."
case4:
8yuanonce."
case5:
12yuanonce."
default:
cout<
Error!
4.
intmarks;
输入考试成绩:
marks;
switch(marks/10){
case10:
case9:
Excellent\n"
case8:
VeryGood\n"
case7:
Good\n"
case6:
Pass\n"
default:
NoPass\n"
5.
//旅行社折扣
intnum,price;
floatdiscount,total_price;
输入购买张数和单价:
num>
price;
switch(num/10){
case0:
discount=0.1;
discount=0.15;
discount=0.3;
total_price=num*price*(1-discount);
总价格为:
total_price<
6.
//输入数流
inta[100],i,j,x=0,y=0,z=0;
输入数流(以1000结束):
for(i=0;
a[i];
if(a[i]==1000)break;
for(j=0;
=1000;
if(a[j]==-1)x++;
if(a[j]==0)y++;
if(a[j]==1)z++;
该数流中含-1:
x<
项\n"
该数流中含0:
y<
该数流中含1:
z<
7.
//求2因子
intx,i,n;
输入整数:
l:
x;
if(x<
0){
输入有误!
请重新输入:
gotol;
n=x;
n%2==0;
n/=2;
整数"
含有"
i<
个2因子"
8.
inti,n;
for(i=7;
!
(i%2==1&
i%3==2&
i%4==3&
i%5==4&
i%6==5);
i+=7){
n=i;
最小可能值是:
n+7<
9.
//百元买百鸡
intcock,hen,chicken,price;
for(cock=0;
cock<
=20;
cock++){
for(hen=0;
hen<
=33;
hen++){
chicken=100-cock-hen;
if(chicken%3==0&
5*cock+3*hen+chicken/3==100)
符合条件的有公鸡"
母鸡"
小鸡"
chicken<
10.
intmoney,i,m,n;
for(i=1;
if(4+4*i==5*i-5){
money="
4+4*i<
price="
break;
elsecontinue;
11.
intn,i,j,s=0;
=100;
if(i%13==0)s+=i;
100以内可以被13整除的自然数之和为:
s<
12.
//求m到n的素数
math.h>
intf(intn)
inta,x,i,b;
x=sqrt(n);
if(n==2||n==3)b=1;
elsefor(i=2;
=x;
if(n%i==0){
b=0;
elseif(i==x)b=1;
returnb;
intm,n,x,i,j;
staticintk=0;
输入m,n(其中10<
m<
n≤32000):
m>
n;
if(m<
=10||m>
=n||n>
32000){
输入数据有误!
请再"
for(i=m;
=n;
if(f(i)){
k++;
if(k%8==0)cout<
13.
//打印乘法口诀表
inti,j;
=9;
for(j=1;
j<
=i;
j++)cout<
'
*'
='
i*j<
"
14.
//求最大公约数
intm,n,temp;
输入两个整数:
temp=m<
n?
m:
m=m<
n:
m;
n=temp;
for(;
){
temp=m%n;
if(temp){
m=n;
else{
最大公约数是:
n<
15.
//求不超过正整数n的2的最大幂值
intn,i;
请输入正整数n:
pow(2,i)<
i++){}
满足条件的值为:
i-1<
16.
constdoublefishnum=800000000;
doublefnum=fishnum;
intn=1;
while(fnum>
=fishnum/2){
fnum=fnum*(1-0.035);
n++;
当鱼的数目等于原来的一半时,需要"
年\n"
n=1;
fnum=fishnum;
=fishnum/10){
当鱼的数目等于原来的十分之一时,需要"
17.
//二次方程求解
floata,b,c;
请输入a,b,c:
b>
c;
floatt=b*b-4*a*c;
if(a==0)if(b==0)if(c==0)cout<
方程根为一切实数"
elsecout<
方程无根"
根是:
-c/b<
elseif(t>
0)cout<
根x1="
(-b+sqrt(b))/(-2*a)<
根x2="
(-b-sqrt(b))/(-2*a)<
elseif(t==0)cout<
根x1=x2="
(-b)/(-2*a)<
+"
("
(sqrt(-t))/(-2*a)<
)i"
-"
18.
//班级分数
inta[100],i,j,max,min,s=0;
输入同学成绩(以1000结束):
if(i==0){
max=a[0];
min=a[0];
max=max>
a[i]?
max:
min=min<
min:
s+=a[i];
该班同学成绩中最高分为:
max<
\n"
最低分为"
min<
平均分为"
s/i<
19.
//模拟四则运算
inta,b;
charx;
请输入算式:
x>
if(x=='
+'
)cout<
="
a+b<
elseif(x=='
-'
a-b<
a*b<
/'
(float)a/b<
elsecout<
error!
20.
//兑钱
inti,j,k,m=0;
=50;
k=100-5*i-2*j;
if(k>
=1){
m+=1;
//cout<
i="
j="
k="
k<
输出结果
共有"
种结果\n"
21.
//求e
iomanip.h>
inti;
doubletemp=1,sum=0;
temp>
=1e-8;
sum+=temp;
temp/=i;
e=1+1/1!
+1/2!
+1/3!
+....="
setprecision(9)<
sum<
22.
//求1!
+2!
~~+7!
intf(intx)
intr;
if(x==0)r=1;
elser=x*f(x-1);
returnr;
inti,s=0;
=7;
i++){
s+=f(i);
结果是:
23.
//求1×
2+3×
4+5×
6+…+39×
40
=39;
i+=2){
s+=i*(i+1);
24.
//求值,精确到10e-6
inti,x;
输入整数x:
doubletemp=x,s=0;
fabs(temp)>
=1e-6;
s+=temp;
temp=temp*(-x*x)/((float)(i+1)*(i+2));
结果是:
25.
//反向输出
intx,i,j;
i++)if(x/(int)pow(10,i)==0)break;
inta[100];
i;
a[j]=(x%(int)pow(10,j+1))/((int)pow(1