文章目录以下练习是在阅读《C和指针》第二章基本概念的时候整理的,仅供大家参考,若有误,希望能在评论区中指出,谢谢
- 前言
- 1. 在C语言中,注释不允许联套。用注释来“注释掉”一段语句会导致什么结果?
- 2. 把一个大型程序放入一个单一的源文件中有什么优点?有什么缺点?
- 3.你需要用printf打印出下面这段文本(包括两边的双引号)。你应该使用什么样的字符串常量参数?
- 4. 40的值是多少?100、x40、x100、 123、x0123 的值又分别是多少?
- 5. 下面这条语句的结果是什么?
- 6. 下面的声明存在什么错误(如果有的话)?
- 7. 是非题:因为C(除了预处理指令之外)是一种自由形式的语言,唯一规定程序应如何编写的规则就是语法规则,所以程序实际看上去的样子无关紧要。
- 8. 假定你有一个C程序,它的main函数位于文件main.c, 它还有一些函数位于文件list.c和report.c。在编译和链接这个程序时,你应该使用什么命令?
- 9. 接上题,如果你想使程序链接到 parse 函数库,你应该对命令作何修改?
- 10. 假定你有一个C程序,它由几个单独的文件组成,而这几个文件又分别包含了其他文件,如果你对单独一个源文件进行修改,则应该用声明命令来进行重新编译,如何对头文件进行修改又该用什么命令来进行编译?
- 11. 编写一个程序,它从标准输入读取 C源代码,并验证所有的花括号都正确地成对出现。注意:你不必担心注释内部、宇符串常量内部和字符常量形式的花括号
- end. 电子书下载链接
2. 把一个大型程序放入一个单一的源文件中有什么优点?有什么缺点?会导致程序出错无法运行。
优点:
- 1.连接时间短;
- 2.避免了重复定义的错误;
- 3.避免了声明;
缺点
3.你需要用printf打印出下面这段文本(包括两边的双引号)。你应该使用什么样的字符串常量参数?
- 1.难以阅读与维护;
- 2.对文件的一点改动,都需要重新编译这个大文件,这时比分成几个小文件后,只重新编译有改动的文件的编译时间长
"Blunder??!??"
#include4. 40的值是多少?100、x40、x100、 123、x0123 的值又分别是多少?#include void main(){ char *arr = "Blunder??!??"; printf(""%s"n", arr); getchar(); }
#include5. 下面这条语句的结果是什么? 6. 下面的声明存在什么错误(如果有的话)?#include void main(){ printf("40n"); // 空白 printf("100n"); // @ printf("x40n"); // 空白 // printf("x100n"); // 过于庞大无法打印 printf(" 123n"); // 3 // printf("x0123n"); // 过于庞大无法打印 }
int Case, If, While, stop, stop;
7. 是非题:因为C(除了预处理指令之外)是一种自由形式的语言,唯一规定程序应如何编写的规则就是语法规则,所以程序实际看上去的样子无关紧要。标识符不能于关键字重名;
8. 假定你有一个C程序,它的main函数位于文件main.c, 它还有一些函数位于文件list.c和report.c。在编译和链接这个程序时,你应该使用什么命令?否。需要保持程序的可读性,便于后期的维护,甚至有时候为了可读性可牺牲程序的效率;
9. 接上题,如果你想使程序链接到 parse 函数库,你应该对命令作何修改?gcc main.c list.c report.c -o main
10. 假定你有一个C程序,它由几个单独的文件组成,而这几个文件又分别包含了其他文件,如果你对单独一个源文件进行修改,则应该用声明命令来进行重新编译,如何对头文件进行修改又该用什么命令来进行编译?gcc main.c list.c report.c -lparse -o main
11. 编写一个程序,它从标准输入读取 C源代码,并验证所有的花括号都正确地成对出现。注意:你不必担心注释内部、宇符串常量内部和字符常量形式的花括号
- Borland C/C++编译器的Windows集成开发环境在各个文件中寻找这些关系并自动只编译那些需要重新编译的文件。
- UNIX系统有一个称为make的工具,用于执行相同的任务。但是,要使用这个工具,你必须创建一个 makefile ,它用于描述各个文件之间的关系。
#includeend. 电子书下载链接#include #include #include int main(int argc, char *argv[]){ if(argc < 1){ std::cout << "input error" << std::endl; exit(-1); } char r_arr[100] = {0}; int i=0; FILE *fp = fopen(argv[1], "r"); char ch; while((ch = fgetc(fp)) != EOF){ if(ch == '{'){ r_arr[i] = '{'; // } std::cout << "出现一次左边 i=" << i << std::endl; i++; } if(ch == '}'){ if(r_arr[i-1] == '{'){ // } r_arr[i-1] = 0; std::cout << "出现一次右边 i=" << i << std::endl; i--; } } } std::cout << "ret: " << i << "len:" << strlen(r_arr) << std::endl; return 0; }
链接:https://pan.baidu.com/s/1rdALCEEzwVHEhPCzKJgZfA 提取码:o3i9



