练习
1). 定义结构体数组存储5辆车的信息:品牌,价格,颜色
1定义函数实现循环输入
2定义函数,计算最贵的车品牌和价格
思路:计算价格的最大值,得到下标,在根据下标输出品牌和单价
3定义函数,对5辆车的单价实现排序
思路:价格冒泡排序,但是在交换时需要交换,车的所有信息
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void inputCar();
void outputCar();
int maxPrice();
void priceSort();
struct Car {
char brand[20];
float price;
char color[20];
};
int main(int argc, const char *argv[]) {
int num = 5;
struct Car carArr[num];
for (int i=0; i<num; i++) {
inputCar(&(carArr[i]));
}
int maxPriceIndex = maxPrice(carArr, num);
printf("最贵的是:%s, 价格是:%.2f\n", carArr[maxPriceIndex].brand, carArr[maxPriceIndex].price);
priceSort(carArr, num);
for (int i=0; i<num; i++) {
outputCar(carArr[i]);
}
return 0;
}
void inputCar(struct Car *car) {
printf("请输入品牌:");
scanf("%s", (*car).brand);
printf("请输入价格:");
scanf("%f", &(*car).price);
printf("请输入颜色:");
scanf("%s", (*car).color);
}
void outputCar(struct Car car) {
printf("品牌:%s ", car.brand);
printf("价格: %.1f ", car.price);
printf("颜色: %s\n", car.color);
}
int maxPrice(struct Car *carArr, int len){
float max = (*carArr).price;
int index = 0;
for (int i=0; i<len; i++) {
struct Car curCar = *(carArr+i);
if (curCar.price > max) {
max = curCar.price;
index = i;
}
}
return index;
}
void priceSort(struct Car *carArr, int len) {
for (int i=0; i<len-1; i++) {
for (int j=0; j<len-i-1; j++) {
struct Car curCar = *(carArr+j);
struct Car nextCar = *(carArr+j+1);
if (curCar.price > nextCar.price) {
struct Car temp = (*(carArr+j));
(*(carArr+j)) = (*(carArr+j+1));
(*(carArr+j+1)) = temp;
}
}
}
}
结果展示: