第二步书名为字符串,如何输入到数组里边去,进而
实现逆序输出。

教材要先定义一个结构,然后定存放5门教程数据的结构数组,再把书名存入到结构数组元素的书名成员变量里,最后打印结果时,如果需要打印每门教材的总价可以加上去,图片里第二个for循环那里有个: j<n-i 那个n是多少,为了避免数组越界,我把n改为了4.代码如下,供参考:
#include <stdio.h>
#include <string.h>
struct book{
char name[20]; //教材书名
int ct; //教材册数
double price; //教程单价
double allMoney; //教程总价
};
int main(void){
book bk [5];
int i,j;
//获取5门教材数据到教材结构数组
for(i=0;i<5;i++){
printf("请输入%d门教材的书名、册数、单价:",i+1);
scanf("%s%d%lf",bk[i].name,&bk[i].ct,&bk[i].price);
bk[i].allMoney = bk[i].ct*bk[i].price;
}
char temp[20];
int tct;
double tprice;
//按册数降序排序教程结构数组元素
for(i=0;i<4;i++){
for(j=0;j<4-i;j++){
if(bk[j].ct<bk[j+1].ct){
strcpy(temp,bk[j].name);
strcpy(bk[j].name,bk[j+1].name);
strcpy(bk[j+1].name,temp);
tct = bk[j].ct;
bk[j].ct = bk[j+1].ct;
bk[j+1].ct = tct;
tprice = bk[j].price;
bk[j].price = bk[j+1].price;
bk[j+1].price = tprice;
tprice = bk[j].allMoney;
bk[j].allMoney = bk[j+1].allMoney;
bk[j+1].allMoney = tprice;
}
}
}
//打印结构
for(i=0;i<5;i++){
printf("%s %d %lf\n",bk[i].name,bk[i].ct,bk[i].price);
}
return 0;
}