1. 用c语言编写一个查表程序
#include "stdio.h"
void main()
{
float a[10] = {29.4,33.3,37.2,41.4,45.8,50.4,55.2,60.2,65.6};
int b,c;
printf("请输入温度: ");
scanf("%d",&b);
if(b%10!=0||b<0||b>80)
{
printf("输入错误");
}
else
{
c=b/10;
printf("温度是: %.1f",a[c]);
}
}
2. C语言 机械设计里的查表程序 随便什么都好啊
问题含糊不清, 去下载个习语言学习下,然后自己写程序自己用吧。
3. c语言编写查表的程序
用数组来解决最简单方便,自己参考一下吧
#include <stdio.h>
int main()
{
char ch;
int i,j,BQ;
char * k1[3][4]={
{"0","0.1","0.2-0.3" ,"0.4-0.6"} ,
{"0.1" ,"0.2-0.3","0.4-0.6","0.7-0.9"} ,
{"0.2","0.4-0.6","0.7-0.9","1.0"} ,
};
printf("地下水状态说明:\n");
printf("0-潮湿或点滴状出水\n" );
printf("1-淋雨状或涌流状出水,水压<=0.1MPa或单位出水量<=10L/min\n");
printf("2-淋雨状或涌流状出水,水压>0.1MPa或单位出水量>10L/min\n");
printf("请选择地下水状态[0-2]:");
do {
scanf("%c",&ch );getchar();
} while ( ch > '2' || ch< '0' );
i=ch-'0' ;
printf("请输入BQ值:");
scanf("%d" , &BQ );
if ( BQ > 450 ) j=0 ; //题目中写的有问题,应该是>450,不是451
else if ( BQ > 350 ) j=1 ;
else if ( BQ > 250 ) j=2 ;
else j=3 ;
printf("K1=%s\n" , k1[i][j] );
system("pause");
return 0;
}
4. C语言查表 在表中实现跳转 有没办法实现
估计楼主想查“大表”吧,你可以把大表分割为每个不大于255个字节的小表,然后依据条件查某个小表:const
unsigned
char
Tab0[200]
={
赋值语句};const
unsigned
char
Tab1[200]
={
赋值语句};const
unsigned
char
Tab2[200]
={
赋值语句};unsigned
char
GetData(unsigned
int
Index){
switch
(Index
>>8)
{
case
0:
return
Tab0[(unsighed
char)Index];
case
1:
return
Tab1[(unsighed
char)Index];
}
return
Tab2[(unsighed
char)Index];}数组元素如果是其它数据结构,如
int
或
long
等,可依此类推,但必须保证每个数组的最大尺寸不超过
255,这是由
PIC
单片机特殊的查表方式决定的。
5. C语言查表
表就是自己做的.
举个简单的例子,根据公式计算后,0-100对应100度,那就直接根据AD值去对应温度
6. C语言编写一个查表程序
#include <stdlib.h>
#include <stdio.h>
const int LEN = 9;
const float value[9] = {29.4, 33.3, 37.2, 41.4, 45.8, 50.4, 55.2, 60.2, 65.6};
int hashfn(int key)
{
return (key % 9);
}
void main()
{
int temp, ret;
printf("Please input the temperature: ");
scanf("%d", &temp);
if ((ret = hashfn(temp)) >= 0)
printf("%.2f\n", value[ret]);
else
printf("Invalid\n");
system("PAUSE");
}
7. C语言顺序查找程序
//顺序查找
//思路:从表中最后一个记录开始,逐个进行记录的关键字和
//给定值的比较,若某个记录的关键字和给定值比较相等,则
//返回返回记录所在的位置,或查找完所有记录后还没有发现
//符合的记录,则查找失败。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#define N 10
typedef int DataType;//定义比较的元素类型
//静态查找表的顺序存储结构
typedef struct{
DataType * data;//数据元素存储空间基址,按实际长度分配,0号单元留空
//建表时按实际长度分配,0 号单元留空
int length;//表长度
}SSTable;
//创建一个静态表,内容为20以内的随机数
void createST(SSTable* ST,int n){
int i;
time_t t;
if(ST!=NULL){
ST->data=(DataType*)calloc(n+1,sizeof(DataType));
if(ST->data!=NULL){
srand((unsigned) time(&t));
for(i=1;i<=n;i++){
ST->data[i]=rand() ;//产生20以内的随机数
}
ST->length=n;
}
}
}
//创建一个静态表,内容按从小到大排列,以便折半查找
void createST_binary(SSTable* ST,int n){
int i,j=0;
time_t t;
if(ST!=NULL){
ST->data=(DataType*)calloc(n+1,sizeof(DataType));
if(ST->data!=NULL){
for(i=1;i<=n;i++){
ST->data[i]=j;
j+=4;
}
ST->length=n;
}
}
}
//打印出静态表的内容
void print_SSTable(SSTable* ST){
int i,n=ST->length;
if(ST!=NULL){
for(i=1;i<=n;i++){
printf("%d ",ST->data[i]);
}
printf("\n");
}
}
//顺序查找(Sequential Search)
//思路:从表中最后一个记录开始,逐个进行记录的关键字和
//给定值的比较,若某个记录的关键字和给定值比较相等,则
//返回返回记录所在的位置,或查找完所有记录后还没有发现
//符合的记录,则查找失败。
//查找成功:返回记录所在位置
//查找失败:返回0
int search_seq(SSTable ST,DataType key){
int i;
if(ST.data==NULL)return 0;
ST.data[0]=key;//设置监视哨。目的在于免去查找过程中每一步都要检测整
//个表是否查找完毕,是一个很有效的程序设计技巧 。监视
//哨也可以设在高下标处。
for(i=ST.length;ST.data[i]!=key;i--);
return i;
}
//折半查找(Binary Search)
//当记录的key按关系有序时可以使用折半查找
//思路:对于给定key值,逐步确定待查记录所在区间,每次将搜索空间减少一半(折半),
//直到查找成功或失败为止。
int search_binary(SSTable ST,DataType key){
int low,high,mid;
low=1;
high=ST.length;
while(low<=high){//当表空间存在时
mid=(low+high)/2;
if(ST.data[mid]==key){
return mid;//查找成功,返回mid
}
if(key<ST.data[mid]){
high=mid-1;//继续在前半区间查找
}else{
low=mid+1;//继续在后半区间查找
}
}
return 0;//查找失败
}
//分块查找(只记录思想)
//分块查找中,设记录表长为n,将表的n个记录分成b=n/s个块,每个s个记录
//最后一个记录数可以少于s个,且表分块有序,即后一个块的所有key值大于
//前一个块的所有key值
//每块对应一个索引项,索引项记录了该块记录的最大key值和该块第一记录的指针(或序号)
//算法:
//(1)由索引表确定待查找记录所在的块;
//(2)在块内顺序查找。
int main(){
int n=20;//在20个数中查找,方便看结果,不要设置得太大
SSTable ST,ST_binary;//分别用于顺序查找和折半查找的静态表
index indtb[n+1];//索引表,用于分块查找
createST(&ST,n);//创建一个随机静态表
createST_binary(&ST_binary,n);//创建一个从小到大顺序排列的静态表
//采用顺序查找
printf("原始数据:");
print_SSTable(&ST);
printf("顺序查找5的结果:%d\n",search_seq(ST,5));
printf("顺序查找10的结果:%d\n",search_seq(ST,10));
printf("顺序查找12的结果:%d\n",search_seq(ST,12));
printf("顺序查找15的结果:%d\n",search_seq(ST,15));
printf("顺序查找20的结果:%d\n",search_seq(ST,20));
printf("--------------------------------------------\n");
//采用折半查找
printf("原始数据:");
print_SSTable(&ST_binary);
printf("折半查找5的结果:%d\n",search_binary(ST_binary,5));
printf("折半查找10的结果:%d\n",search_binary(ST_binary,10));
printf("折半查找12的结果:%d\n",search_binary(ST_binary,12));
printf("折半查找15的结果:%d\n",search_binary(ST_binary,15));
printf("折半查找20的结果:%d\n",search_binary(ST_binary,20));
system("pause");//暂停一下,看看结果
free(ST.data);//不要忘了释放堆空间
return 0;
}
8. c语言查fat表
9. C语言,数据查表,高分求高手!
int seekIndex (unsigned int x, unsigned int * temp)
{
int i1, i2, i;
if (x > temp [0]) || (x < temp [N-1]) return 1024;
for ( i1 = 0, i2 = N-1, i = (N-1)>>1; i != i1 ; i = (i1 + i2)>>1)
{
if ( x == temp [i] ) return i;
if ( x > temp [i] ) i2 = i;
else i1 = i;
}
if ( (x - temp [i2]) < (temp[i1] - x) ) return i2;
else return i1;
}
这个是用二分法查表..... 不用二分法稍微简单一点.....
N 是否为偶数没关系.....
不过, 为什么返回 1024 而不是 -1 呢? 如果 x 不在 temp 范围内?