c语言函数传递结构体数组指针数组指针数组,《IOS_作业C语言》高级指针(结构体指针、结构体数组指针、结构体数组指针,作为函数的参数使用、预编译指令)...

//1.写一个函数交换两个结构体变量

Change stu1={"ningning",1,98};

Change stu2={"huanhuan",3,90};

Change stus[2]={stu1,stu2};

Change *p=stus;

//    for (int i=0; i<2; i++) {

//        printf("name=%s,num=%d,score=%f\n",(p+i)->name,(p+i)->num,(p+i)->score);

//

//    }

printf("p地址:%p\n",p);

printf("stus地址:%p\n",&stus[0]);

Change *p1=&stus[0];

Change *p2=&stus[1];

printf("p1地址:%p\n",p1);

printf("p2地址:%p\n",p2);

getchange(&stus[0],&stus[1]);

printf("p1地址:%p\n",p1);

printf("p2地址:%p\n",p2);

printf("%s,%s\n",stus[0].name,stus[1].name);

printf("name=%s,num=%d,score=%f\n",p1->name,p1->num,p1->score);

printf("name=%s,num=%d,score=%f\n",p2->name,p2->num,p2->score);

函数部分以及头文件定义部分:

//第一题

typedef struct stu

{

char name[40];

int num;

float score;

}Change;

void getchange(Change *p1,Change *p2){

Change  temp=*p1;//用指针变量temp装指针变量p1所指向的值,不是交换地址

*p1=*p2;//就像交换学生信息一样的道理

*p2=temp;

//验证交换地址

//    printf("temp地址:%p\n",temp);

printf("p1地址:%p\n",p1);

printf("p2地址:%p\n",p2);

//    printf("name=%s,num=%d,score=%f\n",p1->name,p1->num,p1->score);

//    printf("name=%s,num=%d,score=%f\n",p2->name,p2->num,p2->score);

}

//2.有一学生数组写一函数打印出指定分数段的学生信息

student  stu1={1,"wukong",98.3};

student stu2={2,"bajie",80.5};

student stu3={3,"shazheng",60};

student stus[3]={stu1,stu2,stu3};

student *p=stus;

printInformantion(p);

函数定义和结构体声明部分:

//第二题

typedef struct stu1

{

int num;

char name[40];

float score;

}student;

void printInformantion(student *p)

{

for (int i=0; i<3; i++) {

if ((p+i)->score>=80&&(p+i)->score<=90) {

printf("name:%s,num:%d,score:%f\n",(p+i)->name,(p+i)->num,(p+i)->score);

}

}

}

//3.有一学生数组,包含5个学生,写一个函数,对学生排序(按学号 从小到大),使用结构体指针操作数组元素

student stu1={5,"wukong",98.3};

student stu2={2,"bajie",80.5};

student stu3={1,"shazheng",60};

student stu4={4,"tangsan",70.5};

student stu5={3,"zhengzheng",58};

student stus[5]={stu1,stu2,stu3,stu4,stu5};

student *p=stus;

printf("原来的信息:\n");

print(p);

sortArray(p,5);

printf("后来的信息:\n");

print(p);

函数以及结构体声明部分:

//第三题

typedef struct  stu

{

int num;

char name[20];

float score;

}student;

void print(student *p){

for (int i=0; i<5; i++) {

printf("num:%d,name=%s,score=%f\n",(p+i)->num,(p+i)->name,(p+i)->score);

}

}

void sortArray(student *p,int count){

for (int i=0; ifor (int j=0; jif ((p+j)->num>(p+j+1)->num) {//学号比较,交换的是认得信息

//方法一:

//                student temp=*(p+j);//整个学生的信息值进行交换

//                *(p+j)=*(p+j+1);

//                *(p+j+1)=temp;

//方法二:

student temp=p[j];

p[j]=p[j+1];

p[j+1]=temp;

//方法三、四:数组表示法:p[i]=*(p+i)=str[i]=*(str+i)

}

}

}

}

// 4.有一学生数组,包含5个学生,写一个函数,对学生排序(按姓名 从小到大),使用结构体指针操作数组元素

//使用strcmp()字符串比较>0,交换人的信息

//5.有一学生数组,包含5个学生,写一个函数,对学生排序(按分数 从小到大),使用结构体指针操作数组元素

四五题跟第三题一样的做法,只是姓名比较时,则用strcmp()比较字符串的函数来比较,并且比较的结果是整型的,用一个int a=来接收,判断大于0则交换学生的信息。

六、七题:

在头文件输入的是:

//第六题:求园的面积的宏

#define PI 3.14

#define S(r) (PI*(r)*(r))

//第七题:求两个数的平均值的宏

#define AVERAGE(A,B) ((A)+(B))/2.0

main函数里面输入的是:

int main(int argc, const char * argv[]) {

//6.定义一个求圆面积的宏

float r=9;

float s=S(r);

printf("圆的面积是:%f\n",s);

//7.定义一个求2个数平均数的宏

float result=AVERAGE(2+3, 5+7);

printf("两个数的平均值是:%f",result);

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值