Skip to content

1707004738闫胜利 #94

@uponman

Description

@uponman
#include<stdio.h>
#include<stdlib.h>

#define N 50
#define M 200
typedef struct node {
	
	int id; //卡号
	char name[N]; //姓名
	int classid; //班号 
	char major[N]; //系别 
 } messagenode;
 typedef struct {
    messagenode adjlist[M]; 
	int s; //学生人数 
 }student;
 
void creat(student *A,char file[]) //从文件录入每个学生的信息 
{
    int i,j,k;
    FILE *fp;
    fp=fopen(file,"r");
    if (fp==NULL)
    {
        printf("打开文件失败!");
		exit;	
	} 
	fscanf(fp,"%d",&A->s); //得到学生人数 
	for (i=0;i<A->s;i++)
	{
		fscanf(fp,"%d",&A->adjlist[i].id);  //卡号 
		fscanf(fp,"%ls",&A->adjlist[i].name); //姓名 
		fscanf(fp,"%d",&A->adjlist[i].classid); //班号 
		fscanf(fp,"%ls",&A->adjlist[i].major); //系别 
	}
	fclose(fp);
}
 
void poposort(student *A) //对卡号进行冒泡排序 卡号按照从小到大顺序排列 
 { 
    int i,j;
    messagenode p;
    for (i=0;i<A->s;i++)
 	    for (j=0;j<A->s-i-1;j++)
 	    {
 	    	if (A->adjlist[j].id>A->adjlist[j+1].id)
 	    	{
 	    	    p=A->adjlist[j];
				A->adjlist[j]=A->adjlist[j+1];
				A->adjlist[j+1]=p;	
			}
		}
 }
 
void search(student *A,char major1[N]) //按系名进行检索
{
	int i;
    for (i=0;i<A->s;i++)
	{
		for (int j=0;j<N;j++)
		{
			if(A->adjlist[i].major[j]!=major1[j])
		       break;
		    if(j==N-1)
		    {
			   printf("%3d  %ls %4d %ls",A->adjlist[i].id,A->adjlist[i].name,A->adjlist[i].classid,A->adjlist[i].major);
			   printf("\n");
	     	}
		}    
	}
}
 
int main ()
{
	student S;
	char m[N];
	char filename[]="text2.txt";
	creat(&S,filename);
	 printf("卡号 姓名 班号 系别\n");
	for (int i=0;i<S.s;i++)
	{
		printf("%3d  %ls %4d  %ls",S.adjlist[i].id,S.adjlist[i].name,S.adjlist[i].classid,S.adjlist[i].major);
		printf("\n");
	}
	poposort(&S);
	printf("输出按卡号排序后的表:\n");
	 printf("卡号 姓名 班号 系别\n");
	for (int i=0;i<S.s;i++)
	{
		printf("%3d  %ls %4d  %ls",S.adjlist[i].id,S.adjlist[i].name,S.adjlist[i].classid,S.adjlist[i].major);
		printf("\n");
	}
	printf("请输入系别:"); 
    scanf("%ls",&m);
    printf("卡号 姓名 班号 系别\n");
	search(&S,m);
 	return 0;
} 

default
image

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions