cpy31625 2021-08-10 22:36 采纳率: 50%
浏览 368
已结题

【C语言】按图书名提取首字母并排序

使用结构体数组输入10本书名的名称和单价,调用函数按照书名的字母顺序进行排序,在主函数中输出排序结果。
代码有哪些错误?蟹蟹

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct book
{
    char name;
    float money;
}shu[10];

void paixv()
{
    int i;
    char t[100];
    for(i=0;i<9;i++)
    {
        if(strcmp(&shu[i].name,&shu[i+1].name)>0)
        {
            strcpy(&t[100],&shu[i].name);
            strcpy(&shu[i].name,&shu[i+1].name);
            strcpy(&shu[i+1].name,&t[100]);
        }
        printf("\n第%d本图书:书名:%c;单价:%.2f",i+1,shu[i].name,shu[i].money);
    }
    printf("\n");
}

void main()
{
    char str[100],s;
    int i;
    printf("图书信息录入:\n");
    for(i=0;i<10;i++)
    {
        printf("第%d本图书:\n书名:",i+1);
        scanf("%s",&shu[i].name);
        printf("单价:");
        scanf("%f",&shu[i].money);
    }
    printf("这10本书的首字母为:");
    for(i=0;i<10;i++)
    {
        str[100]=shu[i].name;
        s=str[0];
        printf("%c、",s);
    }
    paixv();
}

```。
  • 写回答

2条回答 默认 最新

  • qzjhjxj 2021-08-10 23:46
    关注

    修改如下,供参考对照:

    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    struct book
    {
        char name[64]; //name;
        float money;
    }shu[10];
    void paixv()
    {
        int i,j;
        struct book tmp;
                               //char t[100];
        for(j=0;j<9;j++)
        {
            for(i=0;i<9-j;i++)
            {
                if(strcmp(shu[i].name,shu[i+1].name)>0)
                               //if(strcmp(&shu[i].name,&shu[i+1].name)>0)
                {
                   tmp     = shu[i];
                   shu[i]  = shu[i+1];
                   shu[i+1]= tmp;
                               //strcpy(&t[100],&shu[i].name);
                               //strcpy(&shu[i].name,&shu[i+1].name);
                               //strcpy(&shu[i+1].name,&t[100]);
                }
            }
    
                        //printf("\n第%d本图书:书名:%c;单价:%.2f",i+1,shu[i].name,shu[i].money);
        }
                                    //printf("\n");
    }
    void main()
    {
                                    //char str[100],s;
        int i;
        printf("图书信息录入:\n");
        for(i=0;i<10;i++)
        {
            printf("第%d本图书:\n书名:",i+1);
            scanf("%s",shu[i].name);//scanf("%s",&shu[i].name);
            printf("单价:");
            scanf("%f",&shu[i].money);
        }
        printf("这10本书的首字母为:");
        for(i=0;i<10;i++)
        {
                                    //str[100]=shu[i].name;
                                    //s=str[0];
            printf("%c、",shu[i].name[0]);
        }
        paixv();
        for(i=0;i<10;i++)
            printf("\n第%d本图书:书名:%s;单价:%.2f",i+1,shu[i].name,shu[i].money);
        printf("\n");
        
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月20日
  • 已采纳回答 8月12日
  • 创建了问题 8月10日

悬赏问题

  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测