c语言随机文件的读出,怎的 编写一个程序 可以使之读出随机文件

这篇博客讨论了如何编写一个程序从文件中随机读取数据的问题。作者提出了将10道题存入数组并写入文件,然后通过生成随机索引来选取题目。虽然遇到顺序读取的障碍,但提出了洗牌算法作为解决方案,以实现随机读取。博客中还给出了C语言的示例代码来演示这一过程。
摘要由CSDN通过智能技术生成

怎样 编写一个程序 可以使之读出随机文件

经典的从 10道题中随机选出4道题

我写的是 1、将10道题存入数组t[10] 并存入文件test.txt

2、随机选出1到10 中的 4个数,存入另一数组a[10](使之做为下标)

3、读出test.txt文件,输出 t[a[i]]

但是由于读文件时是顺序读取,所以会出问题。。。。

求指点,如何可以随机读出4道题

分享到:

更多

------解决方案--------------------

把你的程序代码贴出来吧.

你的思路没有问题.

顺序读取题目到数据t中. 然后再随机出索引读取.

------解决方案--------------------

文本模式得按序读入,起码要读要最大的随机编码。数据量大的话考虑用2进制模式,自己制定一个格式头,记录每笔数据的偏离值和大小,那么就可以随机读取...

------解决方案--------------------

洗牌算法参考下面:#include 

#include 

#include 

int d[6];

int i,n,a,b,t;

int c,j;

void main() {

srand(time(NULL));

printf("shuffle 0..n-1 demo\n");

for (n=1;n<=5;n++) {/* 测试1~5个元素 */

printf("_____n=%d_____\n",n);

j=1;

for (c=1;c<=n;c++) j=j*c;/* j为n! */

j*=n*2;

for (c=1;c<=j;c++) {/* 测试n*2*n!次 */

for (i=0;i

for (i=n;i>0;i--) {/* 打乱0~n-1 */

a=i-1;b=rand()%i;

if (a!=b) {t=d[a];d[a]=d[b];d[b]=t;}

}

printf("%04d:",c);

for (i=0;i

printf("\n");

}

}

printf("shuffle 1..n demo\n");

for (n=1;n<=5;n++) {/* 测试1~5个元素 */

printf("_____n=%d_____\n",n);

j=1;

for (c=1;c<=n;c++) j=j*c;/* j为n! */

j*=n*2;

for (c=1;c<=j;c++) {/* 测试n*2*n!次 */

for (i=1;i<=n;i++) d[i]=i;/* 填写1~n */

for (i=n;i>1;i--) {/* 打乱1~n */

a=i;b=rand()%i+1;

if (a!=b) {t=d[a];d[a]=d[b];d[b]=t;}

}

printf("%04d:",c);

for (i=1;i<=n;i++) printf("%d",d[i]);

printf("\n");

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值