//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};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; i
//方法一:
// 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);