C语言顺序查找;

要求:1.请自己建立一个学生文件stu.txt(内含十个学生记录,每个记录有姓名,性别,成绩)
2.用顺序查找方法对stu.txt文件中的数据进行查找。
3.验证数据应有查找成功的,也有查找不到的。

第1个回答  2011-01-08
#include<stdio.h>
#include<string.h>
typedef struct
{
char name[100];
char studentID[100];
char major[100];
char grade[100];
}student;

int main()
{
FILE *stdinf;
stdinf=fopen("studentinf.txt","r");
char ID[100],inf[100];
int x,y,z,i,a,b;
student st;
printf("please input the studentID you want to search(0123456789):\n");
gets(ID);
while((fgets(inf,100,stdinf))!=NULL)
{
for(x=0,y=0,i=0;x<strlen(inf);x++,y++)
{
if(ID[x]==inf[y])
{
i++;
}
if(i==10)
{
for(a=0,b=0;b<=strlen(inf)&&inf[b]!='*';a++,b++)
{
st.studentID[a]=inf[b];
}
st.studentID[a]='\0';
b++;
for(a=0;b<=strlen(inf)&&inf[b]!='*';a++,b++)
{
st.name[a]=inf[b];
}
st.name[a]='\0';
b++;
for(a=0;b<=strlen(inf)&&inf[b]!='*';a++,b++)
{
st.major[a]=inf[b];
}
st.major[a]='\0';
b++;
for(a=0;b<=strlen(inf)&&inf[b]!='*';a++,b++)
{
st.grade[a]=inf[b];
}
st.grade[a]='\0';
printf("studentID is:%s\n",st.studentID);
printf("student's name is:%s\n",st.name);
printf("student's major is:%s\n",st.major);
printf("student's grade is:%s\n",st.grade);
break;
}
}
}
fclose(stdinf);
return 0;
}本回答被网友采纳

c语言如何实现-数组排序,二分查找
顺序搜索的方法是逐个比较,直至找出元素。二分搜索则利用了元素间的次序关系,可大大提高效率。二分法的基本思想是将n个元素分成个数大致相同的两半,取a[n\/2]与x作比较。如果x==a[n\/2],则终止。如果xa[n\/2],则只需在右半部分搜索。本题要求利用上一题得到的数组进行顺序查找和二分查找,分...

C语言数据结构中“顺序表”应怎样清空和销毁?
1、首先是定义一个这样的函数,名称为【SeqSearch】,返回值为Int。2、接下来就可以,传入一个数组,一个长度,和一个查找的值。3、此时,就能从零开始到长度减一个个判断。4、此时,可以判断,如果找到了就返回当前下标加一。5、否则就让这个函数返回负一。6、此时,可以在Main函数中配合运行测试。7...

用C语言编写顺序查找和二分查找(折半查找)
顺序查找:在一个已知无序队列中找出与给定关键字相同的数的具体位置。原理是让关键字与队列中的数从第一个开始逐个比较,直到找出与给定关键字相同的数为止。复杂度为o(n).二分查找又称折半查找,它是一种效率较高的查找方法。【二分查找要求】:1.必须采用顺序存储结构 2.必须按关键字大小有序排...

c语言顺序查找100个数中找一个数为什么平均比较50次就可以
1\/100+2\/100+3\/100+...+99\/100+100\/100=(100*99\/2)\/100=49.5

哭求C语言顺序查找带哨兵代码!
main(){ int n=3,i,a[4]= {0,1,2,3}; printf("请输入要查找的数:"); scanf("%d",&x); for(a[0]=x,i=n; a[i]>=0; i--) if(a[i]==x)break; if(i>0)printf("要找的数是a[%d]=%d\\n",i,x); else printf("未找到%d\\n",x); return 0;} ...

用“顺序查找法”查找数组a中与x相等的第一个数的索引 求c语言编程
main(){int a[]={1,2,3,4,5,6,7,8};\/\/举个例子int x,i=0;scanf("%d",&x);for(i=0;i<sizeof(a);i++){ if(x==a[i]) { printf("索引i=%d\\n",i); break; } }if(i>=sizeof(a))printf("x不在数组中\\n");return 0;} ...

编写无序顺序表顺序查找、有序顺序表顺序查找、二分查找算法。用c语言...
int low=0,high=b-1,mid,i;int s=n\/b; \/\/每块记录个数 while(low<=high){ \/\/在索引表中进行二分查找,找到的位置放在low中 mid=(low+high)\/2;if(index[mid].key<k) low=mid+1;else high=mid-1;} if(low<b){ \/\/在顺序表中顺序查找 for(i=index[low].link;i<=index[l...

求高人帮编一个有关顺序表的C语言程序,望速回,非常感谢
void chazhao1(int a[])\/*顺序查找*\/ { int n=0,num;printf("请输入要查找的数:\\n");scanf("%d",&num);for(int i=0;a[i]!=0;i++)if(a[i]==num){ printf("第%d位为%d。\\n",i,num);n=n+1;} if(n==0)printf("没找到该数!\\n");} void chazhao2(int a[])\/...

c语言,必采纳
include "time.h"\/\/由于二分法查找一定要以数组先排序,按题意不适合于做,在此使用顺序查找 int search(int a[10],int x){ int i;for(i=0;i<10;i++)if (a[i]==x) return i;return -1;} void createarray(int a[10]){ int i;srand(time(NULL));for(i=0;i<10;i++)a[i...

c语言中如何将顺序表排序并实现二分法查找
void InsertSort(sq R)这个函数是按值传递参数的。换句话说,你的顺序表在传递的时候被复制了一遍,然后这个函数收到的是一个副本,然后这个程序也许成功排序了这个副本,但是你原来的顺序表并没有改变。你可以考虑传递这个顺序表的指针。比如这样 void InsertSort(sq *pR){ sq R = *pR; \/\/...

相似回答