2021西邮linux兴趣小组纳新题解(2)

1.大小和长度

在这里插入图片描述
题解:

考点:strlen,sizeof的区别
前面有类似题目,不再赘述

2.箱子的大小和装入物品的顺序有关

在这里插入图片描述

题解:

考点:struct结构体大小计算.结构体对齐
前面有类似的题目,不再赘述

3.哦,又是函数

在这里插入图片描述

题解:

考点:二维数组传参,有三种定义方式,代码如下:

void func(int a[][13], int m, int n);
void func(int (*a)[13], int m, int n);
void func(int **a, int m, int n);

4.就不能换个变量名吗?

在这里插入图片描述
题解:

考点:

  1. 传值不会改变函数外的值,传值可以通过指针改变函数外的值
  2. 变量的生命周期,前面有类似的题目,不再赘述

5.套娃真好玩!

在这里插入图片描述
题解:

考点:

  1. 三目运算符
  2. 函数的递归
    解释:sum为无符号整形减到0后sum(n-1=0)+n=sum(0)+1=1,
    所以sum(0)=0,再逐层返回0+1+2+…+100=5050

6.算不对的算术

在这里插入图片描述

题解:

输出结果如下:
在这里插入图片描述
考点:数据的存储,整形提升
前面考过类似题目,不再赘述

7.指针和数组的恩怨情仇

在这里插入图片描述
题解:

考点:指针和数组的相关知识
前面有类似题目,不再赘述

8.移形换位之术

在这里插入图片描述

在这里插入图片描述
题解:

  1. const int 和int const没有区别,都是指此int类型的变量不能被修改
  2. const int和int const也没有区别,都是指指针指向的值不能被改变
  3. 下面代码的错误:
void func2(const int *n)
{
    *n+=1;//不能给只读形参赋值
    n=&a;
}
void func3(int*const n)
{
    *n+=1;
    n=&a;//不能向只读位置赋值
}
void func4(const int *const n)
{
    *n+=1;//不能给只读形参赋值
    n=&a;//不能向只读位置赋值
}

9.听说翻转字母大小写不影响英文的阅读

在这里插入图片描述

题解:

考察大小写字母翻转

  1. 可以直接使用库函数tolowe和toupper
  2. 可以自己写函数,利用acsii码值想相加减来做

10.交换礼物的方式

在这里插入图片描述
!](https://img-blog.csdnimg.cn/f831e8066f9847fb9dba28df4dcde652.png)
在这里插入图片描述

题解:

考点

  1. ①和②正确,为传址 ③错误,为传值
  2. do whlie的用法
  3. 其他交换方法如下:
{
//方法一:临时变量法
    int tmp = b;
    b = a;
    a = tmp;
//方法二:数学法
    a = a+b;
    b = a-b;
    a = a -b;
//方法三:异或法
    a ^= b ^= a ^= b;
//方法四:
    a = a+b-(b=a);   //这个方法我刚了解到哈哈,有点意思
}

11.据说有个东西叫参数

在这里插入图片描述

12.人去楼空

在这里插入图片描述

题解:

#include<stdio.h>
#include<stdlib.h>
int *func1(void)
{
    static int n=0;//静态变量的作用时间:从开始调用到程序结束
    n=1;
    return &n;//只能返回指针值也就是n的地址

              //此处可返回地址因为静态变量的值一直保存,且地址一直存在
}
int *func2(void)
{
    int*p=(int*)malloc(sizeof(int));
    *p=3;
    return p;
}
// 3函数错误,修改如下,//考点:野指针.前面讲过,不再赘述
int *func3(void)
{
    int *n;
    *(n)=4;
    return n;
}
int main(void)
{
    printf("%d\n",*func1());//1
    printf("%d\n",*func2());//3
    printf("%d\n",*func3());//4
    return 0;
}

13.奇怪的输出

在这里插入图片描述

题解:

前面考过几乎一样的题,不再赘述

14.请谈谈对从「c 语言文件到可执行文件」 的过程的理解

在这里插入图片描述
想了解详情,就看看这篇博客吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值