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

c語言結構查詢

發布時間: 2022-08-28 22:52:08

『壹』 c語言中,如何實現在結構體中查找一個特定的元素並輸出

首先看了你的題目以為是結構體變數輸出,但細看有像是枚舉類型。下面寫個例子看是否符合你的需要:

#include<stdio.h>

/*定義枚舉類型*/
enumDAY{MON=1,TUE,WED,THU,FRI,SAT,SUN};

voidmain()
{
/*使用基本數據類型聲明變數,然後對變數賦值*/
intx,y,z;
x=10;
y=20;
z=30;

/*使用枚舉類型聲明變數,再對枚舉型變數賦值*/
enumDAYyesterday,today,tomorrow;

yesterday=MON;
today=TUE;
tomorrow=WED;
printf("%d%d%d ",yesterday,today,tomorrow);
}

如果是結構體,

#include<stdio.h>

voidmain()
{
structtest
{
intMON;
intTUE;
intWED;
intTHU;
intFRI;
intSAT;
intSUN;
}

structtesttest1;
test1.MON=1;
test1.TUE=2;

printf("MON=%d",test1.MON);
printf("TUE=%d",test1.TUE);
}

『貳』 C語言問題,結構體數組查詢及追加問題,求助!


int dataNumber = 0;
這條拿到全局變數里就可以了。這樣在程序開始時其值為0,隨著追加數據而增加。

『叄』 C語言結構體 數組輸入 查詢 急

#include <stdio.h>
#include <string.h>
struct teacher
{
char name[20];
int age;
char course[20];
};

int main()
{
FILE *fptr;
teacher one;
char name[20];
if((fptr = fopen("teachers.txt", "r+")) == NULL)
{
return 0;
}
//insert teacher infor into the file
fseek(fptr, 0, SEEK_END);
scanf("%s%d%s", one.name, &one.age, &one.course);
fprintf("%s%d%s", one.name, one.age, one.course);
//query teacher infor by name
fseek(fptr, 0, SEEK_SET);
scanf("%s", name);
do
{
fscanf("%s%d%s", one.name, &one.age, one.course);
if(strcmp(one.name, name) == 0)
{
printf("%20s%10d%20s\n", one.name, one.age, one.course);
break;
}
}
while(fptr != eof);
return 0;
}

『肆』 C語言結構體---查找學生信息

struct student
{
char NO[2];
char name[9];
int chinese;
int math;
};

main函數:char name[10];
兩個地方的name長度不一。如果運行輸入9個字元,struct 裡面的name就沒有結尾的'\0'
兩個name要定義足夠長,並且等長。

『伍』 C語言編寫數據結構查找演算法

實驗五 查找的實現
一、 實驗目的
1.通過實驗掌握查找的基本概念;
2.掌握順序查找演算法與實現;
3.掌握折半查找演算法與實現。
二、 實驗要求
1. 認真閱讀和掌握本實驗的參考程序。
2. 保存程序的運行結果,並結合程序進行分析。
三、 實驗內容
1、建立一個線性表,對表中數據元素存放的先後次序沒有任何要求。輸入待查數據元素的關鍵字進行查找。為了簡化演算法,數據元素只含一個整型關鍵字欄位,數據元素的其餘數據部分忽略不考慮。建議採用前哨的作用,以提高查找效率。
2、查找表的存儲結構為有序表,輸入待查數據元素的關鍵字利用折半查找方法進行查找。此程序中要求對整型量關鍵字數據的輸入按從小到大排序輸入。
一、順序查找
順序查找代碼:
#include"stdio.h"
#include"stdlib.h"
typedef struct node{
intkey;
}keynode;
typedef struct Node{
keynoder[50];
intlength;
}list,*sqlist;
int Createsqlist(sqlist s)
{
inti;
printf("請輸入您要輸入的數據的個數:\n");
scanf("%d",&(s->length));
printf("請輸入您想輸入的%d個數據;\n\n",s->length);
for(i=0;i<s->length;i++)
scanf("%d",&(s->r[i].key));
printf("\n");
printf("您所輸入的數據為:\n\n");
for(i=0;i<s->length;i++)
printf("%-5d",s->r[i].key);
printf("\n\n");
return1;
}
int searchsqlist(sqlist s,int k)
{
inti=0;
s->r[s->length].key=k;
while(s->r[i].key!=k)
{

i++;
}
if(i==s->length)
{
printf("該表中沒有您要查找的數據!\n");
return-1;
}
else
returni+1;
}
sqlist Initlist(void)
{
sqlistp;
p=(sqlist)malloc(sizeof(list));
if(p)
returnp;
else
returnNULL;
}
main()
{
intkeyplace,keynum;//
sqlistT;//
T=Initlist();
Createsqlist(T);
printf("請輸入您想要查找的數據的關鍵字:\n\n");
scanf("%d",&keynum);
printf("\n");
keyplace=searchsqlist(T,keynum);
printf("您要查找的數據的位置為:\n\n%d\n\n",keyplace);
return2;
}
順序查找的運行結果:
二、折半查找
折半查找代碼:
#include"stdio.h"
#include"stdlib.h"
typedef struct node{
intkey;
}keynode;
typedef struct Node{
keynoder[50];
intlength;
}list,*sqlist;
int Createsqlist(sqlist s)
{
inti;
printf("請輸入您要輸入的數據的個數:\n");
scanf("%d",&(s->length));
printf("請由大到小輸入%d個您想輸入的個數據;\n\n",s->length);
for(i=0;i<s->length;i++)
scanf("%d",&(s->r[i].key));
printf("\n");
printf("您所輸入的數據為:\n\n");
for(i=0;i<s->length;i++)
printf("%-5d",s->r[i].key);
printf("\n\n");
return1;
}
int searchsqlist(sqlist s,int k)
{
intlow,mid,high;
low=0;
high=s->length-1;
while(low<=high)
{
mid=(low+high)/2;
if(s->r[mid].key==k)
returnmid+1;
elseif(s->r[mid].key>k)
high=mid-1;
else
low=mid+1;
}
printf("該表中沒有您要查找的數據!\n");
return-1;
}
sqlist Initlist(void)
{
sqlistp;
p=(sqlist)malloc(sizeof(list));
if(p)
returnp;
else
returnNULL;
}
main()
{
intkeyplace,keynum;//
sqlistT;//
T=Initlist();
Createsqlist(T);
printf("請輸入您想要查找的數據的關鍵字:\n\n");
scanf("%d",&keynum);
printf("\n");
keyplace=searchsqlist(T,keynum);
printf("您要查找的數據的位置為:\n\n%d\n\n",keyplace);
return2;
}
折半查找運行結果:
三、實驗總結:
該實驗使用了兩種查找數據的方法(順序查找和折半查找),這兩種方法的不同之處在於查找方式和過程不同,線性表的創建完全相同,程序較短,結果也一目瞭然。

『陸』 C語言中如何實現對結構體的查找以及輸出

C語言的結構體是一組數據的組合,並不是簡單的單一類型。所以在查找和輸出的時候,均不能直接操作,而是要進行變通。
1 查找。
對於以某一項為關鍵字進行查找時,比如在結構體中有int型的成員a,要查找a為100的結構體變數,這時需要遍歷每個結構體(數組、鏈表、或者其它任意形式),對每個元素的成員a值進行比較,符合的則表示查找成功。
對於結構體中元素較多,同時要對整個結構體每個元素都匹配才算查找到的特殊情況,可以使用memcmp的方式,整體進行比較,以減少代碼量。不過這種情況較為少見,不過多描述。

2 輸出。
對於結構體的輸出,其實就是對其每一項,或者若干項成員變數的輸出。
所以可以使用基本的輸出函數,對每一項單獨輸出,輸出中為了方便閱讀,可以加一些說明文字。
如果對結構體輸出有多處調用的需求,可以在將該功能封裝為函數,供各個需要的函數調用。這樣的好處是,當結構體的成員出現變化,或者結構體輸出要求更改時,修改一處代碼即可完成所有的輸出修改,實現易於維護的效果。

『柒』 C語言——數據結構(排序-查找)

#include<stdio.h>
#include<stdlib.h>
#define N 10
void shellpass(int a[], int n, int d)
{
int i,j,temp;
for(i=d;i<n;i++)
{
if(a[i]<a[i-d])
{
temp=a[i];
for(j=i-d;j>=0&&temp<a[j];j-=d)
a[j+d]=a[j];
a[j+d]=temp;
}
}
}
void shellsort(int a[], int n, int delta[], int t)
{
int i, j;
for(i=0; i<t; i++)
{
shellpass(a, n, delta[i]);

printf("第%d趟希爾排序,增量為%d,排序之後的結果\n",i+1,delta[i]);
for(j=0; j<n; j++)
{
printf("%d\t",a[j]);
}
printf("\n");
}
}
void main()
{
int n=N, a[N];
int b[3] = {5,3,1};
int i;
printf("輸入%d個數\n", n);
for(i=0;i<n;i++)
{
printf("第%d個數:\t",i+1);
scanf("%d",&a[i]);
}

shellsort(a, n, b, 3);
printf("最終希爾排序之後的結果\n");
for(i=0;i<n;i++)
{
printf("%d\t",a[i]);
}
printf("\n");
}

『捌』 C語言 結構——查找學生中最矮身高和最輕體重

#include<stdio.h>

structstudent
{
charname[32];
floatheight;
floatweight;
};
structstudentclass[]=
{
"Jack",170,45,
"Peter",180,100.1,
"John",150,50,
"Tom",210.5,90.3,
"Kim",177.5,68,
};
voidselection(structstudent*class,intlen)
{
inti,j=0,k=0;

for(i=1;i<len-1;i++)
{
if(class[j].height>class[i].height)
j=i;
if(class[k].weight>class[i].weight)
k=i;
}

printf("身高最矮者:%s,身高%f,體重%f ",class[j].name,class[j].height,class[j].weight);
printf("體重最輕者:%s,身高%f,體重%f ",class[k].name,class[k].height,class[k].weight);
}
intmain()
{
selection(class,sizeof(class)/sizeof(class[0]));
}