明解C语言入门篇第三版练习代码(部分)------第十二/十三章

第十一章

练习12-4

//对代码清单12-7的程序进行修改。
//不将姓名、身高等数据作为初始值,而是从键盘输入。
//可以选择按身高进行升序排列,或者按照姓名的顺序排列。

#include <stdio.h>
#include <string.h>

#define NUMBER 2
#define NAME_LEN 64

typedef struct {
   
    char name[NAME_LEN];
    int height;
    float weight;
    long schols;
} Student;

void swap_Student (Student *x, Student *y)
{
   
    Student temp = *x;
    *x = *y;
    *y = temp;
}

void sort_by_height (Student a[],int n)
{
   
    int i,j;

    for (i=0; i<n-1; i++) {
   
        for (j=n-1; j>i; j--) {
   
            if (a[j-1].height > a[j].height)
                swap_Student(&a[j-1],&a[j]);
        }
    }
}

void sort_by_name (Student a[],int n)
{
   
    int i,j,m;

    for (i=0; i<n-1; i++) {
   
        for (j=n-1; j>i; j--) {
   
            for (m=0; m<NAME_LEN; m++) {
   
                if (a[j-1].name[m] >a[j].name[m]){
   
                    swap_Student(&a[j-1],&a[j]);
                    break;
                }
                else if (a[j-1].name[m] == a[j].name[m])
                    continue;
                else
                    break;
            }
        }
    }
}

int main ()
{
   
    int i,opt;
    Student std[NUMBER];

    printf("输入学生信息:姓名、身高、体重、奖学金:\n");

    for(i=0; i<NUMBER; i++) {
   
        printf("学生%d:",i+1);
        scanf("%s%d%f%d",&std[i].name,&std
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值