| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 573 人关注过本帖
标题:如何修改动态变量的其中一位数?
只看楼主 加入收藏
飘逸的心
Rank: 2
等 级:论坛游民
帖 子:29
专家分:59
注 册:2010-3-17
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
如何修改动态变量的其中一位数?
一个一直变化的八位数,我想在需要的时候把从左到右其中的第三位改成5,该如何做到呢?

[ 本帖最后由 飘逸的心 于 2011-6-21 17:24 编辑 ]
搜索更多相关主题的帖子: 如何 动态 如何 动态 
2011-06-21 17:18
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:5 
程序代码:
root@~ #cat 21.c
#include <stdio.h>

int main (void) {

        int a=10000000,i=0,b=0,j=1,n=3;
        do {
                if(i==(8-n)) b+=(5*j);
                b+=(a%10)*j;
                i++;
                j*=10;
                a/=10;
        }while(a!=0);

        printf("%i\n",b);

        return 0;

}

root@~ #./21
10500000
root@~ #

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-06-21 17:50
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:10 
程序代码:
#include <stdio.h>
#include <math.h>

// 从左住右,下标从0开始
void set(int *, int, int);
int get(int, int);

int main(void) {
    int val = 1000000;
    set(&val, 2, 5);     // 把第三位的值改为5
    printf("val : %d\n", val);
    return 0;
}

int get(int dec, int index) {
    int i = (int)ceil(pow(10, (int)log10(dec) - index));
    return dec / i % 10;
}

void set(int * dec, int index, int value) {
    int i = (int)ceil(pow(10, (int)log10(*dec) - index)), j;
    j = get(*dec, index);
    j *= i;
    value *= i;
    *dec -= j;
    *dec += value;
} /* Output:
val : 1050000

Process returned 0 (0x0)   execution time : 0.016 s
Press any key to continue.
*/


[ 本帖最后由 lz1091914999 于 2011-6-21 18:18 编辑 ]

My life is brilliant
2011-06-21 18:16
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:5 
程序代码:
#include <stdio.h>
#include <math.h>

int modify_nth_digit(int * n, int nth, int v) {
    if (v < 0 || v > 9) {
        return 1;
    }
    int i = (int) pow(10, nth - 1);    // 这个多谢楼下指出。粗心了
    *n = *n - ((*n / i) % 10) * i + v * i;
    return 0;
}

int main() {
    int n = 12345678;
    printf("Originally, n = %d\n", n);
    modify_nth_digit(&n, 5, 0);    // 将变量 n 的第 5 位改为 0。整数的位数应该从右向左数,即个位为第 1 位,十位为第 2 位 ...
    printf("After modifying the %dth digit to %d, n = %d\n", 5, 0, n);
    return 0;
}


[ 本帖最后由 voidx 于 2011-6-21 19:49 编辑 ]
2011-06-21 18:34
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
以下是引用voidx在2011-6-21 18:34:31的发言:
    modify_nth_digit(&n, 5, 0);    // 将变量 n 的第 5 位改为 0。整数的位数应该从右向左数,即个位为第 1 位,十位为第 2 位 ...
}


你改了第六位吧!

—>〉Sun〈<—
2011-06-21 19:31
快速回复:如何修改动态变量的其中一位数?
数据加载中...
 
   



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

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