目录
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.就不能换个变量名吗?
题解:
考点:
- 传值不会改变函数外的值,传值可以通过指针改变函数外的值
- 变量的生命周期,前面有类似的题目,不再赘述
5.套娃真好玩!
题解:
考点:
- 三目运算符
- 函数的递归
解释:sum为无符号整形减到0后sum(n-1=0)+n=sum(0)+1=1,
所以sum(0)=0,再逐层返回0+1+2+…+100=5050
6.算不对的算术
题解:
输出结果如下:
考点:数据的存储,整形提升
前面考过类似题目,不再赘述
7.指针和数组的恩怨情仇
题解:
考点:指针和数组的相关知识
前面有类似题目,不再赘述
8.移形换位之术
题解:
- const int 和int const没有区别,都是指此int类型的变量不能被修改
- const int和int const也没有区别,都是指指针指向的值不能被改变
- 下面代码的错误:
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.听说翻转字母大小写不影响英文的阅读
题解:
考察大小写字母翻转
- 可以直接使用库函数tolowe和toupper
- 可以自己写函数,利用acsii码值想相加减来做
10.交换礼物的方式
!](https://img-blog.csdnimg.cn/f831e8066f9847fb9dba28df4dcde652.png)
题解:
考点
- ①和②正确,为传址 ③错误,为传值
- do whlie的用法
- 其他交换方法如下:
{
//方法一:临时变量法
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.奇怪的输出
题解:
前面考过几乎一样的题,不再赘述