| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 233 人关注过本帖
标题:为什么冒泡排序出来的数字不能运算?
只看楼主 加入收藏
winglesswu
Rank: 1
等 级:新手上路
帖 子:92
专家分:0
注 册:2013-1-28
结帖率:71.88%
收藏
已结贴  问题点数:20 回复次数:3 
为什么冒泡排序出来的数字不能运算?


#include<stdio.h>

main ()
{
int a, b, c, x, y, result, i, j, temp,arr[4];

printf("\nPlease input an integer to find the magical number:");
scanf("%d",&a);

for(i=0;i<4;i++)
{
   arr[i]=a%10;
   a=a/10;
}
for(i=0;i<3;i++)
   for(j=0;j<3-i;j++)
     {
         if(arr[j]>arr[j+1])
             {
               temp=arr[j];
               arr[j]=arr[j+1];
               arr[j+1]=temp;
             }
     }
printf("\nx=%d%d%d%d;\t",arr[0],arr[1],arr[2],arr[3]);

for(i=0;i<3;i++)
   for(j=0;j<3-i;j++)
     {
         if(arr[j]<arr[j+1])
             {
               temp=arr[j];
               arr[j]=arr[j+1];
               arr[j+1]=temp;
             }
     }
printf("\ny=%d%d%d%d;\n", arr[0],arr[1],arr[2],arr[3]);
result=y-x;
printf("\nThe result is: %d;\n", result);
}
这是排序4位数的,比如2315, 出来的结果是x=1235,y=5321,为什么不能把x和y的值拿来运算呢?求指教。
搜索更多相关主题的帖子: arr include number result 
2013-03-03 03:08
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:7 
1、你没有对x、y进行赋值运算
2、你的结果保存在数组里,很明显 2个数组是不能直接相减的

DO IT YOURSELF !
2013-03-03 06:23
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
收藏
得分:7 
因为你的四位数实际是一个数组里面的四个数,不是可以进行算术运算的变量

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2013-03-03 07:23
好聚好散
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:138
专家分:123
注 册:2012-12-4
收藏
得分:7 
其实可以这样
for(i = 0; i <4; i ++)
{
    for (j = i + 1; j < 4; j++)
{
    ......//交换arr[i]和arr[j]
}
}
y = 1234只是结果, y并没有赋值
可以这样

for(i=0;i<3;i++)
   for(j=0;j<3-i;j++)
     {
         if(arr[j]>arr[j+1])
             {
               temp=arr[j];
               arr[j]=arr[j+1];
               arr[j+1]=temp;
             }
     }
x = arr[0] *1000 + arr[1]*100 + arr[2] * 10 + arr[3];
printf("\nx=%d%d%d%d;\t",arr[0],arr[1],arr[2],arr[3]);

for(i=0;i<3;i++)
   for(j=0;j<3-i;j++)
     {
         if(arr[j]<arr[j+1])
             {
               temp=arr[j];
               arr[j]=arr[j+1];
               arr[j+1]=temp;
             }
     }
y  = arr[0] *1000 + arr[1]*100 + arr[2] * 10 + arr[3];
printf("\ny=%d%d%d%d;\n", arr[0],arr[1],arr[2],arr[3]);
result=y-x;
printf("\nThe result is: %d;\n", result);
就可以了吧, 你自己运行下。。。

无节操,无真相
2013-03-03 10:54
快速回复:为什么冒泡排序出来的数字不能运算?
数据加载中...
 
   



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

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