第二十课 查找的艺术 【项目1-4】
来源:互联网 发布:淘宝一件代发好做吗 编辑:程序博客网 时间:2024/06/05 06:56
第二十课 查找的艺术
项目一【有几个】
请编程序,输入若干个正数(不超过100个,以0结束),保存在数组中。再输入一个正数n,输出n在前面出现过多少次?
代码:
#include<stdio.h>#define SIZE 100int main(){ int num,i,k=0,l=0; int a[SIZE]; printf("输入一些数字,以0结束\n"); for(i=0;i<SIZE;i++) { scanf("%d",&a[i]); if(a[i]==0) break; k++; } printf("请输入要查找的数字:"); scanf("%d",&num); for(i=0;i<k;i++) { if(a[i]==num) l++; } printf("\n%d共出现了%d次\n",num,l); return 0;}
运行结果:
项目二【二分法解方程】
二分法是在计算机科学中很重要的一种方法,用于查找产生二分查找算法,还可以用在很多场合。
可以用二分法解方程。
对于区间[a,b]上连续不断且f(a)·f(b)<0的函数y=f(x),通过不断地把函数f(x)的零点所在的区间一分为二,使区间的两个端点逐步逼近零点,进而得到零点近似值的方法叫二分法。
假设要求方程f(x)=0的解,给定精确度ξ。其算法是:
代码:
#include<stdio.h>double f(double);int main(){ double a,b,c; do { printf("请输入范围(x x):"); scanf("%lf %lf",&a,&b); } while(f(a)*f(b)>=0); do { c=(a+b)/2; if(f(a)*f(c)<0) b=c; else a=c; } while((f(c)>1e-5)||(f(c)<-1e-5)); printf("\n解为:%lf\n",c); return 0;}double f(double x){ return (3*x*x*x-5*x*x+3*x-6);}运行结果:
项目三【有序数组中插入数据】
定义好一个有10个元素的数组,先输入9个呈升序的数作为前9个元素,再输入一个数,要求按原来排序的规律将它插入数组中。
例如,9个呈升序的数为1 7 8 17 23 24 59 62 101,需要插入的数字为50,输出的序列则为1 7 8 17 23 24 50 59 62 101。
定义好一个有10个元素的数组,先输入9个呈升序的数作为前9个元素,再输入一个数,要求按原来排序的规律将它插入数组中。
例如,9个呈升序的数为1 7 8 17 23 24 59 62 101,需要插入的数字为50,输出的序列则为1 7 8 17 23 24 50 59 62 101。
代码:
#include<stdio.h>#define N 10int main(){ int a[10]={11,22,33,44,55,66,77,88,99}; int i,j,num,t; for(i=0;i<N-1;i++) printf("%d ",a[i]); printf("\n输入数字:"); scanf("%d",&num); a[9]=num; for(j=0;j<N-1;j++) for(i=0;i<N-j-1;i++) { if(a[i]>a[i+1]) { t=a[i]; a[i]=a[i+1]; a[i+1]=t; } } for(i=0;i<N;i++) printf("%d ",a[i]); printf("\n"); return 0;}运行结果:
项目四【工资的排序】
从文件salary.txt中读入工人的工资(不超过500人),全部增加20%(好事),然后对工资数据进行排序,将排序后的结果保存到文件ordered_salary.txt中。
做完打开文件看看结果,玩这么多数据于股掌之间,相信你会有成就感的。
从文件salary.txt中读入工人的工资(不超过500人),全部增加20%(好事),然后对工资数据进行排序,将排序后的结果保存到文件ordered_salary.txt中。
做完打开文件看看结果,玩这么多数据于股掌之间,相信你会有成就感的。
代码:
#include<stdio.h>#include<stdlib.h>#define N 500int main(){ FILE *p; double a[N]; int i,j,n=0; double t; p=fopen("salary.txt","r"); if(p==NULL) { printf("file cannot open!\n"); exit(0); } for(i=0;i<N;i++) { fscanf(p,"%lf",&a[i]); if(a[i]==EOF) break; a[i]=a[i]*1.2; n++; } fclose(p); for(i=0;i<n-1;i++) { for(j=0;j<n-i-1;j++) { if(a[j]>a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } } p=fopen("ordered_salary.txt","w"); if(p==NULL) { printf("file cannot open!\n"); exit(0); } for(i=0;i<n;i++) { fprintf(p,"%.2lf\n",a[i]); } printf("over\n"); fclose(p); return 0;}
运行结果:
数组的冒泡排序法作用非常大,利于排序后再用二分法查找数据
数据杂乱的情况下可以用排序法从小到大或从大到小的重排数字或者排序字符字母。
0 0
- 第二十课 查找的艺术 【项目1-4】
- 第二十四周项目1-哈希法的存储与查找
- 项目管理的艺术
- 项目管理的艺术
- 项目管理的艺术
- 项目管理的艺术
- 第二十三讲项目五 我的加班费
- 第二十三讲项目4-三角公式求值
- 第四周《C语言及程序设计》实践项目20 经典:查找的艺术
- 第十二周 项目3:(4)输出Fibnacci函数的第二十个数
- 第四周项目5:用递归方法求解(4)求Fibnacci序列的第二十个数
- 第二十三讲项目1-被3或者5整除的数
- 什么是成功的项目-《敏捷开发的艺术》读书笔记1
- 第二十三讲项目5-
- 第二十三讲项目6-前导0的数字
- 第二十三讲项目六 前导0的数字
- 【第二十课】流---字节流的使用
- 【第二十课】流---字符流的使用
- Codeforces 599E Sandy and Nuts 状压DP
- groovy/java自实现json解析器(1)绪论
- Nvidia Jetson TK1 无线网卡(Intel 7260)驱动及配置
- 利用run sendKeys向记事本动态写入字符串
- House Robber III
- 第二十课 查找的艺术 【项目1-4】
- android学习 读书笔记之 android 绘图shape
- 卡尔曼滤波器(THE KALMAN FILTER)的数学原理
- JS关键字详解
- Handler、Looper和MessageQueue的基本原理
- python web框架企业实战详解(第六期)\第三课时-css&bootstrap
- 详解JS中的Object对象
- 远程桌面不能拷贝文件的问题
- Phantomjs+Nodejs+Mysql数据抓取(1.数据抓取)