天梯赛L1-005考试座位号 c语言(利用链表并解决存入准考证号int类型越界问题)
建议先学会链表哦
下面开始上代码
#include<stdio.h>
typedef struct Link
{
char a[17]; //存准考证
int b; //存试机座位号
int c; //存考试座位号
struct Link *next;
}Link;
void create_link(Link* head,int num);
void find_link(Link *head,int num);
int main()
{
int num,i,j,x[1000];
Link* head=NULL;
head=(Link* )malloc(sizeof(Link));
scanf("%d",&num); //输入有几个人
create_link(head,num); //建立一个链表~
scanf("%d",&num);
for(i=0;i<num;i++){
scanf("%d",&x[i]); //输入查询的准考证
}
for(i=0;i<num;i++)
find_link(head,x[i]); //开始依次找寻
}
void create_link(Link* head,int num)
{
int i,j;
Link *p,*pr;
p=head;
for (i=0;i<num;i++)
{
pr=(Link* )malloc(sizeof(Link));
p->next=pr;
getchar();
for(j=0;j<16;j++)
{
scanf("%c",&p->a[j]); //输入准考证(为什么用char呢?因为int类型范围不够哦)
}
scanf(" %d %d",&p->b,&p->c); //输入试机座位号和考试座位号
p=pr;
}
p->next=NULL;
}
void find_link(Link *head,int num)
{
Link* p;int i;
p=head;
while(p!=NULL)
{
if(p->b==num)
{
for(i=0;i<16;i++)
{
printf("%c",p->a[i]);
}
printf(" %d\n",p->c);
break;
}
p=p->next;
}
}
本码员只是大一生哦,不足或者可以优化的地方希望各位大佬指正!(鞠躬)