编程题的总结.docx

上传人:b****4 文档编号:24630817 上传时间:2023-05-29 格式:DOCX 页数:21 大小:19.96KB
下载 相关 举报
编程题的总结.docx_第1页
第1页 / 共21页
编程题的总结.docx_第2页
第2页 / 共21页
编程题的总结.docx_第3页
第3页 / 共21页
编程题的总结.docx_第4页
第4页 / 共21页
编程题的总结.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

编程题的总结.docx

《编程题的总结.docx》由会员分享,可在线阅读,更多相关《编程题的总结.docx(21页珍藏版)》请在冰豆网上搜索。

编程题的总结.docx

编程题的总结

不太理解的题

1.

#include

usingnamespacestd;

charabc(char*);

charabc(char&);

voidmain(){

for(chari=’a’;i<’f’;i++){

abc(i);

abc(&i);

cout<

}

}

charabc(char*s){(*s)++;return*s;}

charabc(char&s){s++;returns;}

答案:

cf

2.

#include

classT

{public:

T(intx){a=x;b+=x;};

staticvoiddisplay(Tc)

{cout<<"a="<

private:

inta;

staticintb;

};

intT:

:

b=5;

voidmain()

{TA(6),B(8);

T:

:

display(A);

T:

:

display(B);}

A.a=3b=13B.a=6b=11C.a=6b=19D.a=3b=8

a=5b=13a=8b=19a=8b=19a=6b=13

答案:

c

3.以下是运输公司对所运货物计费的程序。

设每公里每吨的基本运费为p,货物重量为w,总运输里程在某段中的里程为Δs,折扣为d,则该段运费为:

p*w*Δs*(1-d)。

总费用为各段费用之和,采用不加break的switch语句。

intmain(){

intc,s,s1;

doublep,w,d,f;

cout<<"输入运输单价p,重量w和里程s:

"<

cin>>p>>w>>s;

s1=s;

f=0;

c=s/250;

switch(c){

default:

d=0.15;f+=p*w*(s-3000)*(1-d);s=3000;

case8:

case9:

case10:

case11:

d=0.1;f+=p*w*(s-2000)*(1-d);s=2000;

case4:

case5:

case6:

case7:

d=0.08;f+=p*w*(s-1000)*(1-d);s=1000;

case2:

case3:

d=0.05;f+=p*w*(s-500)*(1-d);s=500;

case1:

d=0.02;f+=p*w*(s-250)*(1-d);s=250;

case0:

d=0;f+=p*w*s*(1-d);

}

cout<<"运输单价:

"<

"<

"<

cout<<"折扣后运费:

"<

return0;

}

运输公司是怎样分段的?

并给出各段的折扣率。

,设输入运输单价、重量和里程为0.5404300,输出结果是什么?

答案:

分段与运费打折情况如下:

s<250不打折扣

250<=s<5002%折扣

500<=s<10005%折扣

1000<=s<20008%折扣

2000<=s<300010%折扣

3000<=s15%折扣

输出结果:

运输单价:

0.5重量:

40里程:

4300

折扣后运费:

77900

容易错的题

1.

#include

classA

{

intnum;

public:

A(inti){num=i;}

A(A&a){num=a.num++;}

voidprint(){cout<

};

voidmain()

{

Aa

(1),b(a);

a.print();

b.print();

}

答案:

21不是12

2.

#include

voidmain()

{

ints=0;

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

if(s>50)break;

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

}

cout<<"i,s="<

}答案:

15,56不是12,42(因为i又加了一个1才退出循环的啊!

3.输入10个数,用“选择法”将其按降序排列,然后输出。

#include

voidmain()

{inta[10],i,j,ip,t;

for(i=0;i<10;i++)

cin>>a[i];

for(i=0;i<9;i++)

{ip=i;

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

if(a[ip]

t=a[i];

a[i]=a[ip];

a[ip]=t;}

for(i=0;i<10;i++)

cout<

cout<

3、输出非波那契数列的前20项,每项占用6个字符的宽度,每行输出5个数。

该数列的通项公式为:

a1=1,a2=1,an=an-1+an-2(n>=3)。

****************************************************************************

#include

#include

voidmain()

{inta=0,a1=0,a2=1,i;

cout<

for(i=2;i<=20;i++)

{a=a1+a2;

cout<

if(i%5==0)cout<

a1=a2;a2=a;}

}

*****************************************************************

#include

voidmain()

{intb[20]={1,1};

cout<

for(inti=2;i<20;i++)

{b[i]=a[i-1]+a[i-2];

cout<

}

*****************************************************************

4、输入一个自然数,判断其是否为素数。

#include

intf1(intn);

voidmain()

{inta;

cin>>a;

if(f1(a))cout<<"yes"<

elsecout<<"no"<

}

intf1(intn)

{inti=2,f=1;

while(i<=n/2&&f==1)

{if(n%i==0)f=0;

i++;}

returnf;}

5.下面程序在一组数中查找指定数据,请填空完善它。

#include

intsearch(inta[],intn,intk)

{inti;

for(i=0;i

if(a[i]=k)

returni+1;

return-1;

}

voidmain()

{intb[10]={23,42,15,46,53,27,58,43,90,32};

intx,p;

cout<<"请输入要查找的数据:

";

cin>>x;

p=search(b,10,x);

if(p==1)

cout<<"位置为:

"<

else

cout<<"没找到!

";

}

6.编写一个函数模板“CountArray”,用于统计一维数组中某个指定值的出现次数。

如对于一维整型数组:

inta[]={1,2,3,5,5,7,8},调用此模板函数可统计出数组a中,“5”出现的次数为“2”。

template

intCoutnArray(Ta[],intn,Tx){

intcount=0;

for(inti=0;i

if(x==a[i])count++

}

returncount;

}

7.现有Complex类用于描述复数,其部分代码如下:

classComplex{

private:

doublem_image;//描述实部

doublem_real;//描述虚部

public:

Complex(doublei=0,doublej=0){

m_real=i;

m_image=j;

}

};

(1)用友元重载+运算符

Complexoperator+(Complex&A,Complex&B){

intmimage=B.m_image+A.m_image;

intmreal=B.m_real+A.m_real;

returnComplex(mreal,mimage);

}

(2)用友元重载-运算符

Complexoperator+(Complex&A,double&d){

intreal=A.m_real-d;

returnComplex(real,A.m_image);

}

(3)用友元重载<<运算符

Ostream&operator<<(Ostreamout,constComplex&A){

out<

returnout

}

8

#include

classA

{

intnum;

public:

A(inti){num=i;}

A(A&a){num=a.num++;}

voidprint(){cout<

};

voidmain()

{

Aa

(1),b(a);

a.print();

b.print();

}

答案:

21

9.猴子吃桃问题:

猴子摘下若干个桃子,第一天吃了桃子的一半多一个,以后每天吃了前一天剩下的一半多一个,到第十天吃以前发现只剩下一个桃子,问猴子共摘了几个桃子。

intmain(){

intday,x1,x2;

day=9;

x2=1;

while(day>0){

x1=(x2+1)*2;//某天的桃子数x1是前一天桃子数x2加1后的2倍

x2=x1;

day--;

}

cout<<"total="<

return0;

}

答案:

1534

10.用递归法求从1到n的平方和:

f

(1)=1(n=1)

f(n)=f(n-1)+n*n(n>1)

#include

usingnamespacestd;

intf(int);

intmain(){

intn,s;

cout<<"inputthenumbern:

";

cin>>n;

s=f(n);

cout<<"Theresultis"<

return0;

}

intf(intn){//递归法求平方和函数

if(n==1)return1;

elsereturn(n*n+f(n-1));

}

11.若一头小母牛从出生第四个年头开始每年生一头母牛,按此规律,第n年时总共会有多少头母牛。

采用递推算法。

voidmain(){

intn,i;

longa=0,b=0,c=0,d=1,temp;

//a是3岁及以上母牛数,b是2岁,c是1岁,d是0岁

cout<<"请输入年数n:

";

cin>>n;

cout<

for(i=1;i

a+=b;//第n年时,3岁及以上母牛数

b=c;//第n年时,2岁母牛数

c=d;//第n年时,1岁母牛数

d=a;//第n年时,新生牛数

}

cout<<"第n年总共有"<<(11)<<"头母牛。

"<

}

12.在矩形类中重载关系运算符>=,采用友元,比较的依据是矩形面积的大小。

重载算术运算符+=,采用成员函数,更新矩形对象,其长与宽,分别添上形参矩形的长与宽。

重载算术运算符+,利用构造函数,采用友元。

classCRect{

intlength,witdth;

public:

CRect(intl,intw){

length=l;

width=w;

}

friendintoperator>=(CRect&r1,CRect&r2){

returnr1.length*r1.width>=r1.length*r1.width;//比较面积

}

voidoperator+=(CRect&r){

length+=r.length;//求长

width+=r.width;//求宽

}

friendoperator+(CRect&r1,CRect&r2){

returnCRect(r1.length+r2.length,r1.width+r2.width);//利用构造函数

}

}

14

编写程序,把从键盘上输入的一批整数(以-1作为终止输入的标志)保存到文本文件“a:

xxkl.dat”中。

#include

     #include

     voidmain(){

         ofstream fout("a:

xxk1.dat”);//定义输出文件流并打开文件得2分

         if(!

fout){

              cerr<<"文件没有打开!

"<

              exit(l):

}//可有可无

intx;

cin>>x;

while(x!

=-1){

   fout<

   cin>>x;

}     

课后比较难的题

1.产生空字符串:

#include

#include

char*mystrspc(char*string,intn)

{

inti;

chara[100];

string=a;

for(i=0;i

{

*(string+i)=32;

cout<<*(string+i);

}

returna;

}

voidmain()

{

char*a;

inti;

cout<<"请输入空字符串的个数:

";

cin>>i;

a=newchar[i];

mystrspc(a,i);

delete[]a;

}

2.去掉尾部的空字符串:

#include

#include

char*mytrim(char*string)

{//去掉尾部的

intl=0,p=0;

l=strlen(string);

if(l==0)returnstring;

p=l-1;

while(string[p]==32)

{

string[p--]=0;

if(p<0)break;

}

returnstring;

}

voidmain()

{

chara[100]="yuanjinlong";

cout<

}

3.去掉前部的空字符串:

#include

#include

char*myltrim(char*string)

{//去掉前部的

intl=0,p;

l=strlen(string);

if(l==0)returnstring;

p=0;

while(string[p]==''||string[p]=='\t')

{

string[p++]='\n';

if(p>l)break;

}

returnstring;

}

voidmain()

{

chara[100]="yuanjinlong";

cout<

}

4.递归法求feb数列的n项

#include

intfeb(intn)

{

if(n==0)return(0);

if(n==1)return

(1);

if(n>1)returnfeb(n-1)+feb(n-2);

}

voidmain()

{

cout<

}

5.字符串查找函数

#include

#include

voidmystrchr(charstring[],intc)

{inti;

intk;

k=strlen(string);

for(i=0;i<=k;i++)

{

if(string[i]==c)

{

cout<

i++;

}

}

}

voidmain()

{

chars1[100]="";

cout<<"请输入字符串";

cin>>s1;

charb;

cout<<"请输入查找字符";

cin>>b;

intm=b;

mystrchr(s1,m);

}

6.字符串反转函数

#include

#include

voidmystrrev(charstring[])

{charm;

inti,k;

k=strlen(string);

for(i=0;i<(k/2);i++)

{

m=string[i];

string[i]=string[k-1-i];

string[k-1-i]=m;

}

for(i=0;i

cout<

}

voidmain()

{chars1[100];

cout<<"请输入字符串";

cin>>s1;

mystrrev(s1);

}

7.转置

#include

#definew200//定义常量w=200

voidzhzh(inta[],intm,intn)//定义函数转置zhzh,用一维数组保存

{

intb[w];

for(inti=0;i

{

for(intj=0;j

{

{

b[j*n+i]=a[i*m+j];//将a[]与矩阵第i行第j列相当的元素保存到b[]第j行第i列

}

}

}

for(intk=0;k

a[k]=b[k];

}

voidmain()//用主函数来验证zhzh()函数

{

inta[]={1,2,3,4,5,6,7,8,9,0,11,12,13,14,15};

for(inti=0;i<15;i++)

{

cout<

if((i+1)%3==0)//按5行3列输出

cout<

}

zhzh(a,3,5);//调用转置函数

for(i=0;i<15;i++)

{

cout<

if((i+1)%5==0)//转置后变为3行5列

cout<

}

}

8.杨辉三角

#include

intjc(intp)

{

ints=1;

for(inti=1;i<=p;i++)

s=s*i;

if(p=0)

{s=1;}

returns;

}

intzh(intm,intn)

{returnjc(n)/(jc(m)*jc(n-m));}

voidmain()

{

for(intj=0;j<10;j++)

{

for(intk=0;k<=j;k++)

{

if(k==j)

cout<

else

cout<

}

}

}

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

当前位置:首页 > 职业教育 > 其它

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

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