标题:[清理垃圾帖子]
只看楼主
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
得分:8 
呵呵,很简单。想到26进制还不错,不过它不是26进制。下面的代码足够算到4294967295。
程序代码:
#include<stdio.h>
int main()
{
    char no[8], len, i;
    unsigned int n;
    scanf("%u", &n);
    for(len = 0; n; n /= 26)
        no[len++] = --n % 26 + 'A';
    for(i = len - 1; i >= 0; printf("%c", no[i--]));
    return 0;
}
哪位有兴趣的话还可以写个逆算法



 

重剑无锋,大巧不工
2011-09-06 00:49
XiaoxiaoHehe
Rank: 1
等 级:新手上路
帖 子:2
专家分:8
注 册:2010-3-9
得分:8 
程序代码:
#include <cstdlib>
#include <iostream>
using namespace std;

void divide(int temp, int count);

int main(int argc, char *argv[]){
    int num,*item={0};
    char ch;
    cout<<"Please enter a number:";
    cin>>num;
    cout<<"After transfer: ";
    divide(num, 0); 
    cout<<endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}

void divide(int temp, int count){
    int item;
    item = temp + 64;
    while( item > 90 ){
           count = count + 1;
           item = item - 26;
    }
    temp = count; 
    if ( temp >= 27)
        divide( temp, 0);  
    if( temp < 27 ){
        if( temp > 0 ){
            temp = temp + 64;   
            cout <<(char)temp;
        }
        temp = 0;
    }
    cout<< (char)item;
    if( temp == 0 ){
        return;   
    }    
}


任意就一个数都可以,只要不超出整型的范围就可以了。。。。
2011-09-06 01:44
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:8 
这个问题有什么意义?Excel又不靠A1、CU101之类定位单元格,sheet是二维表格,数据结构是二维数组,那是数值下标,字母是表象,你刻意转化对了没什么意义,它内部运算时还是转回数值。

授人以渔,不授人以鱼。
2011-09-06 09:41
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
得分:0 
回复 41楼 beyondyf
我要向你学习

                                         
===========深入<----------------->浅出============
2011-09-06 10:28
czsbc
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:469
专家分:1700
注 册:2008-12-13
得分:0 
回复 42楼 XiaoxiaoHehe
那个对于一般的整型应该可以算到2147483647,而对于无符号的就像41楼的可以算到4294967295
你的好像不能到2147483647这个数吧

2011-09-06 11:11
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
得分:0 
以下是引用beyondyf在2011-9-6 00:49:44的发言:

呵呵,很简单。想到26进制还不错,不过它不是26进制。下面的代码足够算到4294967295。#include
int main()
{
    char no[8], len, i;
    unsigned int n;
    scanf("%u", &n);
    for(len = 0; n; n /= 26)
        no[len++] = --n % 26 + 'A';
    for(i = len - 1; i >= 0; printf("%c", no));
    return 0;
}
哪位有兴趣的话还可以写个逆算法



 
我就不明白了 你这代码和我那代码的区别在哪里(一个是递归,一个是循环)

你在反驳非26进制的同时 却又采用求进制数的算法

真是搞笑呢!
2011-09-06 11:42
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
得分:0 
以下是引用TonyDeng在2011-9-6 09:41:48的发言:

这个问题有什么意义?Excel又不靠A1、CU101之类定位单元格,sheet是二维表格,数据结构是二维数组,那是数值下标,字母是表象,你刻意转化对了没什么意义,它内部运算时还是转回数值。
Excel 是需要A1...之类的定位列的吧??

我就是真命天子,顺我者生,逆我者死!
2011-09-06 12:05
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
回复 47楼 BlueGuy
不用的,它有RnCn定位法,两者等价。

授人以渔,不授人以鱼。
2011-09-06 12:07
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
得分:0 
以下是引用beyondyf在2011-9-6 00:49:44的发言:

呵呵,很简单。想到26进制还不错,不过它不是26进制。下面的代码足够算到4294967295。#include
int main()
{
    char no[8], len, i;
    unsigned int n;
    scanf("%u", &n);
    for(len = 0; n; n /= 26)
        no[len++] = --n % 26 + 'A';
    for(i = len - 1; i >= 0; printf("%c", no));
    return 0;
}
哪位有兴趣的话还可以写个逆算法



 
代码写的果然牛x

我就是真命天子,顺我者生,逆我者死!
2011-09-06 12:07
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
得分:0 
回复 48楼 TonyDeng
我也是临时网上搜索的,谁TM现在还自己写代码?
那么?你知道怎么把一个二维数组导入到Excel吗?

我就是真命天子,顺我者生,逆我者死!
2011-09-06 12:09



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-349192-1-1.html




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

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