c++作业 百度了代码还是运行不了 各位大神能不能帮忙改一下

[复制链接]
查看11 | 回复1 | 2021-1-27 06:52:08 | 显示全部楼层 |阅读模式
编程:随机产生10组整数,每组数据有两列(共有20个数据),并且第1列数据范围在[300,600]之间,第2列数据范围在[250,350]之间,并且每组的第1列数据值大于第2列。(1)函数writeData()将产生的数据输出到文件OUT.DAT中。(2)假设第1列数据代表地面向上的长波辐射,第2列数据代表空气向下的长波辐射。函数readData()读取文件中的数据到二维数组XY中,函数jsValue()计算地表温度的平均值与方差。地表温度(开氏)计算公式为:,其中,波尔兹曼常数=5.677×10-8,比辐射率=0.91。(函数readData()、writeData()和jsValue()如果需要参数请自己定义,并注释说明)方差:,





/*根据吉尔霍夫定律计算地表温度的平均值与方差*/
#defineminNum1300
#definemaxNum1600
#defineminNum2250
#definemaxNum2350
#defineNum100
#defineEps0.91
#defineBoz0.00000005677
#include"stdio.h"
#include"stdlib.h"
#include"time.h"
#include"math.h"
voidwriteData(FILE*);/*将产生的数据输出到文件中*/
voidreadData(FILE*,int[][]);/*读取文件中的数据到二维数组中*/
voidjsValue(int[][]);/*计算地表温度的平均值与方差*/
main(){
intXY[Num][2];
FILE*fpout,*fpin;/*指向OUT.DAT的文件指针,写和读文件*/
if((fpout=fopen("OUT.DAT","w"))==NULL){
printf("不能打开文件OUT.DAT!\n");
exit(0);
}
writeData(fpout);/*将产生的数据输出到文件OUT.DAT中*/
close(fpout);/*关闭文件*/
if((fpin=fopen("OUT.DAT","r"))==NULL){
printf("不能打开文件OUT.DAT!\n");
exit(0);
}
readData(fpin,XY);/*读取OUT.DAT文件中的数据到二维数组XY中*/
close(fpin);/*关闭文件*/
jsValue(XY);/*计算地表温度的平均值与方差*/
}
/*功能:随机产生100组在区间[300,600],[250,350]之间的整数,每组数据
有两列(共200个数据),第1列数据值大于第2列,将产生的数据输出到
文件OUT.DAT中
参数:fpout文件指针,指向文件OUT.DAT
返回值:无
*/
voidwriteData(FILE*fpout){
intk1,k2;/*产生的随机数*/
inti;/*循环变量*/
srand((unsigned)time(NULL));
for(i=1;i -->
回复

使用道具 举报

千问 | 2021-1-27 06:52:08 | 显示全部楼层

voidreadData(FILE*,int[][]);/*读取文件中的数据到二维数组中*/
voidjsValue(int[][]);/*计算地表温度的平均值与方差*/
二维数组作为参数的时候必须指定第二维长度。修改如下:
voidreadData(FILE*,int[][2]);/*读取文件中的数据到二维数组中*/
voidjsValue(int[][2]);/*计算地表温度的平均值与方差*/

close(fpin);
应为
fclose(fpin);

还有在readData的时候,由于文件的最后一行为空,所以当feof(fpin)为true时i值已去到100,超出了数据的下标。
所以修改如下:
/*从文件中读取数据到二维数组XY中*/
while(!feof(fpin)){
fscanf(fpin,"%d,%d",&k1,&k2);
if(i>=100)
{
break;
}
XY[0]=k1;
XY[1]=k2;
i++;
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行