笔试题练习(六)

简介:
1,输入N, 打印 N*N螺旋矩阵

比如 N = 3,打印:

1 2 3

8 9 4

7 6 5

N = 4,打印:

1   2   3   4

12 13 14 5

11 16 15 6

10 9   8   7

复制代码
/**
 * 
 * @author phinecos
 * @since 2005-05-27
 */
public class test 
{
    private static int n;
    private static int[][] array;
    private static int current = 1;

    public static void fill(int m)
    {
        if (current >= n*n)
        {//递归结束条件
            return;
        }
        int i;
        //上
        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);
    }
    public static void main(String[] args) throws Exception
    {
        n = 10;
        array = new int [n][n];
        fill(n);
        if (n%2 == 1)
        {//奇数层次,补充中心点
            array[n/2][n/2] = n*n;
        }
        for (int i = 0; i < n; ++i)
        {
            for (int j = 0; j < n; ++j)
            {
                System.out.print(array[i][j]);
                System.out.print('\t');
            }
            System.out.println();
        }
    }
}
复制代码
2,要求:不申请变量和空间反转字符串,用一个函数实现。

第一种解法就是不使用变量交换两个数的两种方法

复制代码
char* reverseString(char* srcStr)
{//不申请变量和空间反转字符串
    if (srcStr == NULL || strlen(srcStr) == 0)
    {
        return NULL;
    }
    if (strlen(srcStr) == 1)
        return srcStr;
    for (int i = 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];
    }
    return srcStr;
}
复制代码
第二种方法就是利用空闲的’\0’字符占的位置作为中间变量,最后填补一个’\0’

复制代码
char* reverseString(char* srcStr)
{//不申请变量和空间反转字符串
    if (srcStr == NULL || strlen(srcStr) == 0)
    {
        return NULL;
    }
    if (strlen(srcStr) == 1)
        return srcStr;
    for (int i = 0,j = strlen(srcStr)-1; i <= j ; ++i,--j)
    {
        srcStr[len] = srcStr[i];
        srcStr[i] = srcStr[j];
        srcStr[j] = srcStr[len];
    }
    srcStr[len] = '\0';
    return srcStr;
}
复制代码
3,把一个32位的数按位反转

复制代码

unsigned int bit_reverse(unsigned int n)
{
    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); 
    return n;
复制代码
4,将给定的一个整数转换成字符串

复制代码
char* IntToString(int num)
{
    int count = 0;
    bool isNegative = false;
    if (num < 0)
    {
        num = -1 * num;
        isNegative = true;
        ++count;
    }
    int tmp = num;
    while (tmp != 0)
    {
        ++count;
        tmp /= 10;
    }
    char* result = new char[count+1];
    if (isNegative == true)
    {
        result[0] = '-';
    }
    int i = count;
    while (num != 0)
    {
        result[--i] = num % 10 + '0';
        num /= 10;
    }
    result[count] = '\0';
    return result;
}
复制代码


本文转自Phinecos(洞庭散人)博客园博客,原文链接:http://www.cnblogs.com/phinecos/archive/2009/05/27/1491114.html,如需转载请自行联系原作者


目录
相关文章
|
传感器 安全 智能硬件
柔性电池技术:可弯曲的能源解决方案
【10月更文挑战第12天】柔性电池技术采用轻质、可弯曲材料,具备高度柔韧性、轻薄便携、安全性能及高能量密度等特点,正革新传统电池领域。其广泛应用前景涵盖军事装备、无人机、可穿戴设备、智能医疗器械及太阳能领域,如英国“维图斯”士兵系统的可穿戴作战装备、智能手表和柔性太阳能电池等。当前,该技术正处于快速发展阶段,新材料与工艺不断涌现,未来将引领科技领域的能源革命。
|
传感器
同步器的介绍
一、同步器的原理 同步器是一种电子电路,主要用于实现信号同步。它的工作原理是通过对输入信号进行采样和比较,判断信号的相位和频率,从而实现对信号的同步和输出。同步器可以分为基于时钟的同步器和基于相位的同步器两种类型。 1. 基于时钟的同步器 基于时钟的同步器是一种常见的同步器类型,它的工作原理是通过时钟信号对输入信号进行采样和比较,从而实现对信号的同步和输出。基于时钟的同步器主要由时钟源、采样电路和比较器等组成。时钟源用于产生时钟信号,采样电路用于对输入信号进行采样,比较器用于比较采样信号和时钟信号的相位和频率。 2. 基于相位的同步器 基于相位的同步器是另一种常见的同步器类型,它的工作原理
567 0
|
11月前
|
传感器 人工智能 数据可视化
可视化管理如何助力企业降本增效?
生产可视化管理是企业数字化转型的关键,通过数据图形化呈现,将复杂信息转化为直观内容,提升生产效率、降低成本并优化决策。核心特点包括实时性、直观性和可操作性,帮助企业快速掌握生产动态,发现问题并及时优化。板栗看板等工具提供灵活配置、实时数据更新和数据分析支持,助力企业实现高效管理。未来,结合AI与物联网技术,生产可视化将更加智能化,为企业创造更大价值。
280 9
|
网络协议 安全 网络安全
2024年江苏省职业院校技能大赛信息安全管理与评估 第一阶段学生组(样卷)
2024年江苏省职业院校技能大赛信息安全管理与评估 第一阶段学生组(样卷)
|
XML Java 数据库
配置applicationContext.xml文件
配置applicationContext.xml文件
|
人工智能 数据安全/隐私保护 数据中心
“芯片围城”下国产AI要放缓?答案或截然相反
12月2日,美国对华实施新一轮出口限制,将140余家中国企业列入贸易限制清单。对此,中国多个行业协会呼吁国内企业谨慎选择美国芯片。尽管受限企业表示影响有限,但此事件引发了关于AI领域芯片供应的担忧。华为云推出的昇腾AI云服务,提供全栈自主的算力解决方案,包括大规模算力集群、AI框架等,旨在应对AI算力需求,确保算力供给的稳定性和安全性,助力中国AI产业持续发展。
206 3
|
消息中间件 Java Maven
ActiveMQ向消息队列存入消息(点对点模式)
创建一个maven工程, 引入ActiveMQ的依赖
|
Java API Android开发
|
测试技术 数据安全/隐私保护 Java
基于SpringBoot+Vue+uniapp的高校外事管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的高校外事管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
112 0