| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 809 人关注过本帖
标题:求教一个数字问题(c编程)
只看楼主 加入收藏
nicezl
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2010-4-6
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:11 
求教一个数字问题(c编程)
数组中有8个8位的数,把每个数的最后一位取出,组成一个新的数据,(如a[0]的最后一位是新数中b[0]的最后一位,a[1]的最后一位是b[0]的倒数第二位......)如此之后得到8个新的数。

请看3楼解释。

请问有没有效率比较高的方法?

[ 本帖最后由 nicezl 于 2010-4-6 13:41 编辑 ]
搜索更多相关主题的帖子: 数字 
2010-04-06 11:34
独孤鹏
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2010-4-3
收藏
得分:0 
得到八个新数?楼主能不能将过程再说的详细一点,是不是个二维数组?
2010-04-06 12:12
nicezl
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2010-4-6
收藏
得分:0 
我在重新解释一遍吧,假设a[0] = 0x82,a[1] = 0x46,a[2] = 0x60,a[3] = 0xE3,a[4] = 0x82,a[5] = 0xAA,a[6] = 0x19,a[7] = 0x68。那么可以得到如下表格,现在我想通过C编程得到b[0]--b[7].
  a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7]
  0    0    0    1    0    0    1    0            b[0]
  1    1    0    1    1    1    0    0            b[1]
  0    1    0    0    0    0    0    0            b[2]
  0    0    0    0    0    1    1    1            b[3]
  0    0    1    0    0    0    1    0            b[4]
  0    1    1    1    0    1    0    1            b[5]
  0    0    0    1    0    0    0    1            b[6]
  1    0    0    1    1    1    0    0            b[7]
变换前,低位在上面,高位在下面,变换后高位在左边,低位在右边。

[ 本帖最后由 nicezl 于 2010-4-6 13:38 编辑 ]
2010-04-06 12:32
ldg628
Rank: 12Rank: 12Rank: 12
等 级:火箭侠
威 望:3
帖 子:526
专家分:3036
注 册:2009-6-23
收藏
得分:0 
#include <stdio.h>
#include <math.h>
int main(void)
{
    int a[8];
    int i, newC = 0;
    for (i = 0; i < 8; i ++)
    {
        scanf("%d", &a[i]);
        newC += (a[i]%10)*pow(10,i);
    }
    printf("newC = %d\n", newC);
}
我理解的最后一位是个位,如果不对再改
2010-04-06 12:58
xiaoxinwan
Rank: 2
等 级:论坛游民
帖 子:52
专家分:91
注 册:2010-4-6
收藏
得分:0 
我写的是把原来的数列是A1--A8,变换后数列是B1-B8,B1是A1-A8的第一位组成,B8是A1-A8的数字组成,不知道和楼主的意思一样吗?
#include<stdio.h>

void main()
{
    int a[8][8]={1,2,3,4,5,6,7,8,
                 9,10,11,12,13,14,15,16,
                 17,18,19,20,21,22,23,24,
                 25,26,27,28,29,20,31,32,
                 33,34,35,36,37,38,39,40,
                 41,42,43,44,45,46,47,48,
                 49,50,51,52,53,54,55,56,
                 57,58,59,60,61,62,63,64};
    int b[8][8];
    int i,j;
    for(i=0;i<8;i++)
    {
        for(j=0;j<8;j++)
        {
            b[i][j]=a[j][i];
         }
     }
    for(i=0;i<8;i++)
    {
       for(j=0;j<8;j++)
       {
        printf("%d   ",b[i][j]);
       }
       printf("\n");
    }
     
}
2010-04-06 13:16
nicezl
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2010-4-6
收藏
得分:0 
回复 5楼 xiaoxinwan
A0,B0之类的都是一个数中的某一位,不是一个8位数。
2010-04-06 13:19
ldg628
Rank: 12Rank: 12Rank: 12
等 级:火箭侠
威 望:3
帖 子:526
专家分:3036
注 册:2009-6-23
收藏
得分:0 
#include <stdio.h>
#define bit(n) (1<<(n))
int main(void)
{
    int a[8], b[8]={0};
    int i, j;
    for (j = 0; j < 8; j ++)
    {
        scanf("%d", &a[j]);
        for (i = 0; i < 8; i ++)
        {
            b[i] |= a[j]&bit(7-j);
        }
    }
}
测一下看看~~

2010-04-06 14:02
nicezl
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2010-4-6
收藏
得分:0 
回复 7楼 ldg628
好像不行诶,我仿真出来得到到数据全部都是0
2010-04-06 14:23
ldg628
Rank: 12Rank: 12Rank: 12
等 级:火箭侠
威 望:3
帖 子:526
专家分:3036
注 册:2009-6-23
收藏
得分:0 
回复 8楼 nicezl
嗯,我调一调
2010-04-06 14:33
寒枫雪
Rank: 2
等 级:论坛游民
帖 子:53
专家分:25
注 册:2009-1-22
收藏
得分:0 
楼主意思是不是例如a[0]=12345678,a[1]=12345678,a[2]=12345678.......
所要得到的b[0]=88888888,b[1]=77777777,b[2]=66666666......?
如果是这样的话就对a[0]、a[1]...进行取整取余操作获得每位上的数字,然后再按其所在位加起来放到b中~
2010-04-06 14:41
快速回复:求教一个数字问题(c编程)
数据加载中...
 
   



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

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