我的思路是要写出随机数,然后应该是要用到文件的相关知识,存在文本文件中,然后进行计算。
1条回答 默认 最新
- a5156520 2022-05-23 10:48关注
思路大概是:先产生100个商场序号及四个季度的销售额写入文件,然后再读取这个文件,然后计算一年的销售总额读入商场结构数组,再写入文件,malls.txt文件应该是自动生成在编译生成的exe文件的同一个目录下,下面是一个实现,供参考:
#include <stdio.h> #include <stdlib.h> #include <time.h> struct mall{ int id; double quarterlySales[4]; double yearSales; }; int main(void){ struct mall malls[100]; FILE * fp=fopen("malls.txt","w+"); if(fp==NULL){ printf("打开文件或创建文件失败!\n"); return 0; } int i=0; int idarr[100]; for(i=0;i<500;i++){ //初始化500个商场序号,用于后面产生随机数从中取走一个商场序号 idarr[i]=i+1; } printf("开始生成销售数据!\n"); srand(time(0)+rand()); //用当前时间再加随机数做随机数种子,以便让每一次随机不一样 i=0; int k; int num; double j; while(i<100){ num=rand()%500; //产生一个下标 ,用于从商场序号数组中取走一个商场序号 while(idarr[num]==0){ //如果这个位置的商场序号被取走,则重新再生成一个下标再次取一次序号,直到取到序号 num=rand()%500; } if(idarr[num]!=0){ //取到序号后写入文件 // malls[i].id=idarr[num]; fprintf(fp,"%d ",idarr[num]); idarr[num]=0; //商场序号数组当前位置置0,表示这个位置的商场序号已被取走 } for(k=0;k<4;k++){ //产生一个1到10万之间的数,表示每个季度的销售额 j=(double)(rand()%100000+1); // malls[i].quarterlySales[k]=j; fprintf(fp,"%.2lf ",j); } i++; } fclose(fp); printf("销售数据已生成!\n"); printf("开始写入销售数据!\n"); fp=fopen("malls.txt","r"); if(fp==NULL){ printf("打开文件失败!\n"); return 0; } i=0; while(i<100){ //从文件读取100个商场的序号及其每个季度的销售额,并计算每年的销售总额到 商场结构数组中 fscanf(fp,"%d%lf%lf%lf%lf ",&malls[i].id, &malls[i].quarterlySales[0],&malls[i].quarterlySales[1], &malls[i].quarterlySales[2],&malls[i].quarterlySales[3]); malls[i].yearSales=malls[i].quarterlySales[0]+malls[i].quarterlySales[1]+ malls[i].quarterlySales[2]+malls[i].quarterlySales[3]; i++; } fclose(fp); printf("销售数据已写入!\n"); printf("按任意键开始计算并写入一年的销售总额!"); //此时暂停,用于查看和备份malls.txt生成的数据是否正常 getchar(); printf("开始计算和写入一年的销售总额。\n"); fp=fopen("malls.txt","w"); if(fp==NULL){ printf("打开文件失败!\n"); return 0; } i=0; while(i<100){ //加上计算的一年的销售总额,再次写入文件 fprintf(fp,"%d %.2lf %.2lf %.2lf %.2lf %.2lf ",malls[i].id, malls[i].quarterlySales[0],malls[i].quarterlySales[1], malls[i].quarterlySales[2],malls[i].quarterlySales[3] ,malls[i].yearSales); i++; } fclose(fp); printf("一年的销售总额已写入!\n"); printf("程序退出!\n"); return 0; }
解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 求解答一道线性规划题,用lingo编程运行,第一问要求写出数学模型和lingo语言编程模型,第二问第三问解答就行,我的ddl要到了谁来求了
- ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
- ¥50 树莓派安卓APK系统签名
- ¥15 maple软件,用solve求反函数出现rootof,怎么办?
- ¥65 汇编语言除法溢出问题
- ¥15 Visual Studio问题
- ¥20 求一个html代码,有偿
- ¥100 关于使用MATLAB中copularnd函数的问题
- ¥20 在虚拟机的pycharm上
- ¥15 jupyterthemes 设置完毕后没有效果