这个ns流程图,第二步,选择结构怎么办呀

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

img

教材要先定义一个结构,然后定存放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; 
} 

img