• 笔试


    1、下面两段代码中for循环分别执行了多少次?

    1. unsigned short i,j; 
    2. for(i=0, j=2; i!=j; i+=5, j+=7) 
    3. {} 

     

    1. unsigned short i,j; 
    2. for(i=3,j=7;i!=j;i+=3,j+=7) 

        对于这类问题可以利用相对运动的思想:

        根据数据类型可以知道环形轨道的长度是65536,对于第一个for循环假设i原地不动,则j在局里起点为2的位置以步长2向前运动,则j需要走(65536 - 2) / 2 = 32767步才能回到起点与i重合,此时循环退出,因此第一个for循环执行了32767次。

        对于第二个for循环轨道的长度依然是65536,我们以i的起始位置3为原点,假设i原地不动,则j在距离原点为4的位置以步长4向前远动,则j需走(65536 - 4) / 4 = 16383步才能回到起点与i重合退出循环,故第二个循环执行了16383次。

    2、下面程序应该输出多少?

    1. char *c[] = { "ENTER", "NEW", "POINT", "FIRST" };  
    2. char **cp[] = { c+3, c+2, c+1, c };  
    3. char ***cpp = cp;  
    4.   
    5. int main(void
    6. {  
    7.     printf("%s", **++cpp);  
    8.     printf("%s", *--*++cpp+3);  
    9.     printf("%s", *cpp[-2]+3);  
    10.     printf("%s\n", cpp[-1][-1]+1);  
    11.     return 0; 
    12. }

        画个图分析一下结果就会出来:

      打印结果:POINTERSTEW。

    3、下列代码的输出为多少?

    1. int main(void
    2.     enum {a, b=5, c, d=4, e}; 
    3.     enum {h,x, y, z, v=120, w, r=99,s,t}; 
    4.     return 0; 

    a、c、e、h、x、y、z、w、s、t的值分别是多少?

        枚举类型默认起始值为0,若里面元素初始化时没有赋值则取默认值,赋过值则取给定的值,元素的默认值总是它前面的那一个元素的值加1。

    结果:a = 0, c = 6, e = 5, h = 0, x = 1, y = 2, z = 3, w = 121, s = 100, t = 101

  • 相关阅读:
    C语言volatile解析
    使用中断开关实现全局变量互斥访问
    CentOS7下gogs安装总结
    iOS Xcode: linker command failed with exit code 1 (use -v to see invocation) 处理方法
    C# 10进制与62进制互转 数据大无压力 10进制与72,96进制任意转换
    Web网站的性能测试工具
    NetCore跨平台桌面框架Avalonia的OSX程序打包
    C# 类中静态变量静态构造函数执行顺序
    mac osx下虚拟主机配置
    React+ES6+Webpack深入浅出
  • 原文地址:https://www.cnblogs.com/ldjhust/p/2988305.html
Copyright © 2020-2023  润新知