钱能c++程序设计教程第二版第六章.docx

上传人:b****8 文档编号:30535595 上传时间:2023-08-16 格式:DOCX 页数:17 大小:17.69KB
下载 相关 举报
钱能c++程序设计教程第二版第六章.docx_第1页
第1页 / 共17页
钱能c++程序设计教程第二版第六章.docx_第2页
第2页 / 共17页
钱能c++程序设计教程第二版第六章.docx_第3页
第3页 / 共17页
钱能c++程序设计教程第二版第六章.docx_第4页
第4页 / 共17页
钱能c++程序设计教程第二版第六章.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

钱能c++程序设计教程第二版第六章.docx

《钱能c++程序设计教程第二版第六章.docx》由会员分享,可在线阅读,更多相关《钱能c++程序设计教程第二版第六章.docx(17页珍藏版)》请在冰豆网上搜索。

钱能c++程序设计教程第二版第六章.docx

钱能c++程序设计教程第二版第六章

可以在VS2010上运行,供正在学习C++的同学参考。

我也是新手,可能在编程风格和思路上有待提高,也有一些题目不知道该如何下手,路过的朋友知道的可以告诉我,我的邮箱是guosheng-14@,可以督促我继续写以后的答案。

vc++6.0可能在头文件上有所区别。

第六章

第一部分

//6.1.1—频繁调用小函数

#include

usingnamespacestd;

boolisnumber(charc){return((c>='0'&&c<='9')?

1:

0);}

intmain()

{

charch;

while(cin>>ch&&ch!

='\n')

{

if(isnumber(ch))cout<

elsecout<

}

}

//6.1.1—给成内联函数

#include

usingnamespacestd;

inlineboolisnumber(charc){return((c>='0'&&c<='9')?

1:

0);}

intmain()

{

charch;

while(cin>>ch&&ch!

='\n')

{

if(isnumber(ch))cout<

elsecout<

}

}

//6.2.3--栈法

#include

#include

#include

#include

usingnamespacestd;

intmain()

{

ifstreamin("abc.txt");

for(intn,line=0;in>>n&&n&&in.ignore();)

{

cout<<(line++?

"\n":

"");

for(strings;getline(in,s)&&s!

="0";)

{

istringstreamsin(s);

stackst;

for(intlast=0,coach;sin>>coach;st.pop())

{

for(intp=last+1;p<=coach;p++)st.push(p);

if(last

if(st.top()!

=coach)break;

}

cout<<(!

sin?

"yes\n":

"no\n");

}

}

}

//6.3.2--Fibonacci

#include

#include

#include

#include

usingnamespacestd;

intf1(intn)

{

if(n==0)return0;

if(n==1)return1;

returnf1(n-1)+f1(n-2);

}

intf2(intn)

{

inta=0,c;

for(intb=1,i=2;i<=n;i++)//一个书上的错误,c重定义了

c=a+b,a=b,b=c;

returnc;

}

intf3(intn)

{

vectorv(n+1,0);v[1]=1;

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

v[i]=v[i-1]+v[i-2];

returnv[n];

}

intf4(intn)

{

return(pow((1+sqrt(5.0))/2,n)-pow((1-sqrt(5.0))/2,n))/sqrt(5.0);

}

intmain()

{

inta;

clock_tstart=clock();

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

a=f1(35);

cout<<(clock()-start)/CLK_TCK<

start=clock();

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

a=f2(35);

cout<<(clock()-start)/CLK_TCK<

start=clock();

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

a=f3(35);

cout<<(clock()-start)/CLK_TCK<

start=clock();

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

a=f4(35);

cout<<(clock()-start)/CLK_TCK<

}

//6.4.2—矩形法

#include

#include

#include

usingnamespacestd;

doublef(doublex){return1/x;}

doubles(doublea,double(*)(double));

intmain()

{

ifstreamin("in.txt");

ofstreamout("out.txt");

for(doublex;in>>x;)

out<

}

doubles(doublea,double(*f)(double))

{

doublelast=0;

doubleresult=1;

for(intn=4;abs(result-last)>0.0001;n*=2)

{

last=result;

result=0;

for(intj=0;j

{

doublepace=(a-1)/n;

result+=pace*f(1+pace*j);

}

}

returnlast;

}

//6.5.2—判断字串相等1

#include

#include

#include

#include

usingnamespacestd;

intmain()

{

ifstreamin("in.txt");

for(strings,t;in>>s>>t;)

{

sort(s.begin(),s.end());

sort(t.begin(),t.end());

cout<<((s==t)?

"yes":

"no")<

}

}

//6.5.2—判断字符串相等2

#include

#include

#include

#include

usingnamespacestd;

intmain()

{

ifstreamin("in.txt");

for(strings,t;in>>s>>t;)

{

intsc0=count(s.begin(),s.end(),'0');

intsc1=count(s.begin(),s.end(),'1');

inttc0=count(t.begin(),t.end(),'0');

inttc1=count(t.begin(),t.end(),'1');

if(sc0==tc0&&sc1==tc1)cout<<"yes"<

elsecout<<"no"<

}

}

 

//6.5.2—判断字串相等3

#include

#include

#include

#include

usingnamespacestd;

intmain()

{

ifstreamin("in.txt");

for(strings,t;in>>s>>t;)

{

intsc0=count(s.begin(),s.end(),'0');

inttc0=count(t.begin(),t.end(),'0');

if(sc0==tc0&&s.length()==t.length())cout<<"yes"<

elsecout<<"no"<

}

}

//6.5.5—剩余串排序1

#include

#include

#include

#include

#include

usingnamespacestd;

intmain()

{

ifstreamin("in.txt");

for(strings,t,u;in>>s>>t;u="")

{

sort(s.begin(),s.end());

sort(t.begin(),t.end());

set_difference(s.begin(),s.end(),t.begin(),t.end(),back_inserter(u));

cout<

}

}

//6.5.6—剩余串排列2

#include

#include

#include

#include

#include

usingnamespacestd;

intmain()

{

ifstreamin("in.txt");

for(strings,t,u;in>>s>>t;)

{

sort(s.begin(),s.end());

for(inti=0;i

if(t.find(s[i])==string:

:

npos)cout<

cout<

}

}

//6.6.1—预留向量空间

#include

#include

#include

#include

#include

usingnamespacestd;

typedefmultimapMmap;

intmain()

{

ifstreamin("in.txt");

vectorabc;

Mmapnums;

intn=0;

for(strings;getline(in,s);)

{

istringstreamsin(s);

intnum=0;

for(stringt;sin>>t;num++);

if(num)

{

nums.insert(Mmap:

:

value_type(num,n++));

abc.push_back(s);

}

}

for(Mmap:

:

iteratorit=nums.begin();it!

=nums.end();it++)

cout<second]<

}

//6.6.2—素数判断---------------------------不要运行---------------几十分钟

#include

#include

usingnamespacestd;

boolisprime(int);

intmain()

{

intn=0;

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

if(isprime(i))n++;

cout<

}

boolisprime(intn)

{

intsqrtn=sqrt(n*1.0);

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

if(n%i==0)returnfalse;

returntrue;

}

//6.6.3---素数判断技巧版

#include

#include

usingnamespacestd;

intmain()

{

bitset<100000000>*p=newbitset<100000000>;

p->set();

for(inti=2;isize();i++)

if(p->test(i))

for(intj=i*i;jsize();j+=i)

p->reset(j);

intnum=0;

for(inti=0;isize();i++)

if(p->test(i))

num++;

cout<

}

低级编程这里不写了,根本不用看。

记住一句话:

算法和数据结构主要影响了C++效率,能用c++函数的地方尽量用。

 

第二部分

//1—素数排行—在例子的基础上加上几句代码而已

#include

#include

#include

#include

usingnamespacestd;

intmain()

{

vectorv(100000000,0);

bitset<100000000>*p=newbitset<100000000>;

p->set();

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

if(p->test(i))

for(intj=i*i;jsize();j+=i)

p->reset(j);

intnum=0;

for(inti=2;isize();i++)

if(p->test(i))

{

num++;

v[i]=num;

}

delete[]p;

ifstreamin("in.txt");

for(intt;in>>t;)cout<

}

 

//2—第i位数字

#include

#include

#include

usingnamespacestd;

intmain()

{

vectorset(231,0);

set[0]=1;

for(inti=1,h=1;i<231;i+=h)

{

set[i]=1;

h++;

}

ifstreamin("in.txt");

vectortest;

intn;

in>>n;

test.resize(n);

for(intt,i=0;in>>t;i++)

test[i]=t;

for(inti=0;i

cout<

cout<

}

 

3.这个题,没看懂,颠来倒去能有无数种排列方法。

知道的同学发邮件给我。

 

//4—平均数

#include

#include

#include

#include

usingnamespacestd;

inlineintadd(inta,intb){returna+b;}

intmain()

{

intsum=0,n=0;

ifstreamin("in.txt");

for(strings;getline(in,s);)

{

istringstreamsin(s);

for(inta,b;sin>>a>>b;)sum+=add(a,b);

n+=2;

}

cout<

}

 

//5—体操表演

#include

#include

#include

usingnamespacestd;

intmain()

{

ifstreamin("in.txt");

for(strings;getline(in,s);)

{

istringstreamsin(s);

intn,x,y,r,m;sin>>n>>x>>y>>r>>m;

if(x==1)

{

if(y==1)cout<<(m/r+1)<<""<<(m%r);

if(y==2)

{cout<<(m%r)<<""<<(m/r+1);}

cout<

}

else

{

if(y==1)cout<<(m*2-1)/r+1<<""<<(m*2-1)%r;

if(y==2)cout<<(m*2-1)%r<<""<<(m*2-1)/r+1;

cout<

}

}

}

 

6.正弦这个我也不太会

//7—对称

#include

#include

#include

#include

usingnamespacestd;

intmain()

{

ifstreamin("in.txt");

for(strings;getline(in,s);)

{

if(s=="000000")break;

stringt=s;

for(inti=0;i

{

if(s[i]=='>')s[i]='%';

if(s[i]=='<')s[i]='>';

}

for(inti=0;i

if(s[i]=='%')

s[i]='<';

reverse(s.begin(),s.end());

cout<<(s==t?

"":

"Not")<<"Symmetry"<

}

}

 

8—我实在是想不出来什么别的方法了,高手指教啊。

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

当前位置:首页 > 法律文书 > 调解书

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

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