function print(start,count)
{
var s='';
for (var i=0;i<count;i++)
{
s+=getchar(start+i)+(i==count-1?'':',');
}
alert(s);
}
function getchar(n)
{
var str="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
if (n>26)
{
var rev='';
rev+=getchar(n/26-1,1);
rev+=getchar(n%26-1,1);
return rev;
}
else
return str.substr(n-1,1);
}
{
var s='';
for (var i=0;i<count;i++)
{
s+=getchar(start+i)+(i==count-1?'':',');
}
alert(s);
}
function getchar(n)
{
var str="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
if (n>26)
{
var rev='';
rev+=getchar(n/26-1,1);
rev+=getchar(n%26-1,1);
return rev;
}
else
return str.substr(n-1,1);
}
是什么?一个字符串吗?这个有什么规律可循吗?
表达的不明白呀,如果说字符串是既定的,在print函数中,直接调用string的substring或者slice不就取出来了吗?如果说字符串只给了规律,需要自己程序实现,那这个题目 就是考你的排列了。另外,如果说有规律的话,我没看明白。
先是A-Z,然后是 "A" + (A -Z),之后,是"B" + (A -Z),再然后就成了“AA” +(A-Z)了?只循环AB吗??
A-Z
A+(A-Z)
B+(A-Z)
.
.
Z+(A-Z)
AA+(A-Z)
AB+(A-Z)
.
.
AZ+(A-Z)
{
var aa="A,B,C,D,EF,GHI,JKL,MN,ASDDS,SWE,AAS,FFA";
var a=aa.split(",")[count+start-2];//表示count
if(start-1>=0)
{
var d=aa.split(",")[start-1];//表示起始start
var b=aa.split(a)[0];
var c=b.split(d)[1];
var e=d+c+a;
alert(e);
}
else
{
var d=aa.split(",")[0];
var b=aa.split(a)[0];
var c=b.split(d+",")[1];
var e=d+c+a;
alert(e);
}
}
</script>
</head>
<body>
<input type="button" value="确定" onclick="print(2,3)"/>
</body>
</html>
你需要的结果!!!!!!!!!!!!!!!!!!!!!
{
var aa="A,B,C,D,EF,GHI,JKL,MN,ASDDS,SWE,AAS,FFA";
if(count+start-2>=0){
var a=aa.split(",")[count+start-2];//表示count
if(start-1>=0)
{
var d=aa.split(",")[start-1];//表示起始start
var b=aa.split(a)[0];
var c=b.split(d)[1];
var e=d+c+a;
alert(e);
}
else
{
var d=aa.split(",")[0];
var b=aa.split(a)[0];
var c=b.split(d+",")[1];
var e=d+c+a;
alert(e);
}
}
else if(count+start==0)
{
alert("");
}
else
{
var a=aa.split(",")[0];
alert(a);
}
}
</script>
</head>
<body>
<input type="button" value="确定" onclick="print(3,3)"/>
</body>
</html>
添加进去print(0,0)和print(0,1)判断
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>
<body>
<script type="text/javascript">
function print(start,count)
{
var out = new Array();
for(var i=0;i<count;i++)
out.push( getStr(start+i) );
alert(out.join(','));
}//其实就是是10进制转2进制一样,只不过这里是26进制
function getStr(num)
{
var str="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var s='';
while(num>=26)
{
var index = num%26-1;
s = str.substr( index,1) + s;
num = parseInt( num/26, 10 );
}
s = str.substr(num-1,1) + s;
return s;
}
print(2,3);
</script>
</body>
</html>
function print(start,count)
{
var aa="A,B,C,D,EF,GHI,JKL,MN,ASDDS,SWE,AAS,FFA";
if(start==0&&count!=0){
var a=aa.split(",")[count-1];
var b=aa.split(a)[0];
var e=b+a;
alert(e);
}
else if(start!=0&&count==0){
var a=aa.split(",")[start-1];
alert(a);
}
else if(count+start-2>=0){
var a=aa.split(",")[count+start-2];//表示count
if(start-1>=0)
{
var d=aa.split(",")[start-1];//表示起始start
var b=aa.split(a)[0];
var c=b.split(d)[1];
var e=d+c+a;
alert(e);
}
else
{
var d=aa.split(",")[0];
var b=aa.split(a)[0];
var c=b.split(d+",")[1];
var e=d+c+a;
alert(e);
}
}
else if(count+start==0)
{
alert("");
}
else
{
var a=aa.split(",")[0];
alert(a);
}
}
</script>
</head>
<body>
<input type="button" value="确定" onclick="print(0,5)"/>
</body>
</html>
在完善!!!!!!!!
var result="";
for(var i=0;i<count;i++){
result+=","+getStr(start+i);
}
if(result!="")result=result.substring(1);
document.write(result);
}
function getStr(pos){
var ss="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
if(pos<27)return ss.charAt(pos-1);
var str="",tmp;
while(pos!=0){
tmp=pos%26;
if(tmp==0)tmp=26;//========
str=ss.charAt(tmp-1)+str;
pos=Math.floor((pos-tmp)/26);
}
return str;
}
print(2,10)
document.write("<br/>")
print(26,55)
document.write("<br/>")
print(24,20)
这是excel的命名规则,不是完全的26进制
因为他没有状态0,假设a表示0的话,那么aa则代表00
而如果a代表1,则没有a0这种状态,所以不是完整的26进制
这也是它比较麻烦的地方。楼上的好多朋友都太自以为是了
写出程序也不测试下就发上来
aa代表26+1 az代表 26+26
...
......
function prints(start,count)
{
var s='';
for (var i=0;i<count;i++)
{
s+=getchar(start+i)+(i==count-1?'':',');
}
alert(s);
}
function getchar(n)
{
var str="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
if (n>26)
{
var rev='';
var tm = parseInt(n/26);
var ex=n%26;
if (ex==0)
{
tm--;
ex=26;
}
rev+=getchar(tm,1);
rev+=getchar(ex,1);
return rev;
}
else
return str.substr(n-1,1);
}
function print(start, count) {
var r = "";
if(start > 0) {
for(var i = start; i < start + count; i++) {
r += getChar(i) + ",";
}
r = r.substr(0, r.length - 1);
}
return r;
}
function getChar(m) {
var str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var r = "";
if(m > str.length) {
r += getChar(Math.floor((m - 1) / str.length));
r += getChar((m - 1) % str.length + 1);
} else {
r = str.substr(m - 1, 1);
}
return r;
}
其实1楼都已经到家门了...
俺来另一种思路...<script type="text/javascript">
/*<![CDATA[*/document.write( print(2, 1000).join('<br />,') );function print(start_i, len_i)
{
start_i = start_i || 1;
var letter_s = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
var map_s = '0123456789abcdefghijklmnop';
var result_a = []; for(var i=0; i<len_i; i++)
{
var cur_i = start_i+i-1;
var temp_s = (cur_i).toString(26);
if(cur_i<26)
{
for(var i_=0, j_=temp_s.length; i_<j_; i_++)
{
var char_s = temp_s.charAt(i_);
var pos_i = map_s.indexOf(char_s);
result_a.push( letter_s.charAt(pos_i) )
}
}
else
{
var s = '';
for(var i_=0, j_=temp_s.length; i_<j_; i_++)
{
if(i_===j_-1)
{
var char_s = temp_s.charAt(i_);
var pos_i = map_s.indexOf(char_s);
s += letter_s.charAt(pos_i);
}
else
{
var char_s = temp_s.charAt(i_);
var pos_i = map_s.indexOf( char_s )-1;
s+=letter_s.charAt(pos_i)
}
}
result_a.push( s )
}
}/* for(var i=0; i<len_i; i++) */
return result_a;
}/* function print(start_i, len_i) *//*]]>*/
</script>
【==预览==】function strMake(nIndex)
{// 返回按索引值nIndex生成的字符串元素
this.idx26=nIndex.toString(26).toUpperCase();
this.codeset='ABCDEFGHIJKLMNOPQRSTUVWXYZ';
this.string='';
for(var i=0;i<this.idx26.length;i++)
{
this.string+=(this.idx26.charAt(i).match(/\d/))?
(this.idx26.length>1&&i<1)?this.codeset.charAt(parseInt(this.idx26.charAt(i))-1):this.codeset.charAt(this.idx26.charAt(i)):
this.codeset.charAt(this.codeset.indexOf(this.idx26.charAt(i))+10);
}
return this.string;
}function arrMake(nStart,nLength)
{// 返回从起始值nStart开始,长度为nLength的数组
this.array=new Array();
for(var iIndex=nStart;iIndex<nStart+nLength;iIndex++)
{
this.array=this.array.concat(strMake(iIndex));
}
return this.array;
} alert(arrMake(-10,20));
<body>
<script type="text/javascript">
function print(start,end){
var ss="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var result="";
for(var i=start;i<end;i++){
temp = i;
var words ="";
var remaind=0;
while(temp>0) {
remaind =temp%26;
words=ss.charAt((remaind==0?26:remaind)-1) + words;
temp =(temp-(remaind==0?26:remaind))/26;
}
result= result + " " + words;
}
return result;
}document.write(print(82647,82652));
document.write("<br>");
document.write(print(1,152));
</script>
</body>