2 penjun999 penjun999 于 2015.06.03 11:24 提问

如何设计一个a到z的26个字母的无限循环

如何设计一个a到z的26个字母的无限循环,类似于数字相加一样,当从a循环到z的时候,下一个就是aa循环到zz,然后就是aaa到zzz,依此类推,无限循环下去

8个回答

u010668114
u010668114   2015.06.03 11:34

27进制?a到z可以看作1到26,满27则进位。比如1代表a,26代表z,1-26则代表az,下一位是1-27,满27进位,为2-1,即ba。这个是那个狂点屏幕里的技术方法吧

hsj_217
hsj_217   2015.06.03 11:54

好吧,循环一遍我会,这个不会。正好学习学习

91program
91program   Ds   Rxr 2015.06.03 12:54

无限循环下去,可以写成 while(1),呵呵...
后继的实现要用字符串吧,因为像 aa 这样的直接用数字无法表示了。

 char cBuf[256];

 cBuf[0] = a;
 然后执行 cBuf[0]++;直到 z;
再将 cBuf[0] = a 和 cBuf[1] = a;  然后执行 cBuf[0/1]++;直到 z;
依次循环。
u013636471
u013636471   2015.06.03 13:04

满足你

 public class Test {
    public static void main(String[] args) {
        test1(4);
    }
    /**
     * <pre>
     * 方法名: test1
     * @param c 次数 如果为0则无限循环
     * 返回值: void
     * @Throws 
     * </pre>
     */
    public static void test1(int c){
        c = c*26;
        boolean flag = true;
        int x = 1;
        String cst = "a";
        int f = 0;
        System.out.println(cst);
        while(flag){
            if(c>0){
                f++;
                if(f==c){
                    flag = false;
                }
            }
            if(x>26){
                int l = cst.length();
                cst = "";
                for (int i = 0; i < l+1; i++) {
                    cst += "a";
                }
                System.out.println(cst);
                x = 1;
            }else{
                char charAt = cst.charAt(0);
                int l = cst.length();
                charAt++;
                if(charAt<=122){//122是z
                    String v = String.valueOf(charAt);
                    cst = "";
                    for (int i = 0; i < l; i++) {
                        cst += v;
                    }
                    System.out.println(cst);
                }
            }
            x++;
        }
    }
}

wendyanna
wendyanna   2015.06.03 13:26

题目有歧义,可以理解成两种:
1. a , b , ... , z, aa, ab, ..., az, ba, ..., bz, ..., zz...
2. a, b, ..., z, aa, bb, ..., zz, ...

VisualEleven
VisualEleven   Ds   Rxr 2015.06.03 13:41

#include "stdafx.h"
#include <iostream>
using namespace std;

void PrintAlpha(const size_t nCount)
{
    for(size_t i = 0; i != nCount; ++i)
    {
        for(char alpha = 'a'; alpha <= 'z'; ++alpha)
        {
            for(size_t j = 0; j <= i; ++j)
            {
                cout << alpha;
            }
            cout << " ";
        }
        cout << endl;
    }
}

int _tmain(int argc, _TCHAR* argv[])
{
    PrintAlpha(3);
    return 0;
}

tongyi55555
tongyi55555   2015.06.03 14:49

Java代码如下,这个会一直循环下去的,运行一下就赶快关闭,否则...

/**
     * 设计一个a到z的26个字母的无限循环,类似于数字相加一样,当从a循环到z的时候,下一个就是aa循环到zz,然后就是aaa到zzz,依此类推,
     * 无限循环下去
     */
    private void printAz() {
        String azStr = new String("abcdefghijklmnopqrstuvwxyz");
        char[] azChar = azStr.toCharArray();
        int repeat = 1;
        while (true) {
            for (int i = 0; i < azChar.length; i++) {
                for (int j = 0; j < repeat; j++) {
                    System.out.print(azChar[i]);
                }
                System.out.println();
            }
            repeat++;
        }
    }
datou431
datou431   Rxr 2015.06.18 15:32

这个是那个狂点屏幕里的技术方法吧

Csdn user default icon
上传中...
上传图片
插入图片