1,输入N, 打印 N*N螺旋矩阵
比如 N = 3,打印:
123
894
765
N = 4,打印:
1 2 3 4
1213145
1116156
109 8 7
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->/**
*
*@authorphinecos
*@since2005-05-27
*/
publicclasstest
{
privatestaticintn;
privatestaticint[][]array;
privatestaticintcurrent=1;
publicstaticvoidfill(intm)
{
if(current>=n*n)
{//递归结束条件
return;
}
inti;
//上
for(i=n-m;i<m;++i)
{
array[n-m][i]=current++;
}
//右
for(i=n-m+1;i<m-1;++i)
{
array[i][m-1]=current++;
}
//下
for(i=m-1;i>=n-m;--i)
{
array[m-1][i]=current++;
}
//左
for(i=m-2;i>=n-m+1;--i)
{
array[i][n-m]=current++;
}
//进入下一层
fill(m-1);
}
publicstaticvoidmain(String[]args)throwsException
{
n=10;
array=newint[n][n];
fill(n);
if(n%2==1)
{//奇数层次,补充中心点
array[n/2][n/2]=n*n;
}
for(inti=0;i<n;++i)
{
for(intj=0;j<n;++j)
{
System.out.print(array[i][j]);
System.out.print('/t');
}
System.out.println();
}
}
}
2,要求:不申请变量和空间反转字符串,用一个函数实现。
第一种解法就是不使用变量交换两个数的两种方法
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->char*reverseString(char*srcStr)
{//不申请变量和空间反转字符串
if(srcStr==NULL||strlen(srcStr)==0)
{
returnNULL;
}
if(strlen(srcStr)==1)
returnsrcStr;
for(inti=0,j=strlen(srcStr)-1;i<j;++i,--j)
{
//第一种交换方式,可能会溢出
//srcStr[i]=srcStr[i]+srcStr[j];
//srcStr[j]=srcStr[i]-srcStr[j];
//srcStr[i]=srcStr[i]-srcStr[j];
//第二种交换方式,可能会溢出
srcStr[i]=srcStr[i]^srcStr[j];
srcStr[j]=srcStr[i]^srcStr[j];
srcStr[i]=srcStr[i]^srcStr[j];
}
returnsrcStr;
}
第二种方法就是利用空闲的’/0’字符占的位置作为中间变量,最后填补一个’/0’
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->char*reverseString(char*srcStr)
{//不申请变量和空间反转字符串
if(srcStr==NULL||strlen(srcStr)==0)
{
returnNULL;
}
if(strlen(srcStr)==1)
returnsrcStr;
for(inti=0,j=strlen(srcStr)-1;i<=j;++i,--j)
{
srcStr[len]=srcStr[i];
srcStr[i]=srcStr[j];
srcStr[j]=srcStr[len];
}
srcStr[len]='/0';
returnsrcStr;
}
3,把一个32位的数按位反转
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->
unsignedintbit_reverse(unsignedintn)
{
n=((n>>1)&0x55555555)|((n<<1)&0xaaaaaaaa);
n=((n>>2)&0x33333333)|((n<<2)&0xcccccccc);
n=((n>>4)&0x0f0f0f0f)|((n<<4)&0xf0f0f0f0);
n=((n>>8)&0x00ff00ff)|((n<<8)&0xff00ff00);
n=((n>>16)&0x0000ffff)|((n<<16)&0xffff0000);
returnn;
}
4,将给定的一个整数转换成字符串
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->char*IntToString(intnum)
{
intcount=0;
boolisNegative=false;
if(num<0)
{
num=-1*num;
isNegative=true;
++count;
}
inttmp=num;
while(tmp!=0)
{
++count;
tmp/=10;
}
char*result=newchar[count+1];
if(isNegative==true)
{
result[0]='-';
}
inti=count;
while(num!=0)
{
result[--i]=num%10+'0';
num/=10;
}
result[count]='/0';
returnresult;
}
分享到:
相关推荐
嵌入式笔试题练习
ACCP6.0Y2笔试题仅供练习ACCP6.0Y2笔试题仅供练习
全国计算机等级考试笔试题练习,带有答案
2007-02-27-全国计算机等级考试笔试题练习 .rar
应聘笔试题
中国银行最全笔试资料历年笔试真题11-19年考试完整试题及答案解析+五大银行招聘考试练习题库(30多份pdf) 0-中国银行历年笔试真题11-18年 1-中国银行复习精华讲义 2-中国银行2019招聘考试完整试题及答案解析 3-五大...
幼小中教资笔试真题练习(附参考答案).pdf
多个Java笔试题适合急于找工作的应届生
数据库笔试题及答案 数据库练习题题库 不错的SQL笔试题(含参考答案) 共16页.pdf
广西区计算机一级笔试练习题六.pdf
机测并精心整理筛选的33道MySQL笔试题(附带答案、表结构与数据),安装数据库后导入test.sql文件即可练习
经典sql练习,几道经典的SQL笔试题题目。sql就在于多多练习
java面试笔试题库java软件设计java笔试题大集合及答案文档资料合集300MB“ 100家大公司java笔试题汇总.doc 125条常见的java 面试笔试题大汇总.pdf 2011最新整理java经典代码.doc 25个经典的Spring面试问答.docx 8张...
C++程序员笔试题,我觉得很好,对刚开始学习的人是一份很好的资料
2013年四川移动校招笔试题 2013年中国移动广东公司招聘笔试试题及答案 2014年中国移动招聘笔试试题及答案 2015年中国移动招聘笔试试题及答案 移动笔试真题之技术类--浙江移动金华分公司无线网优测试试题 移动笔试...
关于c语言面试题的一些收集资料: C语言笔试题汇总.doc C语言笔试大全_本人收藏.doc C语言编程练习题.doc
KPMG笔试题下载,包括一套练习样题和两套题
java面试笔试资料java笔试题大集合及答案题库java笔试题汇总资料188个合集 100家大公司java笔试题汇总.doc 125条常见的java 面试笔试题大汇总.pdf 2011最新整理java经典代码.doc 25个经典的Spring面试问答.docx ...
google笔试题,经典的笔试题,在练习中提高!that ‘s all,thank you
4-中国农业发展银行招聘考试练习题库(30多份pdf)(银行考试题库和各模块练习题).rar 5-时事政治and金融热点and金融大事记部分.rar 中国农业发展银行2019招聘笔试完整真题及答案解析.zip 信息技术类专用之技术类知识...