• 【C刷题】day2


    一、选择题

    1、以下程序段的输出结果是( )
    1. #include
    2. int main()
    3. {
    4. char s[] = "\\123456\123456\t";
    5. printf("%d\n", strlen(s));
    6. return 0;
    7. }

    A: 12 B: 13 C: 16 D: 以上都不对
    【答案】:

    A

    【解析】:

    考点:转义字符

    \\表示反斜杠,取消转义的作用

    \123表示八进制的123

    \t表示水平制表符,相当于Tab键

    这些都是算一个字符,其他都是单独一个为一个字符,故为12个


    2、若有以下程序,则运行后的输出结果是()
    1. #include
    2. #define N 2
    3. #define M N + 1
    4. #define NUM (M + 1) * M / 2
    5. int main()
    6. {
    7. printf("%d\n", NUM);
    8. return 0;
    9. }

    A: 4 B: 8 C: 9 D: 6
    【答案】:

    B

    【解析】:

    考点:define宏定义只是简单的替换

    (1)先把M进行替换得到(N+1+1)*N+1/2(M换成N+1不用加括号,直接替换就好)

    (2)再把N进行替换,(2+1+1)*2+1/2得到就是8.5

    (3)以整形的形式进行打印,取整数部分就是8


    3、如下函数的 f(1) 的值为( )
    1. int f(int n)
    2. {
    3. static int i = 1;
    4. if(n >= 5)
    5. return n;
    6. n = n + i;
    7. i++;
    8. return f(n);
    9. }

    A: 5 B: 6 C: 7 D: 8
    【答案】:

    C

    【解析】:

    考点:

    static修饰局部变量改变了变量的周期(让静态局部变量出了作用域依然存在,知道程序结束,生命周期才停止)


    4、下面3段程序代码的效果一样吗( )
    1. int b;
    2. (1)const int *a = &b;
    3. (2)int const *a = &b;
    4. (3)int *const a = &b;

    A: (2)=(3) B: (1)=(2) C: 都不一样 D: 都一样
    【答案】:

    B

    【解析】:

    考点:指针常量和常量指针

    重要区别:*的位置

    我们以*为分界线,如果const在*左边,那么就是常量指针(指针指向的是常量);

    如果const在*右边,那么就是指针常量(指针是个常量)

    1.常量指针:指针指向的内容是常量(const只存在于指针指向的过程中,而与变量本身是否被const修饰无关)

    const  int *n;

    int  const *n;

    注意两点

    (1)常量指针的意思是不能通过指针解引用改变变量(b)的值,但是可以通过其他引用来改变变量(b)的值

    1. int b=5;
    2. const int *a=&b;
    3. b=6;

    (2) 常量指针可以改变指向,常量指针可以指向其他的地址

    1. int a = 5;
    2. int b = 6;
    3. const int* n = &a;
    4. n = &b;

    2.指针常量:指针本身是个常量,不能指向其他的地址

    int * const n;

     注意:

    指针常量指向的地址不能改变,但是地址中保存的值是可以改变的,数据可以通过其他指向改变地址的指针来修改

    1. int a = 5;
    2. int* p = &a;
    3. int* const n = &a;
    4. *p = 8;//通过p指针来改变a的值

    5、对于下面的说法,正确的是( )

    A: 对于 struct X{short s;int i;char c;},sizeof(X)等于sizeof(s) + sizeof(i) + sizeof(c)

    B: 对于某个double变量 a,可以使用 a == 0.0 来判断其是否为零

    C: 初始化方式 char a[14] = "Hello, world!"; 和char a[14]; a = "Hello, world!";的效果相同

    D: 以上说法都不对

    【答案】:

    D

    【解析】:

    A.没有考虑内存对齐

    B.考察浮点型的比较,由于浮点型存在误差,不能直接判断两个数是否相等,通常采用比较两个数差的绝对值是否小于一个很小的数,作为误差

    C.第二种的a代表首元素的地址,地址是常量不可以改变


    二、编程题

    1.尼科彻斯定理

    【参考答案】:

    通过数学规律找到要打印的第一个数,第一个数就是m*m-m+2*i+1

    注意最后一个数不用打印+,所以要特殊考虑

    1. #include
    2. int main()
    3. {
    4. int m=0;
    5. int count=0;
    6. //输入
    7. scanf("%d",&m);
    8. //输出
    9. for(int i=0;i
    10. {
    11. if(i!=m-1)
    12. printf("%d+",m*m-m+2*i+1);
    13. //最后一个没+
    14. else
    15. printf("%d",m*m-m+2*i+1);
    16. }
    17. return 0;
    18. }

    2. 等差数列

    【参考答案】:

     就是套数学公式,Sn=a1*n+n*(n-1)*d/2

    1. #include
    2. int main()
    3. {
    4. int n=0;
    5. //输入
    6. scanf("%d",&n);
    7. //输出
    8. printf("%d",2*n+n*(n-1)*3/2);
    9. }

  • 相关阅读:
    2022-12-06 mysql-innodb引擎-核心数据结构
    ssm+vue的OA办公系统(有报告)。Javaee项目,ssm vue前后端分离项目。
    数组OJ题汇总(一)
    C# , .netWebApi 实现类似Java 的Ioc 自动装配@Autowired
    C#、C++、Java、Python 选择哪个好?
    告别EXCEL,易点易动库存管理系统帮助企业提升固定资产管理效率
    22-9-16学习笔记
    【紫光同创国产FPGA教程】【PGC1/2KG第六章】密码锁实验例程
    温度敏感材料干燥过程中的温度和真空度精密控制解决方案
    【Azure 应用服务】部署Kafka Trigger Function到Azure Function服务中,解决自定义域名解析难题
  • 原文地址:https://blog.csdn.net/qq_73017178/article/details/132805697