今天正式学习了结构体的写法以及它的用法,并以此做了一些练习,需要注意的是结构体指针会比普通结构体绕一些,还有就是结构体指针在交换的时候要注意中间值的类型。下面是今天的脑图:
作业:
main函数文件:
#include "head.h"
int main(int argc, const char *argv[])
{
struct cars *p = (struct cars *)malloc(sizeof(struct cars)*5);
StructInputCars(p,5);
MaopaoCars(p,5);
StructOutputCars(p,5);
free(p);
p = NULL;
return 0;
}
头文件:
#ifndef __HEAD_H__
#define __HEAD_H__
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct cars{
char name[10];
char color[10];
int price;
};
void StructInputCars(struct cars *p,int n);
void StructOutputCars(struct cars *p,int n);
void MaopaoCars(struct cars *p,int n);
#endif
函数文件:
#include "head.h"
void StructInputCars(struct cars *p,int n){
for(int i = 0 ; i < n; i ++){
printf("输入一组数据\n");
scanf("%s",(p+i)->name);
scanf("%s",(p+i)->color);
scanf("%d",&(p+i)->price);
}
}
void StructOutputCars(struct cars *p,int n){
for(int i = 0 ; i < n; i ++){
printf("品牌:%s 颜色:%s 价格:%d\n",(p+i)->name,(p+i)->color,(p+i)->price);
}
}
void MaopaoCars(struct cars *p,int n){
while(n>0){
int type = 0;
for(int i = 0; i < n - 1; i ++){
if((p+i)->price > (p+i+1)->price){
struct cars mid = *(p+i);
*(p+i) = *(p+i+1);
*(p+i+1) = mid;
type ++;
}
}
if(type == 0){
break;
}
n --;
}
}
运行结果: