指针高级作业

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#define PI    3.1414926
#define kCile(r)  (PI*r*r)
#define avg(a, b)   ((a+b)/2)
#define PULL(x)   ((x&0xaaaaaaaa)>>1|(x&0x55555555)<<1)
typedef struct stu
{
    int number;
    char name[20];
    char sex;
    int age;
    int score;
    
}Stu;
void changeStruct(Stu *p,Stu *p1,Stu *p2);
void changeStruct(Stu *p,Stu *p1,Stu *p2)
{
    strcpy(p2->name, p->name);
   strcpy(p->name, p1->name);
    strcpy(p1->name, p2->name);
    
    p2->sex= p->sex;
    p->sex=p1->sex;
    p1->sex= p2->sex;
    
    p2->age=p->age;
    p->age=p1->age;
    p1->age=p2->age;
    
    p2->score=p->score;
    p->score=p1->score;
    p1->score=p2->score;
}
void printScore(Stu *p,int count,int lScore,int hScore);
void printScore(Stu *p,int count,int lScore,int hScore)
{
    for (int i = 0; i <count; i++) {
        if ((p+i)->score>=lScore&&(p+i)->score<=hScore) {
            printf("%s\t%c\t%d\t%d\n",(p+i)->name,(p+i)->sex,(p+i)->age,(p+i)->score);
        }
    }
}
void sortNumber(Stu *p,int count);
void sortNumber(Stu *p,int count)
{
    for (int i = 0; i<count-1; i++) {
        for (int j = 0; j<count-1-i; j++) {
            if ((p+j)->number>(p+j+1)->number) {
                Stu a=*(p+j);
                *(p+j)=*(p+j+1);
                *(p+j+1)=a;
                
            }
        }
    }
    
}
void sortScore(Stu *p,int count);
void sortScore(Stu *p,int count)
{
    for (int i = 0; i<count-1; i++) {
        for (int j = 0; j<count-1-i; j++) {
            if ((p+j)->score>(p+j+1)->score) {
                Stu a=*(p+j);
                *(p+j)=*(p+j+1);
                *(p+j+1)=a;
                
            }
        }
    }
    
}
void sortName(Stu *p,int count);
void sortName(Stu *p,int count)
{
    for (int i = 0; i<count-1; i++) {
        for (int j = 0; j<count-1-i; j++) {
            if (strcmp((p+j)->name, (p+j+1)->name)>0) {
                Stu a=*(p+j);
                *(p+j)=*(p+j+1);
                *(p+j+1)=a;
                
            }
        }
    }
    
}
int main(int argc, const char * argv[])
{
//1.    (**)写一个函数交换两个结构体变量
/*
    Stu student1={1,"jack",'m',24,11};
    Stu student2={2,"rose",'f',20,22};
    Stu student3={0};
    changeStruct(&student1, &student2, &student3);
    printf("%s\t%c\t%d\t%d\n",student1.name,student1.sex,student1.age,student1.score);
    printf("%s\t%c\t%d\t%d\n",student2.name,student2.sex,student2.age,student2.score);
     printf("%s\t%c\t%d\t%d\n",student3.name,student3.sex,student3.age,student3.score);
    */
//2.    (**)有一学生数组写一函数打印出指定分数段的学生信息
    /*
        Stu stu[3]={{1,"jack",'m',24,88},{2,"rose",'f',20,78},{3,"lucy",'f',34,67}};
        printScore(stu, 3, 70, 80);
     */
    
//3.    (**)有一学生数组,,写包含5个学生一个函数,对学生排序(按学号从小到大),使用结构体指针操作数组元素
    /*
    Stu stu[5]={
        {1,"jack",'m',24,88},
        {2,"rose",'f',20,78},
        {5,"lucy",'f',34,67},
        {4,"zhangsan",'m',12,56},
        {3,"lisi",'f',56,90}
    };
    sortNumber(stu, 5);
    sortScore(stu, 5);
    sortName(stu, 5);
    for (int i = 0; i<5; i++) {
        printf("%d\t%s\t%c\t%d\t%d\n",stu[i].number,stu[i].name,stu[i].sex,stu[i].age,stu[i].score);
    }
    */
//4.    (**)有一学生数组,包含5个学生,写一个函数,对学生排序(按姓名从小到大),使用结构体指针操作数组元素
//5.    (**)有一学生数组,包含5个学生,写一个函数,对学生排序(按分数从小到大),使用结构体指针操作数组元素
//6.    (**)定义一个求圆面积的宏
//    double a =kCile(6);
//    printf("%f\n",a);
    
//7.    (**)定义一个求2个数平均数的宏
 
   // printf("%f",avg(2.0,9.0));
    printf("%ld",PULL(6));
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值