求助!C++编程二维数组导入文件里的数字后输出的却是乱码。

这是要求我的代码如下:#include<fstream>#include<iostream>#include<iomanip>usingnamespacestd;intm... 这是要求

我的代码如下:
#include<fstream>
#include<iostream>
#include <iomanip>
using namespace std;
int main()
{
ifstream in("9_1.txt"); //定义输入文件流
cout<<"从9_1.txt文件中导入的5*5列的矩阵为:"<<endl;
int a[5][5],sum=0;
int i,j;
for( i=0;i<5;i++)
{
for( j=0;j<5;j++)
in>>a[i][j]; //把文件中的数据读取到程序中
}
for( i=0;i<5;i++)
{
for( j=0;j<5;j++)
cout<<setw(3)<<a[i][j]<<" ";
}
cout<<endl; //屏幕上显示矩阵
//==============================================================================
for( i=0;i<5;i++) //输出对角元素之和
{
for( j=0;j<5;j++)
if(j==i) sum+=a[i][j];
if(j==(5-1-i)) sum+=a[i][j];
}
cout<<"上述5*5列的矩阵对角元素之和为:"<<sum<<endl;
return 0;
}
输出的是乱码,实在不知道错在哪里。。
下面是我输出:

被这个问题折磨很久了。感激不尽!
展开
 我来答
小萝卜tan
推荐于2016-04-15 · TA获得超过105个赞
知道小有建树答主
回答量:56
采纳率:0%
帮助的人:98.7万
展开全部

有2点:

第一点:你的txt有1.1之类的值,就不应该定义成int a[5][5]


第二点:你的txt文件放错了地方,导致程序运行的时候找不到,这一点跟你运行程序的方式有关,如果你是通过IDE启动的(例如Visisual Studio或者Visual C++),那么txt文件一般要放在工程的根目录,如果你是在命令行来执行,你在哪个目录执行exe,就放在exe同目录就好,所以其实不是乱码,而是没有读取到文件的时候,数组的值没有被程序初始化,是随机的数值


代码修改成如下:


#include<fstream>

#include<iostream>

#include <iomanip>

using namespace std;

int main()

{

ifstream in("9_1.txt");     //定义输入文件流


//加了判断处理

if(!in.is_open())

{

cout<<"打开文件失败"<<endl;

return 1;

}

//---end 加了判断处理


cout<<"从9_1.txt文件中导入的5*5列的矩阵为:"<<endl;


//修改了变量类型

//int a[5][5],sum=0;

double a[5][5],sum=0;

//--- end //修改了变量类型


int i,j;

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

{

for( j=0;j<5;j++)

in>>a[i][j];    //把文件中的数据读取到程序中

}

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

{

for( j=0;j<5;j++)

cout<<setw(3)<<a[i][j]<<" ";

}

cout<<endl;        //屏幕上显示矩阵

//==============================================================================

for( i=0;i<5;i++)                    //输出对角元素之和

{

for( j=0;j<5;j++)

if(j==i) sum+=a[i][j];

if(j==(5-1-i)) sum+=a[i][j];

}

cout<<"上述5*5列的矩阵对角元素之和为:"<<sum<<endl;

return 0;

}


看我上面的代码,把txt放在不同的地方就会导致两种截然不同的运行结果



xyll1993
2013-12-14
知道答主
回答量:18
采纳率:0%
帮助的人:9.9万
展开全部
in>>a[i][j]; //把文件中的数据读取到程序中

这里不对
追问
该怎么改呢?
追答
#include

#include

#include

using namespace std;

int main()

{

ifstream in("9_1.txt"); //定义输入文件流

cout>a[i][j]; //把文件中的数据读取到程序中

}

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

{

for( j=0;j<5;j++)

cout<<setw(3)<<a[i][j]<<" ";
cout<<endl; /*修改*/

}

cout<<endl; //屏幕上显示矩阵

//==============================================================================

for( i=0;i<5;i++) //输出对角元素之和

{

for( j=0;j<5;j++)

if(j==i) sum+=a[i][j];

if(j==(5-1-i)) sum+=a[i][j];

}

cout<<"上述5*5列的矩阵对角元素之和为:"<<sum<<endl;

return 0;

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友349d18b
2013-12-14 · TA获得超过444个赞
知道小有建树答主
回答量:571
采纳率:50%
帮助的人:372万
展开全部
将int a[5][5]的int换成float
追问

试了呢,还是不行。。

追答
可能是9_1.txt文件路径的问题,你使用全路径试下.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式