C语言:顺序,二分查找,冒泡排序实践项目
2017-07-26 22:09
701 查看
任务代码:
【项目1-有几个】
请编程序,输入若干个正数(不超过100个,以0结束),保存在数组中。再输入一个正数n,输出n在前面出现过多少次?
【项目2-二分法解方程】
二分法是在计算机科学中很重要的一种方法,用于查找产生二分查找算法,还可以用在很多场合。
可以用二分法解方程。
对于区间[a,b]上连续不断且f(a)·f(b)<0的函数y=f(x),通过不断地把函数f(x)的零点所在的区间一分为二,使区间的两个端点逐步逼近零点,进而得到零点近似值的方法叫二分法。
算法:
1 确定区间[a,b],验证f(a)·f(b)<0
2 求区间(a,b)的中点c
3 判断
(1) 若f(a)·f(c)<0,则令b=c;
(2) 若f(c)·f(b)<0,则令a=c.
4 判断f(c)是否达到精确度ξ:即若┃f(c)┃<ξ,则x=c就是使f(x)接近零点的近似值,否则重复2-4.
请按照上面的算法,编程序求解方程f(x)=2x^3-5x^2+3x-6=0,要求精确到0.00001
冒泡排序实践:
【项目4】
从文件salary.txt中读入工人的工资(不超过500人),全部增加20%(好事),然后对工资数据进行排序,将排序后的结果保存到文件ordered_salary.txt中。
做完打开文件看看结果,玩这么多数据于股掌之间,相信你会有成就感的。
执行情况:
项目1:
![](https://img-blog.csdn.net/20170726220907327)
项目2:
![](https://img-blog.csdn.net/20170726231109933)
项目4:
![](https://img-blog.csdn.net/20170727115301108)
![](https://img-blog.csdn.net/20170727115305528)
【项目1-有几个】
请编程序,输入若干个正数(不超过100个,以0结束),保存在数组中。再输入一个正数n,输出n在前面出现过多少次?
#include <stdio.h> #define SIZE 100 int main() { int n=0; double enter[SIZE],number; //输入数字 printf("提示:请输入数字并且按0结束输入!\n"); do { printf("请输入第%d个正数:",n+1); scanf("%lf",&number); //这里因为我们需要对输入的numebr 进行判断,所以不能直接将数字存入&enter[i] //判断结束 if(number==0) break; //判断非负 if(number<0) { printf("输入的数字必须是正数!\n"); continue; } enter =number;//赋值存入数组 n++; }while(n<=100); //因为和数字顺序无关,所以只能采用顺序查找 double key; int count=0; int i; printf("输入你想查找的数字:"); scanf("%lf",&key); for(i=0;i<n;i++) { if(key==enter[i]) count++; } printf("这个数字总共出现过:%d次",count); return 0; }
【项目2-二分法解方程】
二分法是在计算机科学中很重要的一种方法,用于查找产生二分查找算法,还可以用在很多场合。
可以用二分法解方程。
对于区间[a,b]上连续不断且f(a)·f(b)<0的函数y=f(x),通过不断地把函数f(x)的零点所在的区间一分为二,使区间的两个端点逐步逼近零点,进而得到零点近似值的方法叫二分法。
算法:
1 确定区间[a,b],验证f(a)·f(b)<0
2 求区间(a,b)的中点c
3 判断
(1) 若f(a)·f(c)<0,则令b=c;
(2) 若f(c)·f(b)<0,则令a=c.
4 判断f(c)是否达到精确度ξ:即若┃f(c)┃<ξ,则x=c就是使f(x)接近零点的近似值,否则重复2-4.
请按照上面的算法,编程序求解方程f(x)=2x^3-5x^2+3x-6=0,要求精确到0.00001
#include <stdio.h> #include <math.h> double f(double); int main() { double a,b; printf("本函数求解f(x)=2x^3-5x^2+3x-6=0!\n"); printf("请输入查找区间a,b的值:"); scanf("%lf %lf",&a,&b); if (f(a)*f(b)>0) { printf("输入的权健必须使得函数值异号!\n"); main(); } printf("在[%.2f, %.2f]间,方程将有一个根\n",a, b); //也可以用以下方法才判断 /*do { printf("请输入一个范围x0 x1:"); scanf("%lf %lf", &a, &b); //尝试输入a和b的值,即确定可能解所在的区间 }while(f(a)*f(b)>=0); //要求这两点上的函数值异号,从而保证[a, b]之间有解 */ //二分法查找 double low,high,mid; low=a;high=b; do { mid=(low+high)/2; if(f(mid)==0) { break; } else if(f(low)*f(mid)<0)//证明mid>在[0,b] { high=mid; } else if(f(high)*f(mid)<0)//证明mid在[a,0] { low=mid; } }while(fabs(f(mid))>1e-5);//当值无限接近于x轴的时候 //输出结果 printf("该方程的解是:x=%.5lf",mid); return 0; } double f(double x) { double result; result=pow(2*x,3)-5*pow(x,2)+3*x-6; return result; }
冒泡排序实践:
【项目4】
从文件salary.txt中读入工人的工资(不超过500人),全部增加20%(好事),然后对工资数据进行排序,将排序后的结果保存到文件ordered_salary.txt中。
做完打开文件看看结果,玩这么多数据于股掌之间,相信你会有成就感的。
#include <stdio.h> #include <stdlib.h> double f(double); int main() { //打开文件 FILE *fpin,*fpout; int i=0,j; double array[500];//预留500个空间 fpin=fopen("salary.txt","r"); if(fpin==NULL) { printf("File open file!"); exit(1); } //将文件中的工资取出来存入数组array[i] while(fscanf(fpin,"%lf",&array[i])!=EOF) { array[i]=array[i]*1.2; //工资增加 i++; } fclose(fpin); //冒泡排序 int m,n; double t; for(m=0;m<i-1;m++)//总共有i个数据,扫描i-1次 { for(n=0;n<i-m-1;n++)//每次对比到arrar[i-m-1]项 { if(array >array[n+1]) { t=array[n+1]; array[n+1]=array ; array =t; } } } //保存数据输出文件 fpout=fopen("ordered_salary.txt","w"); if(fpout==NULL) { printf("outputfile open fail!\n"); exit(1); } for(j=0;j<i;j++) { fprintf(fpout,"%.3lf\n",array[j]); } printf("finish!byebye!\n"); fclose(fpout); return 0; }
执行情况:
项目1:
项目2:
项目4:
相关文章推荐
- C语言【顺序表】冒泡排序,一次选出最大最小的数据,二分查找,初始化顺序表
- C语言【顺序表】冒泡排序,一次选出最大最小的数据,二分查找,初始化顺序表
- C语言 冒泡排序和二分查找
- 动态数组,数组初始化,数组内存释放,向数组中添加一个元素,向数组中添加多个元素,数组打印,顺序查找,二分查找,查找数组并返回地址,冒泡排序,改变数组中某个元素的值,删除一个数值,删除所有,查找含有
- C语言:编写查找和排序函数(二分查找,冒泡排序,选择排序法,插入排序)
- C语言实现直接插入排序,冒泡排序以及二分查找(巩固理解记忆)
- PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解
- PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解
- 第三周实践项目1--顺序表的基本运算(2)线性表长度,查找元素
- C语言:顺序查找和二分查找
- 巩固C语言(四)-----冒泡排序 & 二分查找 & 单次循环对二维数组赋初值
- C语言查找算法之顺序查找、二分查找(折半查找)
- C语言实现直接插入排序,冒泡排序以及二分查找(巩固理解记忆)
- C语言实现数组二分查找与顺序查找
- PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数
- 顺序表查找(顺序查找、二分查找) C语言实现
- C语言:冒泡排序和二分查找混合
- PHP 数组排序(冒泡排序、选择排序);数组查找(顺序查找、二分查找)
- c语言归并、选择、直接插入、冒泡、快速、堆排序与顺序、二分查找
- 第四周《C语言及程序设计》实践项目20 经典:查找的艺术