C语言你不可以错过的8个经典题目
作者:Dawn_sf 发布时间:[ 2017/4/12 10:33:45 ] 推荐标签:测试开发技术 C语言
一下这些都是C语言中较为经典的例题,可以帮助大家在写程序中少走弯路,少出点BUG。
1. 一下叙述中不正确的是(D)
A.在不同的函数中可以使用相同名字的变量
B.函数中的形式参数是在栈中保存
C.在一个函数内定义的变量只在本函数范围内有效
D.在一个函数内复合语句中定义的变量在本函数范围内有效
(复合语句值函数中的成对括号构成)
注:D项是有错误的比如我举个例子
#include<stdio.h>
int man()
{
{
int a=10;
}
printf("%d
",a);
return 0;
}
这个如果再编译中,一定会出现,a未定义的错误的。
2.
<span style="font-family:KaiTi_GB2312;font-size:14px;">#include<stdio.h>
#include<Windows.h>
int main()
{
int i;
char acNEW[20];
for (i = 0; i < 5; i++)
{
acNEW[i] = '0';
}
printf("%d
", strlen(acNEW));
system("pause");
return 0;
}</span>
问题是求输出结果: 这个答案应该不确定,因为呢它在为字符数组赋值时,并未赋 '' 但是strlen函数
认为结束的标准是 '' ,所以当它读到后一位他会继续走下去,直到它遇到 '',因为后面是垃圾数据
数据都是随机的所以strlen函数在读时直到遇到 '' 它才会停下来,所以答案是不确定的。
3.全局变量可以定义在被多个.c文件包含着的头文件中? 错误
这个在编译时会报错的,但是如果使用static修饰可以编译通过。
4.
在X86下,有这些程序:
<span style="font-family:KaiTi_GB2312;font-size:14px;">#include<stdio.h>
#include<Windows.h>
int main()
{
union
{
short k;
char i[2];
}*s,a;
s = &a;
s->i[0] = 0x39;
s->i[1] = 0x38;
printf("%x
", a.k);
system("pause");
return 0;
}</span>
这道题问的是输出的什么?这里牵扯的知识点 联合体和大小端存储,x86是小端存储,这种东西得靠记了。。没办法大家都知道联合体空间公用对吧,short长度为2B,char i[2]长度也为2B.所以你的a.k虽然并未赋值,但是你等于输出了char i[2]数组中的内容,他们虽然名字不同现在他们内容是一样的。 这考验我们大小端的概念了。
接下来下面是我画的这道题的理解图:
大家也知道读取数据一般是从高位开始读,比如一个数字 120 我们肯定是先看他大的位对吧(高位)
所以这道题的答案是 3839
我再截图验证一下:
5.求下列程序输出结果
<span style="font-family:KaiTi_GB2312;font-size:14px;">#include<stdio.h>
#include<Windows.h>
int main()
{
unsigned char a = 200;
unsigned char b = 100;
unsigned char c = 0;
c = a + b;
printf("%d %d", a + b, c);
system("pause");
return 0;
}</span>
这道题主要考的是你对unsigned的理解,接下来我画一张图帮大家理解
相关推荐

更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11