【C语言】再次找的一些C语言题目,关于折半查找和某些种种
来源:互联网 发布:苹果完美越狱软件 编辑:程序博客网 时间:2024/05/20 20:17
首先我们来解释一下折半查找:
1.对一组具有升序(降序)的序列取其中间值,啪一刀斩断,
2.然后就进行比较啦,如果比较等于中间值,返回不解释。
3.如果小于中间值,就将查找范围变成右(左)边。
4.如果大于中间值,就将查找范围变成左(右)边。
5.一直到左边参数大于右边为止咯;
////查找数值#include <stdio.h>void swap(int v[],int a, int b){ int temp; temp = v[a]; v[a] = v[b]; v[b] = temp;}void qsort(int v[],int left, int right) //写了一个快速查找的方法,进行排序{ int i,last; //博客前面有一篇有解释 if(left >= right) return; swap(v,left,(left+right)/2); last = left; for(i = left +1;i <= right;i++) { if(v[i] < v[left]) swap(v,++last,i); } swap(v,left,last); qsort(v,left,last-1); qsort(v,last+1,right);}void BSearch(int v[],int f,int l,int r);int main(){int arry[10] = {0};int find = 0;int i = 0;int left = 0,right = sizeof(arry)/sizeof(arry[0]);printf("请输入一组数字(10个):");for(i=0 ;i < 10; i++){scanf("%d",&arry[i]);}printf("请输入想查找的数值");scanf("%d",&find);qsort(arry,left,right-1);BSearch(arry,find,left,right);return 0;}void BSearch(int v[],int find,int left,int right){int mid = 0;if(left >= right){return ;}while(left <= right){mid =(left + right)/2;if(v[mid] == find){printf("存在%d",find);return ;}else if(v[mid] < find){left = mid +1;}else if(v[mid] > find){right = mid -1;}}printf("不存在");}
一个substr的实现,题目是这样的奥:
编写一个函数,它从一个字符串中提取一个子字符串。函数原型如下:
int substr(char dst[], char src[],int start, int len)
{}
目标是:从 src 数组起始位置向后偏移 start个字符的位置开始,最多复制 len 个非NUL 字符到 dst数组。在复制完毕之后, dst 数组必须以 NUL字节结尾。函数的返回值是存储于 dst 数组中的字符串的长度。
PS:其实题目还有一些要求,只是没有加入进去罢了:
//substr#include <stdio.h>#include <string.h>int substr(char dst[],char src[],int start,int len);int main(){char src[50];char dst[20];int count;int start = 0,len = 0;printf("请输入一串字符");scanf("%s",&src);printf("请输入开始的起始值");scanf("%d",&start);printf("请输入长度截取的");scanf("%d",&len);count = substr(dst,src,start,len);printf("%d",count);return 0;}int substr(char dst[],char src[],int start,int len){int i,j,count;j = 0;count = 0;if(start < 0 || (start+len) > strlen(src)){*dst = '\0';printf("开始点或长度不符合规则");return 0;}for( i = start-1;i < start + len-1;i++,j++){if(src[i] == '\0')return 0;dst[j] = src[i];count++;}dst[j] = '\0';return count;}
有一个分数序列
2/1+3/2+5/3+8/5+13/8+…
求出这个数列前 20 项的和。
//分母计算#include <stdio.h>int main(){double molecular,denominator,sum;int i;i = 0;sum =0;molecular = 2;denominator = 1;for( i = 0; i<20; i++){int temp = molecular;sum += (molecular / denominator);molecular += denominator;denominator = temp;}printf("%f",sum);return 0;}
一个球从 100 米高的自由落下,每次落地后反跳回原高度的一半,再落下,再反弹。求第
10次落地时,共经过多少米,第 10 次反弹多高。
//高度计算#include <stdio.h>int main(){double height = 100;int count;double sum = 0;for(count = 0;count < 10;count++){sum += height;height /= 2;if(count < 9)sum += height;}printf("%f %f",sum,height);return 0;}
猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,好不过瘾,又多吃了一个。第二天早上又吃了剩下的桃子的一半,又多吃了一个。以后每天都吃了前一天剩下的一半零一个,到第 10 天早上想再吃的时候,就剩下一个桃子。求第一天共摘多少个桃子。
//猴子吃桃#include <stdio.h>int main(){int sum = 1;int day = 0;for( day=1; day < 10; day++){sum = (sum+1)*2;}printf("%d",sum);return 0;}
本文出自 “剩蛋君” 博客,请务必保留此出处http://memory73.blog.51cto.com/10530560/1676801
- 【C语言】再次找的一些C语言题目,关于折半查找和某些种种
- C语言 -- 折半查找
- C语言 折半查找
- C语言 折半查找
- 【C语言】折半查找。
- 折半查找(c语言)
- 【C语言】 折半查找
- C语言:折半查找
- 【C语言】折半查找
- C语言折半查找
- 折半查找的c语言实现
- 纯C语言写的折半查找
- C语言:折半查找的程序编写
- C 语言经典题目系列解决方案(11)-折半查找
- C语言折半查找法
- C语言折半查找DEMO
- C 语言之折半查找
- C语言习题折半查找
- 【C语言】C的一些简单练习题,关于水仙花数,求和,整数高低位输出,制定二进制位替换
- 【C语言】使用递归的整数输出(高位到低位)/输出一个菱形(能够确定行数)
- 【C语言】简单C编程题-同位相同的N项之和/标准输入花括号成对判断/行号行输出
- 【C语言】一些有意思的C语言题目,
- jdk&jmeter环境变量配置
- 【C语言】再次找的一些C语言题目,关于折半查找和某些种种
- 【C语言】一些关于二进制位的一些题题目哦。
- 【C语言】关于atoi,itoa与itob的重写和字符统计
- 【C语言】3子棋游戏,
- HDU 2665 Kth number(可持续化线段树)
- 【C语言】一些面试题。
- 【C语言】在字符串中找出第一个只出现一次的字符。 如输入“abaccdeff”,则输出'b'。
- 【C语言】杨氏矩阵C语言实现
- 【C语言】学生成绩链表的录入