C语言实验-随机生成数组并存取至文件内
本文最后更新于 529 天前,其中的信息可能已经有所发展或是发生改变。

题目要求

编写一个程序,在主函数中输入一个正整数n(50<=n<=100),使用动态内存分配方法动态分配一个整数数组,使用随机数函数生成n个整数存入该数组;编写子函数将这n个整数保存到文件“data1.txt”中。

编写一个程序,编写一个子函数,从文件“data1.txt”中读取n个整数保存到数组中,使用排序算法对这n个整数进行排序,再编写另一个子函数将排好序后的n个整数保存到文件“sorteddata.txt”中。

分析问题

最近实训开始了,这次时间也比较紧张,所以以最笨最基础的方式去实现内容

首先明确好主要目标:生成随机数组,存数据,读数据,排序,存数据

实验平台:win系统,C-free5

代码实现

这次直接放完整代码

#include<stdio.h>
#include<time.h>
#include<stdlib.h>

void save_unsorted_data();
void save_sorted_data();
void Random_arrays();
void FileCreate();
void readdate();
void Sort();
void bubble_sort();
void print_arr();

FILE* fp1,fp2; 
int num,i,size;
int* arry;
int inputdata[100]={};
int main()
{
    FileCreate();
    Random_arrays();
    save_unsorted_data();
    Sort();
    bubble_sort();
    print_arr();
    save_sorted_data();
    return 0;
}
void  Random_arrays()
{
    printf("输入数组长度:");
    scanf("%d", &size);
    arry = (int*)malloc(size * sizeof(int));
    for (i = 0; i < size; i++)
    {
        arry[i] = i;
    }
    
    srand((unsigned)time(NULL));

    for (i = 0; i < size; i++)
    {
        num = rand() % 200 + 1;
        arry[i] = num;
    }
    int count=0;
    for (i = 0; i < size; i++)
    {
        printf("%d     ", arry[i]);
        if(count%5==0&&count!=0)
			printf("\n");
		count++;
    }
    printf("\n");
    
}

void save_unsorted_data()
{
    fp1 = fopen("data1.txt", "w");
    char string[100]={0};
    for(i=0;i<size;i++){
    	itoa(arry[i],string,10);
    	fputs(string,fp1);
    	fputs("\n",fp1);
    }
    fclose(fp1);
    printf("存储完成\n"); 
}

void save_sorted_data()
{
    fp1 = fopen("sorteddata.txt", "w");
    char string[100]={0};
    for(i=0;i<size;i++){
    	itoa(inputdata[i],string,10);
    	fputs(string,fp1);
    	fputs("\n",fp1);
    }
    fclose(fp1);
    printf("存储完成\n"); 
}

void FileCreate()
{
    fp1 = fopen("data1.txt", "w");
    fclose(fp1);

}

void Sort()
{
    FILE* fp3= fopen("data1.txt", "r");
    int count=0;
    printf("读取到的数据:\n");
    for (int i = 0; i < size; i++)
    {
        fscanf(fp3,"%d", &inputdata[i]);
    }
    for (int i = 0; i < size; i++)
    {
        printf("%d     ",inputdata[i]);
        if(count%5==0&&count!=0)
			printf("\n");
		count++;
    }
    printf("\n");
    fclose(fp3);
}

void bubble_sort() {
        int i, j, temp;
        for (i = 0; i < size - 1; i++)
                for (j = 0; j < size - 1 - i; j++)
                        if (inputdata[j] > inputdata[j + 1]) {
                                temp = inputdata[j];
                                inputdata[j] = inputdata[j + 1];
                                inputdata[j + 1] = temp;
                        }
        printf("排序完成,从低到高排序\n");
}

void print_arr(){
	int count=0;
    for (int i = 0; i < size; i++)
    {
        printf("%d     ",inputdata[i]);
        if(count%5==0&&count!=0)
			printf("\n");
		count++;
    }
    printf("\n");
}

注意事项

存数据时如果数据直接以int方式存入文件,文件内容就会是人无法读的二进制代码,并且内容比较复杂,不容易读取,所以存数据我选择将数据在存储时转为字符串类型,并且按行存入,方便数据读取。

而在读取时就非常简单,直接读取,甚至不用关心哪一行,也不用转换数据类型,写的什么都可以在循环时自动的按行读入

当前文章: 《C语言实验-随机生成数组并存取至文件内》
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇