A life-saving straw 2021-12-03 23:44 采纳率: 0%
浏览 282

这个就业大数据是什么意思呢,可以教我一下怎么做吗,用C语言


为了解我国的就业情况,根据中华人民共和国国家统计局第六次人口普查结果,就业行业和人数见文件“employ-data.txt”,请用排序算法对数据进行降序排序(不允许直接调用系统函数完成排序),在屏幕上显示排序后的数据结果(包括行业及人数),同时将排序结果写入“employ-sort.txt”文件;然后输入要查询的“行业名称”,如果查询成功,则显示查询到的“就业人数”,否则显示“查询不成功”,直到查询者想退出查询,程序结束。

  • 写回答

1条回答 默认 最新

  • 悲伤艾草 2021-12-08 14:20
    关注
    #include<stdio.h>
    #include<stdlib.h>
    struct stu{//定义行业信息结构体
        char name[200];//行业名称 
        int num;//人数 
    };
    int main(int argc,char *argv[]){
        FILE *fp,*fq;//读文件指针fp和创建文件指针fq
        struct stu *p,t;//结构体指针p和变量t
        int i,j,k,n;
        fq=fopen("employ-sort.txt","w");//创建一个排序之后的写文件employ-sort.txt
        //打开读文件employ-data.txt并判断读写文件是否打开成功
        if(!fq || (fp=fopen("employ-data.txt","r"))==NULL){
            printf("Open the file failure, exit...\n");//不成功则提示并退出
            return 0;
        }
        //检测一下文件中存储了多少个行业信息并记入变量n
        for(n=0;fscanf(fp,"%s%d",t.name,&t.num),!feof(fp);n++);
        if((p=(struct stu *)malloc(sizeof(t)*n))==NULL){//按n大小动态申请内存空间
            printf("Application memory failure, exit...\n");//申请失败则提示退出
            return 0;
        }
        rewind(fp);//读文件指针恢复到文件开头
        for(i=0;i<n;i++){//读取n个行业信息并依次存入动态数组中
            fscanf(fp,"%s%d",p[i].name,&p[i].num);
        }
        fclose(fp);//读取完毕关闭文件
        for(i=0;i<n;i++){//对n个行业按人数降序排序并输出到文件及屏幕
            for(k=i,j=k+1;j<n;j++)
                if(p[k].num<p[j].num)
                    k=j;
            if(i!=k)
                t=p[k],p[k]=p[i],p[i]=t;
                //输出到文件
            fprintf(fq,"%s     %d\n",p[i].name,p[i].num);
            //输出到屏幕
            printf("%s\t%d\n",p[i].name,p[i].num);
        }   
        free(p);//释放所申请的内在空间
        fclose(fq);//关闭写文件
        //查询行业信息 
        while(1){  
            char name2[200];  //要输入查询的变量 
            int index=-1;     //定义一个不存在的下标,查询到了就改变它的值 
            printf("请输入要查询的行业名称:");  
            scanf("%s",&name2);  
            getchar();  
            int i;  
            for (i=0;i<n;i++){  
                if(strcmp(p[i].name,name2)==0){//比较输入的名称和文件中的名称  
                    index=i;    // 匹配相同就返回对应下标 
                    break;
                   }     
            }
            if(index!=-1){//下标不等于-1则说明匹配成功,打印出人数 
                printf("查询到的就业人数为: %d\n",p[i].num);
            }else
                printf("查询不成功\n");
            printf("是否继续查询?(y/n)");  
            if (getchar()=='n'){  
                break;  
            }  
        } 
        return 0;
    }
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 12月3日

悬赏问题

  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?
  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计
  • ¥15 Arduino无法同时连接多个hx711模块,如何解决?