当前位置:首页 » 编程语言 » 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]));
}