1、C+程序设计实例【例 3.12】用下面公式求 的近似值。/41-1/3+1/5-1/7+直到最后一项的绝对值小于 10-7为止。根据给定的算法很容易编写程序如下:. #include . #include . #include . using namespace std;. int main( ). . int s=1;. double n=1,t=1,pi=0;. while(fabs(t)1e-7). . pi=pi+t;. n=n+2;. s=-s;. t=s/n;. . pi=pi*4;. cout. #include . using namespace std;. int main(
2、 ). . long f1,f2;. int i;. f1=f2=1;. for(i=1;i. #include . #include . using namespace std;. int main( ). . int m,k,i,n=0;. bool prime;/定义布尔变量 prime. for(m=101;m. using namespace std;. int main( ). . char c;. while (c=getchar( )!=n). . if(c=a . . coutZ| cz) c=c-26;因为所有小写字母都满足“cZ”条件,从而也执行“c=c-26;”语句,这
3、就会出错。因此必须限制其范围为“cZ float *a,yy=0.0;a=(float *)malloc(n*sizeof(float);for(i=0;i#include#include#include#include#include#include /*头文件*/void init();char *DchangeB(char *buf);int search(char *buf,int type,int command);void intdeal(char *buffer);void chardeal(char *buffer);void errordeal(char error,int
4、lineno);void scanner();void init() 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“
5、,“while“; /*C语言所有关键字/char *limit=“ “,“(“,“)“,“,“,“-“,“.“,“!“,“+“,“-“,“,“,“,“#“,“_“,“;/*运算、限界符*/fstream outfile;int i,j;char *c;outfile.open(“key.txt“,iOS:out);for(i=0;i=A)infile.get(ch);word=new chari+1;memcpy(word,array,i);wordi=/0;intdeal(word);if(ch!=EOF)infile.seekg(-1,ios:cur);else if(ch= )|(ch
6、=/t); /*消除空格符和水平制表符*/else if(ch=/n)line+; /*消除回车并记录行数*/else if(ch=/) /*消除注释*/infile.get(ch);if(ch=) /*判断是否为/=符号*/outfile.open(“output.txt“,ios:noreplace|ios:app);outfile“/=/t/t/t4/t/t/t32/n“;outfile.close();else if(ch!=*) /*若为除号,写入输出文件*/outfile.open(“output.txt“,ios:noreplace|ios:app);outfile“/t/t/t
7、4/t/t/t13/n“;outfile.close();outfile.seekg(-1,ios:cur);else if(ch=*) /*若为注释的开始,消除包含在里面的所有字符*/count=0;infile.get(ch);while(count!=2) /*当扫描到*且紧接着下一个字符为/才是注释的结束*/count=0;while(ch!=*)infile.get(ch);count+;infile.get(ch);if(ch=/)count+;elseinfile.get(ch);else if(ch=“) /*消除包含在双引号中的字符串常量*/outfile.open(“out
8、put.txt“,ios:noreplace|ios:app);outfilech“/t/t/t4/t/t/t37/n“;outfile.close();while(ch!=“)infile.get(ch);infilech“/t/t/t4/t/t/t37/n“;infile.close();else /*首字符为其它字符,即运算限界符或非法字符*/array0=ch;infile.get(ch); /*再读入下一个字符,判断是否为双字符运算、限界符*/if(ch!=EOF) /*若该字符非文件结束符*/array1=ch;word=new char3;memcpy(word,array,2)
9、;word2=/0;result=search(word,4,1); /*先检索是否为双字符运算、限界符*/if(result=0) /*若不是*/word=new char2;memcpy(word,array,1);word1=/0;result=search(word,4,1); /*检索是否为单字符运算、限界符*/if(result=0) /*若还不是,则为非法字符*/errordeal(array0,line);errorno+;infile.seekg(-1,ios:cur);else /*若为单字符运算、限界符,写入输出文件并将扫描文件指针回退一个字符*/outfile.open
10、(“output.txt“,ios:noreplace|ios:app);outfileword“/t/t/t4/t/t/t“result“/t“endl;outfile.close();infile.seekg(-1,ios:cur);else /*若为双字符运算、限界符,写入输出文件*/outfile.open(“output.txt“,ios:noreplace|ios:app);outfileword“/t/t/t4/t/t/t“resultendl;outfile.close( );else /*若读入的下一个字符为文件结束符*/word=new char2;memcpy(word,
11、array,1);word1=/0;result=search(word,4,1); /*只考虑是否为单字符运算、限界符*/if(result=0) /*若不是,转出错处理*/errordeal(array0,line);else /*若是,写输出文件*/outfile.open(“output.txt“,ios:noreplace|ios:app);outfileword“/t/t/t4/t/t/t“result“/t“endl;outfile.close();infile.get(ch); infile.close();cout“/nThere are “errorno“ error(s)./n“; /*报告错误字符个数*/void main() char yn;doinit(); /*初始化*/scanner();/*扫描源程序*/printf(“Are You continue(y/n)/n“); /判断是否继续?yn=getch();while(yn=y|yn=Y);