admin 管理员组

文章数量: 1086019


2024年3月25日发(作者:形式参数和实际参数的区别)

C语言深度解剖读书笔记之——C语言基础测试题

前几天天看到这本书,感觉不错,在看之前,先做了后面的习题,结果只得了60多分,一

直以为自己的基础还是不错的,做完后对了答案后,感觉自己的自信心一下全没有了,不过

遇到问题解决问题,我用了2天时间好好研读了这本书,感觉真不错。虽然感觉都是一些基

础的知识,但是我读的还是津津有味,感觉收获蛮多的,感谢这本书的作者陈正冲。呵呵,

说来我本科专业和这位大牛还是同一个专业呢,呵呵。不是只有计算机科班出身的才能学好

编程,知真正的高手都是自学的。

今天就把我当时做错的题目和认为比较好的题目一个个写出来。再次分析下

如果我在哪家公司遇到类似这种题目我会感觉这家公司出题很有水平,重基础,真正理解C

语言的人才能得高分。注重细节,知其然知其所以然。

题目1.

下面代码有什么问题,为什么?

[cpp] view plaincopyprint?

1. #include

2. using namespace std;

3.

4. int _tmain(int argc, _TCHAR* argv[])

5. {

6. char string[10],str1[10];

7. int i;

8. for (i=0;i<10;i++)

9. {

1[i] = 'a';

11.}

(string,str1);

<

("pause");

0;

16.}

#include

using namespace std;

int _tmain(int argc, _TCHAR* ar

{

char string[10],str1[10];

运行的时候回出现下面情况:

中的 0xcccc6161 处未处理的异常: 0xC0000005: Access violation

做这个题目的时候,我也知道字符串strcpy是以'0'为结束标识的。会产生数组越界,但是

表达不清楚。

答案:运行到strcpy的时候可能会产生内存异常。

因为:str1没有结束符标识,str1数组后面继续存储的可能不是'0',而是乱码。Cout函数,

对于输出char*类型,顺序打印字符串中的字符直到遇到空字符('0')或打印了由精度指定

的字符数为止。

题目2.

下面代码的结果是多少?为什么?

[cpp] view plaincopyprint?

1. #include

2. using namespace std;

3.

4. int _tmain(int argc, _TCHAR* argv[])

5. {

6. char a[1000];

7. int i;

8. for (i=0;i<1000;i++)

9. {

10.a[i] = -1-i;

11.}

<

("pause");

0;

15.}

#include

using namespace std;

int _tmain(int argc, _TCHAR* ar

{

char a[1000];

做题目的时候没有考虑到字符溢出,自然做错了

分析:


本文标签: 题目 时候 字符 感觉 遇到