C++题集含答案Word文档格式.docx
《C++题集含答案Word文档格式.docx》由会员分享,可在线阅读,更多相关《C++题集含答案Word文档格式.docx(41页珍藏版)》请在冰豆网上搜索。
多少年后下降到目前的十分之一?
(提示注意整数类型的取值范围)。
17.编程求解一元二次方程ax2+bx+c=0的根。
要求:
设计完备的测试数据集,考虑a,b,c各种取值对根的影响。
18.编写一个程序,输入全班同学某门课考试成绩,计算平均成绩并找出其中最高分与最低分。
批量数据通常不事先规定输入的数据数量,而是以一个特殊的标志作为输入结束。
程序根据结束标志统计人数)
19.编一程序模拟整数加、减、乘、除四则运算。
当你在键盘上输入
5+6
后,程序将输出=11,当你在键盘上输入11*7后,程序将输出=77。
20.把一张1元钞票换成1分、2分和5分的硬币,每种至少有1枚,问有多少种换法?
21.
求自然对数底(e)的近似值。
e的近似值计算公式为:
当余项rn<
ε时停止计算。
设ε=1e-8
22.S=
=1!
+2!
+…+7!
23.S=1×
2+3×
4+5×
6+…+39×
40
24.Y=X-
+
-
+…+(-1)n+1
+…的值,精确到10-6。
25.编制一个程序,读入一个正整数,并反向输出。
例如,读入123,输出是321。
26.水仙花数问题:
水仙花数是一种三位数,它的值等于每个数字的立方和。
例如,153=13+53+33。
编程输出小于999的水仙花数。
27.求一整数的等差数列,该数列满足下述条件:
头4项数的和值为26,积值为880。
该数列公差为正整数,否则数列将出现负数;
该数列的首项必须小于5,且其公差也小于5,否则头四项数的和将大于26。
)
28.完数问题:
若有一数,其值等于它的因子之和,则该数称为完数。
例如,6的因子为1、2、3,而6=1+2+3,故6是完数。
编程输出1000之内的所有完数及其因子。
29.100匹马驮100担货,大马一匹驮3担,中马一匹驮2担,小马2匹驮1担。
试编程计算大、中、小马的数目。
30.编程产生出1到10以内的所有数对<
i,j>
并输出,其中i>
j。
31.编程求出1000以内的所有符合如下条件的数:
其高位数字小于低位数字。
如12,238等。
但21,548不符合条件。
32.求任一整数N的标准分解式,即素数因子之积。
例如16=2*2*2*2,15=3*5。
33.斐波那契(Fibonacci)数列问题:
Fibonacci数列递归定义为:
x0=0,
x1=1,
xi+1=xi+xi-1,i=2,3,…
即从第二项开始,数列中的每一个元素等于前面两个元素之和。
编程输出前20项Fibonacci数。
(提示可以用递归或迭代两种方式编程)
34.
35.编写一个递归函数:
将一个整数转换为响应的字符串并输出,函数原型可声明为:
voidint2str(intnumber)。
36.用函数实现将一个以字符串形式表示的十六进制数转换为一个十进制整数。
例如,输入”A2”转换为162。
37.编写一个将十进制整数转换为十六进制字符串的函数。
38.编写出判断一个整数是否为素数的函数,并求出在2000以内的有十个以上的所有连续的非素数组。
39.编制一个程序,统计从标准输入设备上输入的字符流(以?
结束)中每个英文字母(大小写不分开计)出现的次数。
40.编程实现“冒泡排序算法”,将输入的若干整数由小到大(升序)排序输出。
要求定义一个排序函数,其原型是voidbubble(intdata[],intlength)。
41.给定含有m+n个元素的整型数组A(其中m>
0,n>
0),它分为两个互不重叠的,长度分别为m和n的子数组段,写出交换这两个子数组段的程序,要求不引入数组A以外的数组,但可引入若干中间变量。
42.用数组存储数据,实现筛选法求素数问题的求解。
要求求出2到1000之间的所有素数。
筛选法求出2~N间的所有素数的方法是:
首先将这些数全部放入一个数组中,然后重复下面的操作直到数组为空为止:
a.找出其中的最小数K,则K一定是一个素数,因此可输出。
b.从数组中删除K及其所有倍数。
43.编程实现二分查找算法。
二分(折半)查找(搜索)算法如下:
数组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。
44.编程实现查找矩阵中最大元素的位置。
要求输入一个矩阵中所有元素,输出该矩阵,并输出矩阵中最大数所在的行、列号及该元素的值。
45.编写程序找出二维整形数组中所有这样的元素及其位置:
它在所在的行上是最大的,在所在的列上也是最大的。
设数组中的元素各不相同。
先在第i行中寻找此行最大值元素,记下其行和列,然后在其所在的列判断它是否也是最大的,若是则输出结果。
可以引入标志变量表示找到这个元素。
46.编程产生下列数组,并输出。
123456
234560
345601
456012
560123
601234
47.编程产生下列数组,并输出
212345
321234
432123
543212
654321
48.编程产生下列数组,并输出。
123.....n-10
234.....01
345.....12
................
n-101.....n-3n-2
012.....n-2n-1
49.打印下面图形。
1
131
13531
1357531
135797531
…………………
13……21………31
50.打印如下图形
ABCDE
BCDEA
CDEAB
DEABC
EABCD
1.
//加密字符串
#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;
2.
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<
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<
nm:
m=m<
nn:
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.
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<
a[i]min:
s+=a[i];
该班同学成绩中最高分为:
max<
\n"
最低分为"
min<
平均分为"
s/i<
19.
//模拟四则运算
#