求一个6 *6矩阵中的非0元素之和.

来源:百度知道 编辑:UC知道 时间:2024/06/03 04:12:57
#include<stdio.h>
#define N 6
int main()
{
int i,j;
float a[N][N],sum;
for(i=0;i<N;++i)
for(j=0;j<N;++j)
scanf("%f",&a[i][j]);
for(i=0;i<N;++i)
{
for(j=0;j<N;++j)
{
if(a[i][j]==0)continue;
sum+=a[i][j];
}
}
printf("%f\n",sum);
getch();
return 0;
}
程序运行时一闪而过,就没啦!高手指教
sum=0;是我不小心写掉了,不好意思啊
运行后还是一闪而过啊,我用的是WIN-TC中文版的

#include<stdio.h>
#define N 6
int main()
{
int i,j;
float a[N][N],sum=0;
for(i=0;i<N;++i)
for(j=0;j<N;++j)
scanf("%f",&a[i][j]);
for(i=0;i<N;++i)
{
for(j=0;j<N;++j)
{
if(a[i][j]==0)continue;
sum+=a[i][j];
}
}
printf("%f\n",sum);
getchar();
return 0;
}

你用我改的还是那样,你用的是什么编译器?
TC / VC /DEV

TC就早说吗,这个在VC没有任何问题,
TC我不太会,ALT+F5是查看结果的,加我QQ我搞给你看吧!!
332553761

肉眼看到sum没初始化,结果肯定不对

不是程序问题吧,只是程序运行完立即返回掉了,没时间给你看到结果。
我认为原因是getch读入的是scanf后面的回车符,所以程序到那里没有获得预想的暂停效果
其实C的I/O缓冲机制很有问题的,getch,getchar这种东西最好还是别用
如果条件允许,用C++的cin肯定没问题,或者设个哑变量用scanf也可以
如果这些都不行的话,那就在getch()前面加一句flush(),强行清空缓冲区

把getch(); 去掉就行了