題目:
定義學(xué)生結(jié)構(gòu)體Student(含學(xué)號(hào)、姓名、成績)和排序函數(shù)sort,該函數(shù)使用冒泡排序法按成績升序排序。在主函數(shù)中輸入5個(gè)學(xué)生的學(xué)號(hào)、姓名和成績,調(diào)用sort函數(shù)對學(xué)生數(shù)據(jù)排序,最后輸出排序后的學(xué)生全部信息。
主要考察的知識(shí)點(diǎn):
結(jié)構(gòu)體數(shù)組的元素輸入輸出。
結(jié)構(gòu)體作為參數(shù)傳遞。
冒泡排序法。
解題思路:
定義學(xué)生信息結(jié)構(gòu)體。
定義兩數(shù)交換函數(shù)。
定義冒泡排序函數(shù)。
主函數(shù)中輸入學(xué)生信息。
調(diào)用排序函數(shù)。文章來源:http://www.zghlxwxcb.cn/news/detail-524569.html
輸出學(xué)生信息。文章來源地址http://www.zghlxwxcb.cn/news/detail-524569.html
代碼:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#define N 5
typedef struct {//定義學(xué)生信息結(jié)構(gòu)體
int id;//學(xué)號(hào)
char name[10];//姓名
int score;//成績
}student;
void swap(int* a, int* b)//定義兩數(shù)交換函數(shù)
{
int temp = *a;
*a = *b;
*b = temp;
}
void sort(student* a)//定義冒泡排序函數(shù)
{
for (int j = 0; j < N - 1; j++)//冒泡排序法:兩兩依次比較,數(shù)大后移
for (int i = 0; i < N - 1-j; i++)
if (a[i].score > a[i + 1].score)
{
swap(&a[i].score, &a[i + 1].score);//調(diào)用兩數(shù)交換函數(shù)
swap(&a[i].id, &a[i + 1].id);
char temp3[10] = { };
strcpy(temp3, a[i].name);//字符串復(fù)制函數(shù),頭文件是string.h
strcpy(a[i].name, a[i+1].name);
strcpy(a[i + 1].name, temp3);
}
}
int main()
{
student a[N];
for (int i = 0; i < N; i++)//輸入學(xué)生信息
{
printf("請輸入第%d個(gè)學(xué)生的學(xué)號(hào)、姓名、成績:",i+1);
scanf("%d%s%d", &a[i].id,&a[i].name,&a[i].score);
}
sort(a);//調(diào)用排序函數(shù)
printf("\n\t學(xué)號(hào)\t姓名\t成績\n");
for (int i = 0; i < N; i++)//輸出排序后的學(xué)生信息
{
printf("\t%d\t%s\t%d\n", a[i].id, a[i].name, a[i].score);
}
return 0;
}
運(yùn)行結(jié)果:

到了這里,關(guān)于C語言:輸入學(xué)生信息(學(xué)號(hào)姓名成績)并按成績高低升序輸出的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!