c++程序实例资料Word文件下载.docx

上传人:b****1 文档编号:241059 上传时间:2023-04-28 格式:DOCX 页数:16 大小:31.27KB
下载 相关 举报
c++程序实例资料Word文件下载.docx_第1页
第1页 / 共16页
c++程序实例资料Word文件下载.docx_第2页
第2页 / 共16页
c++程序实例资料Word文件下载.docx_第3页
第3页 / 共16页
c++程序实例资料Word文件下载.docx_第4页
第4页 / 共16页
c++程序实例资料Word文件下载.docx_第5页
第5页 / 共16页
c++程序实例资料Word文件下载.docx_第6页
第6页 / 共16页
c++程序实例资料Word文件下载.docx_第7页
第7页 / 共16页
c++程序实例资料Word文件下载.docx_第8页
第8页 / 共16页
c++程序实例资料Word文件下载.docx_第9页
第9页 / 共16页
c++程序实例资料Word文件下载.docx_第10页
第10页 / 共16页
c++程序实例资料Word文件下载.docx_第11页
第11页 / 共16页
c++程序实例资料Word文件下载.docx_第12页
第12页 / 共16页
c++程序实例资料Word文件下载.docx_第13页
第13页 / 共16页
c++程序实例资料Word文件下载.docx_第14页
第14页 / 共16页
c++程序实例资料Word文件下载.docx_第15页
第15页 / 共16页
c++程序实例资料Word文件下载.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

c++程序实例资料Word文件下载.docx

《c++程序实例资料Word文件下载.docx》由会员分享,可在线阅读,更多相关《c++程序实例资料Word文件下载.docx(16页珍藏版)》请在冰点文库上搜索。

c++程序实例资料Word文件下载.docx

第1、2个数为1、1。

从第3个数开始,每个数是其前面两个数之和。

即:

 

 

F1=1 

(n=1)

F2=1 

(n=2)

Fn=Fn-1+Fn-2(n≥3)

这是一个有趣的古典数学问题:

有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第3个月后每个月又生一对兔子,假设所有兔子都不死,问每个月的兔子总数为多少?

根据给出的每月兔子总数的关系,可编写程序如下:

3.using 

4.int 

5.{

6.long 

f1,f2;

i;

8.f1=f2=1;

9.for(i=1;

i<

=20;

i++)

11.cout<

setw(12)<

f1<

f2;

12.//设备输出字段宽度为12,每次输出两个数

13.if(i%2==0) 

cout<

14.//每输出完4个数后换行,使每行输出4个数

15.f1=f1+f2;

16.//左边的f1代表第3个数,是第1、2个数之和

17.f2=f2+f1;

18.//左边的f2代表第4个数,是第2、3个数之和

20.return 

21.}

【例3.14】找出100~200间的全部素数。

编写程序如下:

m,k,i,n=0;

8.bool 

prime;

//定义布尔变量prime

9.for(m=101;

m<

=200;

m=m+2) 

//判别m是否为素数,m由101变化到200,增量为2

11.prime=true;

//循环开始时设prime为真,即先认为m为素数

12.k=int(sqrt(m));

//用k代表根号m的整数部分

13.for(i=2;

=k;

i++) 

//此循环作用是将m被2~根号m除,检查是否能整除

14.if(m%i==0) 

//如果能整除,表示m不是素数

15.{

16.prime=false;

//使prime变为假

17.break;

//终止执行本循环

18.}

19.if 

(prime)//如果m为素数

20.{

21.cout<

setw(5)<

m;

//输出素数m,字段宽度为5

22.n=n+1;

//n用来累计输出素数的个数

23.}

24.if(n%10==0) 

//输出10个数后换行

25.}

26.cout<

//最后执行一次换行

27.return 

28.}

【例3.15】译密码。

为使电文保密,往往按一定规律将电文转换成密码,收报人再按约定的规律将其译回原文。

例如,可以按以下规律将电文变成密码:

将字母A变成字母E,a变成e,即变成其后的第4个字母,W变成A,X变成B,Y变成C,Z变成D。

见图3.20,字母按上述规律转换,非字母字符不变,如"

Wonderful!

转换为"

Asrhivjyp!

输入一行字符,要求输出其相应的密码。

图3.20

程序如下:

2.using 

3.int 

4.{

5.char 

c;

6.while 

((c=getchar( 

))!

='

\n'

7.{

8.if((c>

a'

&

c<

z'

) 

|| 

(c>

A'

Z'

))

9.{

10.c=c+4;

11.if(c>

'

+4 

c>

12.c=c-26;

13.}

14.cout<

16.cout<

17.return 

运行结果如下:

IamgoingtoBeijing!

MeqksmrkxsFimnmrk!

while语句中括号内的表达式有3个作用:

∙从键盘读入一个字符,这是用getchar函数实现的;

∙将读入的字符赋给字符变量c;

∙判别这个字符是否为'

(即换行符)。

如果是换行符就执行while语句中的复合语句(即花括号内的语句),对输入的非换行符的字符进行转换处理。

按前面分析的思路对输入的字符进行处理,有一点请读者注意,内嵌的if语句不能写成:

if(c>

||c>

c=c-26;

因为所有小写字母都满足“c>

”条件,从而也执行“c=c-26;

”语句,这就会出错。

因此必须限制其范围为“c>

&

c<

+4”,即原字母为'

W'

到'

,在此范围以外的不是原大写字母W~Z,不应按此规律转换。

请考虑:

为什么对小写字母不按此处理,即写成c>

+4而只须写成“c>

”即可。

计算拉格朗日插值的源程序

#include<

stdio.h>

conio.h>

stdlib.h>

//#include<

alloc.h>

floatLagrange(float*x,float*y,floatxx,intn)

{

inti,j;

float*a,yy=0.0;

a=(float*)malloc(n*sizeof(float));

for(i=0;

=n-1;

a[i]=y[i];

for(j=0;

j<

j++)

if(j!

=i)a[i]*=(xx-x[j])/(x[i]-x[j]);

yy+=a[i];

}

free(a);

returnyy;

voidmain()

floatx[4]={0.56160,0.56280,0.56401,0.56521};

floaty[4]={0.82741,0.82659,0.82577,0.82495};

floatxx=0.5635,yy;

floatLagrange(float*,float*,float,int);

yy=Lagrange(x,y,xx,4);

//clrscr();

printf("

x=%f,y=%f/n"

xx,yy);

getch();

编译原理词法分析器c++源程序

#include<

iostream.h>

fstream.h>

string.h>

process.h>

/*头文件*/

voidinit();

char*DchangeB(char*buf);

intsearch(char*buf,inttype,intcommand);

voidintdeal(char*buffer);

voidchardeal(char*buffer);

voiderrordeal(charerror,intlineno);

voidscanner();

voidinit()

char*key[]={"

"

auto"

break"

case"

char"

const"

continue"

default"

do"

double"

"

else"

enum"

extern"

float"

for"

goto"

if"

int"

long"

register"

return"

short"

signed"

sizeof"

static"

struct"

switch"

typedef"

union"

unsigned"

void"

volatile"

while"

};

/*C语言所有关键字/

char*limit[]={"

("

)"

["

]"

->

."

!

++"

--"

~"

*"

/"

%"

+"

-"

>

="

=="

||"

+="

-="

*="

/="

;

{"

}"

#"

_"

/*运算、限界符*/

fstreamoutfile;

inti,j;

char*c;

outfile.open("

key.txt"

iOS:

out);

32;

outfile<

key[i]<

outfile.close();

Limit.txt"

ios:

38;

limit[j]<

c="

bsf.txt"

cs.txt"

output.txt"

char*DchangeB(char*buf)

inttemp[20];

char*binary;

intvalue=0,i=0,j;

buf[i]!

/0'

value=value*10+(buf[i]-48);

/*将字符转化为十进制数*/

if(value==0)

{

binary=newchar[2];

binary[0]='

0'

binary[1]='

return(binary);

i=0;

while(value!

=0)

temp[i++]=value%2;

value/=2;

temp[i]='

binary=newchar[i+1];

=i-1;

binary[j]=(char)(temp[i-j-1]+48);

binary[i]='

return(binary);

/*十进制转化为二进制*/

intsearch(char*buf,inttype,intcommand)

{intnumber=0;

fstreamoutfile;

charch;

chartemp[30];

inti=0;

switch(type)

case1:

outfile.open("

in);

break;

case2:

case3:

case4:

limit.txt"

}

outfile.get(ch);

while(ch!

=EOF){

while(ch!

/n'

temp[i++]=ch;

outfile.get(ch);

temp[i]='

i=0;

number++;

if(strcmp(temp,buf)==0)

outfile.close();

returnnumber;

/*若找到,返回在相应表中的序号*/

else

//结束外层while循环

if(command==1)

outfile.close();

return0;

/*找不到,当只需查表,返回0,否则还需造表*/

switch(type)

buf;

returnnumber+1;

voidintdeal(char*buffer){

intresult;

result=search(buffer,1,1);

/*先查关键字表*/

app);

if(result!

outfile<

buffer<

result<

/*若找到,写入输出文件*/

result=search(buffer,2,2);

/*若找不到,则非关键字,查标识符表,还找不到则造入标识符表*/

/*写入输出文件*/

voidchardeal(char*buffer)

voiderrordeal(charerror,intlineno)

cout<

/nerror:

error<

line"

lineno;

voidscanner()

fstream 

infile,outfile;

charfilename[20];

interr=0;

inti=0,line=1;

intcount,result,errorno=0;

chararray[30];

char*word;

/npleaseinputthefilescannername:

);

scanf("

%s"

filename);

err=1;

infile.open(filename,ios:

nocreate|ios:

while(!

infile)

cannotopenfile"

printf("

pleaseinput 

thefile 

nameagain:

/n"

scanf("

err++;

if(err==3)

{cout<

SORROYYOUCAN'

TVUEWTHEPRGARME/n"

TANKEYOUVIEW"

exit(0);

infile.get(ch);

=EOF)

/*按字符依次扫描源程序,直至结束*/

if(((ch>

)&

(ch<

))||((ch>

))||(ch=='

_'

/*以字母开头*/

while(((ch>

)||((ch>

9'

)))

array[i++]=ch;

word=newchar[i+1];

memcpy(word,array,i);

word[i]='

intdeal(word);

if(ch!

infile.seekg(-1,ios:

cur);

elseif(ch>

ch<

/*以数字开头*/

while(ch>

elseif((ch=='

'

)||(ch=='

/t'

/*消除空格符和水平制表符*/

elseif(ch=='

line++;

/*消除回车并记录行数*/

/'

/*消除注释*/

infile.get(ch);

if(ch=='

/*判断是否为‘/=’符号*/

noreplace|ios:

/=/t/t/t4/t/t/t32/n"

elseif(ch!

*'

/*若为除号,写入输出文件*/

//t/t/t4/t/t/t13/n"

outfile.seekg(-1,ios:

/*若为注释的开始,消除包含在里面的所有字符*/

count=0;

while(count!

=2)

/*当扫描到‘*’且紧接着下一个字符为‘/’才是注释的结束*/

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

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2