| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 818 人关注过本帖
标题:[求教]这两个程序为何结果不同呢?
只看楼主 加入收藏
宇宙规律
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:232
专家分:128
注 册:2014-5-7
结帖率:97.06%
收藏
已结贴  问题点数:20 回复次数:6 
[求教]这两个程序为何结果不同呢?
程序一
#include<stdio.h>            
void main()            
{            
    int i,j;               
    float a[6][2]={1,2,3,5,-2,2,-3,0,2,1,3,7},t;        
        
    for(i=1;i<6;i++)        
    {        if(a[i][1]!=0)
        t=a[i][0];   
        for(j=i;j>0&&t<a[j-1][0];j--)   
        {   
            a[j][0]=a[j-1][0];
        }   
        a[j][0]=t;   
    }               
    printf("%f\n\n",a[0][0]);    printf("%f\n\n",a[1][0]);    printf("%f\n",a[2][0]);   
            
printf("%f\n",a[3][0]);    printf("%f\n",a[4][0]);    printf("%f\n",a[5][0]);   
            
}            
-2.000000

-2.000000

1.000000
2.000000
3.000000
3.000000
Press any key to continue

程序二
#include<stdio.h>                    
void main()                    
{                    
    int i,j;               
                    
    float a[6][2]={1,2,3,5,-2,2,-3,0,2,1,3,7},t;               
               
    for(i=1;i<6;i++)               
    {        if(a[i][1]!=0)        
        t=a[i][0];            
        for(j=i;j>0&&t<a[j-1][0];j--)            
        {            
            a[j][0]=a[j-1][0];        
        }            
        a[j][0]=t;            
    }               
                    
                    
            for(i=1;i<6;i++)        
    printf("%f\n",a[i][0]);               
                    
                    
                    
}                    

-2.000000
1.000000
2.000000
3.000000
3.000000
Press any key to continue
搜索更多相关主题的帖子: include 
2017-01-30 16:33
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
收藏
得分:10 
    printf("%f\n\n",a[0][0]);    printf("%f\n\n",a[1][0]);    printf("%f\n",a[2][0]);  

           

printf("%f\n",a[3][0]);    printf("%f\n",a[4][0]);    printf("%f\n",a[5][0]);  

for(i=1;i<6;i++)      

    printf("%f\n",a[i][0]);   
貌似本来就不一样,谁叫你前面有的地方要写两个\n

还有,t可是没有初始化呢!后面涉及到对t的值的比较的所有指令都有隐患





[此贴子已经被作者于2017-1-30 16:46编辑过]


φ(゜▽゜*)♪
2017-01-30 16:43
宇宙规律
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:232
专家分:128
注 册:2014-5-7
收藏
得分:0 
回复 2楼 书生牛犊
请看问题所在,如下:
#include<stdio.h>            
void main()            
{            
    int i,j;               
    float a[6][2]={1,2,3,5,-2,2,-3,0,2,1,3,7},t;        
        
    for(i=1;i<6;i++)        
    {        if(a[i][1]!=0)
        t=a[i][0];   
        for(j=i;j>0&&t<a[j-1][0];j--)   
        {   
            a[j][0]=a[j-1][0];
        }   
        a[j][0]=t;   
    }               
    printf("%f   ",a[0][0]);    printf("%f   ",a[1][0]);   
}            

-2.000000   -2.000000   Press any key to continue

为什么a[0][0]和a[1][0]相等
2017-01-30 16:49
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
收藏
得分:10 
回复 3楼 宇宙规律
程序代码:
 for(i=1;i<6;i++)       

    {        if(a[i][1]!=0)t=a[i][0];  //这条指令在a[i][0]==0的时候是不会被执行的,那个时候t的值就是随机数,

        for(j=i;j>0&&t<a[j-1][0];j--)  //也就意味着这个for循环的终止条件不受控制,得到什么结果都不可以道理计

        {  

            a[j][0]=a[j-1][0];
        }  

        a[j][0]=t;  

    }             
这段代码想做什么我看不太明白,搞不懂你是想要实现什么功能。我比较清楚的就是这里有个没有初始化的变量,而这很危险。






[此贴子已经被作者于2017-1-30 17:11编辑过]


φ(゜▽゜*)♪
2017-01-30 17:04
宇宙规律
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:232
专家分:128
注 册:2014-5-7
收藏
得分:0 
这个程序为了排序二维数组a[6][2]={1,2,3,5,-2,2,-3,0,2,1,3,7}

当a[i][1]!=0时,throw扔出a[i][0]

然后计算a[i][0]/a[i][1]的值
2017-01-30 17:55
宇宙规律
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:232
专家分:128
注 册:2014-5-7
收藏
得分:0 
回复 4楼 书生牛犊
为了排序a[i][0]/a[i][1]

然后,找到最小值和最大值
2017-01-30 17:58
宇宙规律
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:232
专家分:128
注 册:2014-5-7
收藏
得分:0 
目前看,程序有严重错误!

看来,除数是0,用如下方法靠谱点,

m1,n1,m2,n2,m3,n3......m,n;
如果n1!=0,输出F1=m1/n1;
如果n1=0,输出F1=100000;

如果n2!=0,输出F1=m1/n1;
如果n2=0,输出F1=100000;

如果n3!=0,输出F1=m1/n1;
如果n3=0,输出F1=100000;

然后,排序F1,F2,F3,找到最小值;

[此贴子已经被作者于2017-1-30 19:06编辑过]

2017-01-30 18:23
快速回复:[求教]这两个程序为何结果不同呢?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.038588 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved