首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

linux里面运行最简单的c程序居然出现这种情况,该如何解决

2012-03-18 
linux里面运行最简单的c程序居然出现这种情况C/C++ code#include stdio.hvoidmain(){inti,j,temp,array[

linux里面运行最简单的c程序居然出现这种情况

C/C++ code
#include <stdio.h>void    main(){    int    i,j,temp,array[4][4];printf("Input 4*4 data:\n"); for(i=0;i<4;i++) for(j=0;j<4;j++) scanf("%d",&array[i][j]);    for(i=0;i<4;i++)        for(j=0;j<4;j++)            if(i!=j)            {                temp=array[i][j]; array[i][j]= array[j][i]; array[j][i]=temp;            }for(i=0;i<4;i++) {    printf("\n");for(j=0;j<4;j++) printf("%d\t",array[i][j]);    }}

我在Linux里面运行输入一下的数据:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
程序的结果是:
1 2 3 4
5 6 7 8
9 10 11 12

之后我看了半天不知道为什么
我又在Window里面运行了一下发现输入相同的数据,但是结果是
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16

弄的我郁闷

我在linux平台又把程序改为
C/C++ code
for(i=0;i<5;i++) {    printf("\n");         for(j=0;j<4;j++)          printf("%d\t",array[i][j]);}


结果就一样,但是我又在想这段程序的功能应该是把输入的数字行列对换吧,但从输出的结果来看好像不是那样!这是为什么啊???

[解决办法]
scanf("%d",&array[i][j]);
for(i=0;i<4;i++)
for(j=0;j<4;j++)
if(i!=j)
{
temp=array[i][j]; array[i][j]= array[j][i]; array[j][i]=temp;
}
这个循环有问题,每个数交换了两次。
[解决办法]
汗,我承认:我第一次看的时候以为是数据输出不全,还试了试是否果然如此神奇……

再仔细看,原来是要问数据交换的……

来回交换了两次,a[1][2] 和a[2][1]交换一次,然后i=2,j=1的时候,a[2][1]和a[1][2]交换

热点排行