键盘输入10个学生学号(7位)姓名最长四个汉字2字节编码,成绩
分为四个小部分,(1)按学号降序打印及格名单;
(2)按成绩升序打印不及格名单
(3)按学号升序打印全部学生
(4)按成绩降序打印全部学生
(1)和(4)用两个char型二维字符数组表示10个学生的学号姓名
(2)和(3)用两个string类一维数组表示10个学生的学号姓名
排序用选择法或者冒泡法
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#define n 10
void SwapFloat(float* x, float* y)
{
float temp;
temp = *x;
*x = *y;
*y = temp;
}
void SwapLong(long* x, long* y)
{
long temp;
temp = *x;
*x = *y;
*y = temp;
}
void SwapChar(char x[], char y[])
{
char temp[10];
strcpy(temp, x);
strcpy(x, y);
strcpy(y, temp);
}
void xuehao(long num[], char name[][10], float score[])
{
int i, j, k;
for (i = 0; i < n - 1; i++)
{
k = i;
for (j = i + 1; j < n; j++)
{
if (num[j] < num[k]) k = j;
}
if (k != i)
{
SwapFloat(&score[k], &score[i]); /* 交换成绩 */
SwapLong(&num[k], &num[i]); /* 交换学号 */
SwapChar(name[k], name[i]); /* 交换姓名 */
}
}
}
void chengji(long num[], char name[][10], float score[])
{
int i;
for (i = 0; i < n; i++)
{
printf("%ld\t%s\t%.0f\n", num[i], name[i], score[i]);
}
}
void ReadScore(long num[], char name[][10], float score[])
{
int i;
for (i = 0; i < n; i++)
{
scanf("%ld %s %f\n", &num[i], name[i], &score[i]);
break;
}
}
int main()
{
int i;
float score[10];
long num[10];
char name[10][10];
for (i = 0; i < 10; i++)
{
printf("请输入第%d个人的学号、姓名、成绩\n", i + 1);
ReadScore(num, name, score);
continue;
xuehao(num, name, score);
chengji(num, name, score);
break;
}
return 0;
}