用C语言编写程序?

发布网友 发布时间:2022-03-25 16:30

我来回答

3个回答

热心网友 时间:2022-03-25 17:59

程序就是读取文件到数组,再将数组进行排序,最后写入文件。

读写文件流程:fopen获取文件流(根据读写需求,选择参数,使用完必须调用fclose函数关闭),fscanf读取文件内容,fseek控制文件流指针,fprintf写入文件。

选择排序:每个循环周期选出一个最值,交换一次。

下面是代码(数组为动态数组):

#include <stdio.h>

#include <malloc.h>

int maxLen;//数组长度

int *read2Nums(char path[]);//读取

int write2File(int *nums,char path[]);//写入

void showNums(int *nums);

int px(int *nums,int flag);//选择排序flag=1升序,flag=0降序

int main()

{

    int *nums=NULL;

    char rPath[]="c:\\000.dat",wPath[]="c:\\rank.dat";

    if(!(nums=read2Nums(rPath))) return 1;

    showNums(nums);

    printf("数组升序排列:\n");

    if(px(nums,1)==-1) return 1;

    showNums(nums);

    printf("数组降序排列:\n");

    if(px(nums,0)==-1) return 1;

    showNums(nums);

    printf("写入到文件路径%s下(存在覆盖,不存在新建)\n",wPath);

    if(write2File(nums,wPath)==-1) return 1;

    printf("写入成功!\n");

    return 0;

}

void showNums(int *nums)

{

    int i;

    if(nums) for(i=0,printf("文件内容:\n");i<maxLen;printf("%d ",nums[i]),i++);

    printf("\n");

}

int px(int *nums,int flag)

{

    int i,j,n,temp;

    if(!nums) return -1;

    for(i=0;i<maxLen-1;i++)

    {

        n=i;

        for(j=i+1;j<maxLen;j++)

        {

            if(flag && nums[n]>nums[j]) n=j;

            if(!flag && nums[n]<nums[j]) n=j;

        }

        temp=nums[i],nums[i]=nums[n],nums[n]=temp;

    }

    return 1;

}

int write2File(int *nums,char path[])

{

    int i;

    FILE *fp=NULL;

    if(!nums) return -1;

    if(!(fp=fopen(path,"w"))) return -1;

    //fseek(fp,SEEK_END);

    for(i=0;i<maxLen;i++)

        fprintf(fp,"%d ",nums[i]);

    fclose(fp);

    return 1;

}

int *read2Nums(char path[])

{

    int *nums=NULL,*temp=NULL,cnt=0;

    FILE *fp=NULL;

    maxLen=10;

    if(!(fp=fopen(path,"r"))) return NULL;

    nums=(int *)malloc(sizeof(int)*maxLen);

    if(!nums) return NULL;

    while(fscanf(fp,"%d",&nums[cnt++])!=-1)

        if(cnt==maxLen)//数组长度不够扩展(每次扩展10长度)

        {

            maxLen=maxLen+10;

            temp=(int *)realloc(nums,sizeof(int)*maxLen);

            if(temp) return NULL;

            nums=temp;

        }

    if(--cnt<maxLen)//函数结束前,删除多余地址,减少内存占用

    {

        maxLen=cnt;

        temp=(int *)realloc(nums,sizeof(int)*maxLen);

        if(!temp) return NULL;

        nums=temp;

    }

    fclose(fp);

    return nums;

}

热心网友 时间:2022-03-25 19:17

指定完成完成排序完成以件当中有记得关闭要求写要,按照他题目的要求打开指定的文件,然后把数据读入到一个一为数组中,然后对这个一为输出进行排序排序完成,以后再按照要求写入指定的文件当中,要记得关闭文件

热心网友 时间:2022-03-25 20:52

付费内容限时免费查看回答亲,是这样的哦

准备材料

windows电脑、VC++(DEV_C++)

1.打开桌面上的DEV_C++,进入如下界面:

2.快捷键“CTRL+N”建立新源代码。

3.输入源代码,下面给出最简单的Hello,world源代码:

#include

int main( ){

printf("Hello,World\n");

return 0;

}

4.按下F11编译并且运行源代码,得到运行结果:

5.点击任意键返回源代码编辑界面可以继续进行开发,接下来就是C语言语法的学习了。

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com