C++题集含答案.docx

上传人:b****4 文档编号:4794255 上传时间:2022-12-09 格式:DOCX 页数:41 大小:116.77KB
下载 相关 举报
C++题集含答案.docx_第1页
第1页 / 共41页
C++题集含答案.docx_第2页
第2页 / 共41页
C++题集含答案.docx_第3页
第3页 / 共41页
C++题集含答案.docx_第4页
第4页 / 共41页
C++题集含答案.docx_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

C++题集含答案.docx

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

C++题集含答案.docx

C++题集含答案

C++题集(含答案)

LT

1.

2.

3.水仙花数问题:

水仙花数是一种三位数,它的值等于每个数字的立方和。

例如,153=13+53+33。

编程输出小于999的水仙花数。

4.求一整数的等差数列,该数列满足下述条件:

头4项数的和值为26,积值为880。

(提示:

该数列公差为正整数,否则数列将出现负数;该数列的首项必须小于5,且其公差也小于5,否则头四项数的和将大于26。

5.完数问题:

若有一数,其值等于它的因子之和,则该数称为完数。

例如,6的因子为1、2、3,而6=1+2+3,故6是完数。

编程输出1000之内的所有完数及其因子。

6.100匹马驮100担货,大马一匹驮3担,中马一匹驮2担,小马2匹驮1担。

试编程计算大、中、小马的数目。

7.编程产生出1到10以内的所有数对并输出,其中i>j。

8.编程求出1000以内的所有符合如下条件的数:

其高位数字小于低位数字。

如12,238等。

但21,548不符合条件。

9.求任一整数N的标准分解式,即素数因子之积。

例如16=2*2*2*2,15=3*5。

10.斐波那契(Fibonacci)数列问题:

Fibonacci数列递归定义为:

x0=0,

x1=1,

xi+1=xi+xi-1,i=2,3,…

即从第二项开始,数列中的每一个元素等于前面两个元素之和。

编程输出前20项Fibonacci数。

(提示可以用递归或迭代两种方式编程)

11.正读和反读都一样的数称为回文数。

编写程序输入一个整数max_num,输出从0到max_num中用二进制表示和十进制表示都是回文数的整数。

定义一个函数is_circle_num()判断一个数(number)在某个进制(radius)下是否为回文数。

例如,整数313就是该程序输出的一个数,因为它的二进制表示为10011001。

12.编写一个递归函数:

将一个整数转换为响应的字符串并输出,函数原型可声明为:

voidint2str(intnumber)。

13.用函数实现将一个以字符串形式表示的十六进制数转换为一个十进制整数。

例如,输入”A2”转换为162。

14.编写一个将十进制整数转换为十六进制字符串的函数。

15.编写出判断一个整数是否为素数的函数,并求出在2000以内的有十个以上的所有连续的非素数组。

16.编制一个程序,统计从标准输入设备上输入的字符流(以?

结束)中每个英文字母(大小写不分开计)出现的次数。

17.编程实现“冒泡排序算法”,将输入的若干整数由小到大(升序)排序输出。

要求定义一个排序函数,其原型是voidbubble(intdata[],intlength)。

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被检索到,算法结束;若xa[mid],则在前半区间[lower,mid]内重复折半检索。

反复执行上述步骤,使lower和upper相等或相差1(表示未检索到x),或a[mid]=x。

21.编程实现查找矩阵中最大元素的位置。

要求输入一个矩阵中所有元素,输出该矩阵,并输出矩阵中最大数所在的行、列号及该元素的值。

22.编写程序找出二维整形数组中所有这样的元素及其位置:

它在所在的行上是最大的,在所在的列上也是最大的。

设数组中的元素各不相同。

(提示:

先在第i行中寻找此行最大值元素,记下其行和列,然后在其所在的列判断它是否也是最大的,若是则输出结果。

可以引入标志变量表示找到这个元素。

 

23.编程产生下列数组,并输出。

123456

234560

345601

456012

560123

601234

24.编程产生下列数组,并输出

123456

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

 

1.

//加密字符串

#include

voidmain()

{

chara[21],b,key;

cout<<"请输入字符串和密钥:

";

cin>>a>>b;

for(inti=0;a[i]!

=0;i++){

a[i]=a[i]^b;

}

cout<<"加密后:

";

for(intk=0;a[k]!

=0;k++){

cout<

}

cout<

";

cin>>key;

for(intj=0;a[j]!

=0;j++){

a[j]=a[j]^key;

}

for(intg=0;a[g]!

=0;g++){

cout<

}

cout<

}

2.

#include

main()

{

intyear,month,days;

cout<<"请输入年份,月份:

";

cin>>year>>month;

if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){

days=31;

cout<

}elseif(month==4||month==6||month==9||month==11){

days=30;

cout<

}elseif((year%4==0&&year%100!

=0)||year%400==0){

days=29;

cout<

}else{

days=28;

cout<

}

return0;

}

3.

//收过桥费

#include

main()

{

intkind;

cout<<"1.自行车\n";

cout<<"2.摩托车\n";

cout<<"3.小汽车\n";

cout<<"4.大货车或客车\n";

cout<<"5.货柜车\n";

cout<<"请输入汽车种类:

";

cin>>kind;

switch(kind){

case1:

cout<<"thefeeis:

0yuanonce."<

case2:

cout<<"thefeeis:

2yuanonce."<

case3:

cout<<"thefeeis:

5yuanonce."<

case4:

cout<<"thefeeis:

8yuanonce."<

case5:

cout<<"thefeeis:

12yuanonce."<

default:

cout<<"Error!

"<

}

}

4.

#include

main()

{

intmarks;

cout<<"输入考试成绩:

";

cin>>marks;

switch(marks/10){

case10:

case9:

cout<<"Excellent\n";break;

case8:

cout<<"VeryGood\n";break;

case7:

cout<<"Good\n";break;

case6:

cout<<"Pass\n";break;

default:

cout<<"NoPass\n";

}

return0;

}

5.

//旅行社折扣

#include

main()

{

intnum,price;

floatdiscount,total_price;

cout<<"输入购买张数和单价:

";

cin>>num>>price;

switch(num/10){

case0:

discount=0.1;break;

case1:

discount=0.15;break;

default:

discount=0.3;

}

total_price=num*price*(1-discount);

cout<<"总价格为:

"<

return0;

}

6.

//输入数流

#include

main()

{

inta[100],i,j,x=0,y=0,z=0;

cout<<"输入数流(以1000结束):

";

for(i=0;;i++){

cin>>a[i];

if(a[i]==1000)break;

}

for(j=0;a[j]!

=1000;j++){

if(a[j]==-1)x++;

if(a[j]==0)y++;

if(a[j]==1)z++;

}

cout<<"该数流中含-1:

"<

cout<<"该数流中含0:

"<

cout<<"该数流中含1:

"<

return0;

}

7.

//求2因子

#include

main()

{

intx,i,n;

cout<<"输入整数:

";

l:

cin>>x;

if(x<0){

cout<<"输入有误!

请重新输入:

";

gotol;

}

n=x;

for(i=0;n%2==0;i++){

n/=2;

}

cout<<"整数"<

return0;

}

8.

#include

main()

{

inti,n;

for(i=7;!

(i%2==1&&i%3==2&&i%4==3&&i%5==4&&i%6==5);i+=7){

n=i;

}

cout<<"最小可能值是:

"<

return0;

}

9.

//百元买百鸡

#include

main()

{

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)

cout<<"符合条件的有公鸡"<

}

}

return0;

}

10.

#include

main()

{

intmoney,i,m,n;

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

if(4+4*i==5*i-5){

cout<<"money="<<4+4*i<<""<<"price="<

break;

}

elsecontinue;

}

return0;

}

11.

#include

main()

{

intn,i,j,s=0;

for(i=1;i<=100;i++){

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

elsecontinue;

}

cout<<"100以内可以被13整除的自然数之和为:

"<

return0;

}

12.

//求m到n的素数

#include

#include

intf(intn)

{

inta,x,i,b;

x=sqrt(n);

if(n==2||n==3)b=1;

elsefor(i=2;i<=x;i++){

if(n%i==0){

b=0;

break;

}

elseif(i==x)b=1;

elsecontinue;

}

returnb;

}

main()

{

intm,n,x,i,j;

staticintk=0;

l:

cout<<"输入m,n(其中10

";

cin>>m>>n;

if(m<=10||m>=n||n>32000){

cout<<"输入数据有误!

请再";

gotol;

}

for(i=m;i<=n;i++){

if(f(i)){

cout<

k++;

if(k%8==0)cout<

}

}

cout<

return0;

}

13.

//打印乘法口诀表

#include

main()

{

inti,j;

for(i=1;i<=9;i++){

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

cout<

}

return0;

}

14.

//求最大公约数

#include

main()

{

intm,n,temp;

cout<<"输入两个整数:

";

cin>>m>>n;

temp=m

m:

n;

m=m

n:

m;

n=temp;

for(;;){

temp=m%n;

if(temp){

m=n;

n=temp;

}

else{

cout<<"最大公约数是:

"<

break;

}

}

return0;

}

15.

//求不超过正整数n的2的最大幂值

#include

#include

main()

{

intn,i;

cout<<"请输入正整数n:

";

cin>>n;

for(i=0;pow(2,i)<=n;i++){}

cout<<"满足条件的值为:

"<

return0;

}

16.

#include

#include

voidmain()

{

constdoublefishnum=800000000;

doublefnum=fishnum;

intn=1;

while(fnum>=fishnum/2){

fnum=fnum*(1-0.035);

n++;

}

cout<<"当鱼的数目等于原来的一半时,需要"<

n=1;

fnum=fishnum;

while(fnum>=fishnum/10){

fnum=fnum*(1-0.035);

n++;

}

cout<<"当鱼的数目等于原来的十分之一时,需要"<

}

17.

//二次方程求解

#include

#include

main()

{

floata,b,c;

cout<<"请输入a,b,c:

";

cin>>a>>b>>c;

floatt=b*b-4*a*c;

if(a==0)if(b==0)if(c==0)cout<<"方程根为一切实数"<

elsecout<<"方程无根"<

elsecout<<"根是:

"<<-c/b<

elseif(t>0)cout<<"根x1="<<(-b+sqrt(b))/(-2*a)<

elseif(t==0)cout<<"根x1=x2="<<(-b+sqrt(b))/(-2*a)<

elsecout<<"根x1="<<(-b)/(-2*a)<<"+"<<"("<<(sqrt(-t))/(-2*a)<<")i"<

return0;

}

18.

//班级分数

#include

main()

{

inta[100],i,j,max,min,s=0;

cout<<"输入同学成绩(以1000结束):

";

for(i=0;;i++){

cin>>a[i];

if(a[i]==1000)break;

if(i==0){

max=a[0];

min=a[0];

}

max=max>a[i]?

max:

a[i];

min=min

min:

a[i];

s+=a[i];

}

cout<<"该班同学成绩中最高分为:

"<

return0;

}

19.

//模拟四则运算

#include

main()

{

inta,b;

charx;

cout<<"请输入算式:

"<

cin>>a>>x>>b;

if(x=='+')cout<<"="<

elseif(x=='-')cout<<"="<

elseif(x=='*')cout<<"="<

elseif(x=='/')cout<<"="<<(float)a/b<

elsecout<<"error!

!

!

"<

return0;

}

20.

//兑钱

#include

main()

{

inti,j,k,m=0;

for(i=1;i<=20;i++){

for(j=1;j<=50;j++){

k=100-5*i-2*j;

if(k>=1){

m+=1;

//cout<<"i="<

}

}

}

cout<<"共有"<

return0;

}

21.

//求e

#include

#include

main()

{

inti;

doubletemp=1,sum=0;

for(i=1;temp>=1e-8;i++){

sum+=temp;

temp/=i;

}

cout<<"e=1+1/1!

+1/2!

+1/3!

+....="<

}

22.

//求1!

+2!

~~+7!

#include

intf(intx)

{

intr;

if(x==0)r=1;

elser=x*f(x-1);

returnr;

}

main()

{

inti,s=0;

for(i=1;i<=7;i++){

s+=f(i);

}

cout<<"结果是:

"<

return0;

}

23.

//求1×2+3×4+5×6+…+39×40

#include

main()

{

inti,s=0;

for(i=1;i<=39;i+=2){

s+=i*(i+1);

}

cout<<"结果是:

"<

return0;

}

24.

//求值,精确到10e-6

#include

#include

main()

{

inti,x;

cout<<"输入整数x:

";

cin>>x;

doubletemp=x,s=0;

for(i=1;fabs(temp)>=1e-6;i+=2){

s+=temp;

temp=temp*(-x*x)/((float)(i+1)*(i+2));

}

cout<<"结果是:

"<

return0;

}

25.

//反向输出

#include

#include

main()

{

intx,i,j;

cout<<"输入整数x:

";

cin>>x;

for(i=0;;i++)if(x/(int)pow(10,i)==0)break;

inta[100];

for(j=0;j

a[j]=(x%(int)pow(10,j+1))/((int)pow(1

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

当前位置:首页 > 初中教育 > 科学

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

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