第一章 控制台应用程序
⊿ x =( x i-1- x i)/(f(x i)-f(x i-1))*f(x i)
当⊿ x
(x i+1,f(x i+1))代替(x i,f(x i)),继续迭代。
求解方程:x*lg(x)=1 的实根的近似值,误差不超过 0.01。
[提示]令 f(x)=x*lgx-1,则 f(2)?-0.398<0,而 f(3)?0.431>0,根在 2 与 3 之间。
#include
double a=2,b=3,ep=0.001; int main(){
int maxit,j;
double x1,x2,temp,f1,f2,dx; f1=a*log10(a)-1; f2=b*log10(b)-1; if(f1*f2>=0){
cout<<\初值错!\ return 0; }
if(fabs(f1) x1=a; x2=b; } else{ x1=b; x2=a; temp=f1; f1=f2; f2=temp; } for(j=1;j<=max;j++){ dx=(x1-x2)*f2/(f2-f1); cout< f2=x2*log10(x2)-1; cout<<'\\t'< cout<<\方程的根为:\ return 0; 16 误差定义为: C++程序设计实践教材 } } cout<< \迭代次数过多!\ return 1; } 4. 范例: 0 到 4 五个数字,组成五位数,每个数字用一次,但十位和百位 不能为 3(当然万位不能为 0),输出所有可能的五位数。 #include int i,j,k,l,m,count=0; for(i=1;i<=4;i++){ for(j=0;j<=4;j++){ if(j==i) continue; for(k=0;k<=4;k++){ if(k==3||k==i||k==j) continue; for(l=0;l<=4;l++){ if(l==3||l==i||l==j||l==k) continue; for(m=0;m<=4;m++){ if(m==i||m==j||m==k||m==l) continue; cout< if(count%5==0) cout< return 0; } 穷举法采用循环语句,对须剔除的情况,应在循环体内用条件语句实现,并 使用 continue 语句,不可用 break。如果放在循环条件中,必然出错。 实验六 文本文件简单应用 一、实验目的 1. 学会将程序运行的结果存入文本文件。 2. 学会从文本文件读取数据,进行运算。 二、实验内容 1. 范例:修改实验五中的第二题,求出水仙花数后不是在屏幕上显示而是 存入文本文件。请在退出程序后,用记事本打开该文本文件,查看结果。 [格式] (1) 说明一个文件流对象(内部文件)。文件流类型 ifstream 支持从输入文件中提 取数据的操作。而文件流类型 ofstream 完成数据写入输出文件中的各种操作。 ifstream ifile; ofstream ofile; //定义输入文件,ifile 为文件名,可用任意标识符 /定义/输出文件,ofile 为文件名,可用任意标识符 特别注意:输入文件用于读,输出文件用于写。 (2) 打开文件。 ifile.open(\ //引号中的\为磁盘文件路径名 ofile.open(\ 在文件流对象和磁盘文件名之间建立联系。 17 第一章 控制台应用程序 (3) 对文件进行读写操作。可用 C++的提取运算符(>>)和插入运算符(<<)进 行。也可以用读字符的 get()和读字符串的 getling()等函数。用输出文件(如 ofile) 代替 cout,输入文件(如 ifile)代替 cin。 (4) 关闭文件。 ifile.close(); ofile.close(); 关闭文件时,系统把与该文件相关联的文件缓冲区中的数据写到磁盘文件 中,保证文件的完整;同时把磁盘文件名与文件流对象之间的关联断开,可防止 误操作修改了磁盘文件。 #include int k=100,l,m,n,count=0; ofstream ofile; ofile.open(\ ofile<<\水仙花数有:\ do{ l=k/100; n=k; //百位 //个位 //定义输出文件 m=(k-l*100-n)/10; if(k==l*l*l+m*m*m+n*n*n){ ofile< if(count%5==0) ofile< //关闭文件 2. 范例:编程从上题生成的文本文件读取水仙花数,并显示在屏幕上。 #include char ch[256]; ifstream ifile; ifile.open(\ cout<<\文件内容:\ do{ ifile.getline(ch,255); cout< //由文件读入数据 //屏幕显示 //定义输入文件 18 C++程序设计实践教材 }while(ifile.eof()==0); ifile.close(); return 0; } //当读到文件结束时,ifile.eof()为真 //关闭文件 注意:在读到文件结束符前,先读了一个空串,所以输出多了一空行。 2 2 3. 编写程序求 500 以内的勾股弦数。即满足 c =b +a 的三个数,要求 b>a。 2 将所有符合要求的组合存入文本文件。 4. 编写程序从上题建立的文本文件中读取 500 以内的勾股弦数,并显示在 屏幕上。 实验七 函数的基本概念 一、实验目的 函数是 C++程序的基本组成模块,要求熟练掌握: 1. 函数的定义及调用。 2. 函数参数的传递(传值),形参、实参的关系,函数声明。 3. 理解局部变量的意义。 二、实验内容 1. 范例:将教材中【例 2.12】改为用函数实现,编写一个用迭代法求平方 根的函数。 [分析] 写一个通用的求平方根的函数,参数(形参)为待求根的数,返回值为 该数的平方根。由于平方数不可能为负,因此在主调函数中,设置一个判断输入 数正负的操作,为正则用该数(实参)调用求平方根函数,为负输出错误信息。 [程序] #include double sroot(double a); int main(){ double x, a; cout <<\ cin >>a; if(a<0) else{ x=sroot(a); //调用求平方根函数 cout <<\ cout<<\ //求平方根函数原型声明 } } double sroot(double a){ double x = a/2; return 0; 19 第一章 控制台应用程序 while(fabs((x-a/x)/2)>1e-7) x=(x+a/x)/2; return (x); } 2. 范例:在按值传递中,被调函数执行时,形式参数得到了实在参数的一 个副本,这样调用函数可以向被调函数单方向传递数据。但在被调函数中不能对 实在参数本身操作。C++/C 对数组参数传递拷贝的是数组的起始地址,而不是拷 贝数组本身,所以操作是在原数组上进行。下面是传递数组的一个简单例子 #include char name[4] = \ cout < void change_it(char c[4]){ strcpy(c, \ return; } // Output ABC // Output XYZ 3 .设计一个简单的计算器程序,从键盘输入\ 5\代表表达式\,程序 读入运算符和数据,调用 Calculate 函数,根据运算符进行+,-,*,/四则运算。要求 能反复执行这一过程,直到用户输入#符号作为运算符。 函数原型已给出如下: double add(double, double); //加+ double minus(double, double); //减- double multi(double, double); //乘* double div(double, double); //除/ double Calculate(double,double,char); //运算符作为字符数据读入 4. 设计一个求两个数最大公约数的通用函数,算法不限,要求能反复输入 数据并输出其最大公约数。 *可用枚举法,从两数中的小者开始试,逐步减小,直到找到最大公约数。 实验八 函数的递归算法 一、实验目的 1. 掌握函数的嵌套调用、递归调用。 2. 掌握递归法编程。 20 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库C++程序设计实践样例(4)在线全文阅读。
相关推荐: