當前位置:編程學習大全網 - 編程語言 - 在線等30分鐘:c語言編程:能夠輸入100個學生的學號和姓名,並將。。。。。 已給出三個函數,求主函數。

在線等30分鐘:c語言編程:能夠輸入100個學生的學號和姓名,並將。。。。。 已給出三個函數,求主函數。

//這個可以嗎

#include <stdio.h>

#include <string.h>

#define N 100

struct STUDENT

{

char id[20];

char name[20];

};

typedef struct STUDENT Student;

void inputdata(Student student[],int n);

void sort(Student student[],int n);

void search(Student student[],int n);

void main()

{

Student student[N];

inputdata(student,N);

sort(student,N);

search(student,N);

}

void inputdata(Student student[],int n)

{

int i;

for(i=0;i<n;i++)

{

printf("第%d個學生n",i+1);

printf("請輸入學號:");

scanf("%s",student[i].id);

printf("請輸入姓名");

scanf("%s",student[i].name);

}

}

//選擇排序

void sort(Student student[],int n)

{

int i,j,t;

Student temp;

for(i=0;i<n-1;i++)

{

t=i;

for(j=i+1;j<=n-1;j++)

{

if(strcmp(student[t].id,student[j].id)>0)

{

t=j;

}

}

if(t!=i)

{

temp = student[i];

student[i] = student[t];

student[t] = temp;

}

}

printf("排序後為:\n");

for(i = 0;i<N;i++)

{

printf("學號:%s\t姓名為:%s\n",student[i].id,student[i].name);

}

}

//折半查找

void search(Student student[],int n)

{

char id[20];

int high,mid,low,flag =1;

high=n-1;

low=0;

printf("請輸入妳要查找的學號:\n");

scanf("%s",id);

while(low<=high)

{

mid = (high +low)/2;

if(strcmp(id,student[mid].id)>0)

{

low = mid +1;

}

else if(strcmp(id,student[mid].id)<0)

{

high = high -1;

}

else

{

printf("在第%d上找到\n",mid+1);

printf("學號:%s\t姓名:%s\n",student[mid].id,student[mid].name);

flag = 0;

break;

}

}

if(flag)

{

printf("無此學號\n");

}

}

  • 上一篇:模態指令和非模態指令之間的區別是什麽?
  • 下一篇:聽說地球有可能會在200年內滅亡,人類要想活命,必須移民外星球,是嗎?
  • copyright 2024編程學習大全網