當前位置:首頁 » 編程語言 » 查表c語言程序
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

查表c語言程序

發布時間: 2022-02-28 10:03:54

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 范圍內?