7月班C语言、linux基础、网络测试(答案).doc

上传人:壹****1 文档编号:543450213 上传时间:2022-10-22 格式:DOC 页数:13 大小:81.01KB
返回 下载 相关 举报
7月班C语言、linux基础、网络测试(答案).doc_第1页
第1页 / 共13页
7月班C语言、linux基础、网络测试(答案).doc_第2页
第2页 / 共13页
7月班C语言、linux基础、网络测试(答案).doc_第3页
第3页 / 共13页
7月班C语言、linux基础、网络测试(答案).doc_第4页
第4页 / 共13页
7月班C语言、linux基础、网络测试(答案).doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《7月班C语言、linux基础、网络测试(答案).doc》由会员分享,可在线阅读,更多相关《7月班C语言、linux基础、网络测试(答案).doc(13页珍藏版)》请在金锄头文库上搜索。

1、一、 C语言部分C1 以下为WinNT下的32位C程序,请计算sizeof的值。char str = “Hello” ;char *p = str ;int n = 10;请计算sizeof (str ) = 6 sizeof ( p ) = 4 sizeof ( n ) = 4 void Func ( char str100)请计算 sizeof( str ) = 4 void *p = malloc( 100 );请计算sizeof ( p ) = 4 C2 有以下宏定义: #define a 7 + 3 #define b (2 + 1) #define dvx(x, y) (x * y

2、) 试写出以下宏dvx(a,b)的结果? 7 + 3 * (2 + 1) = 16 C3 用变量a给出下面的定义1) 一个有10个指针的数组,该指针是指向一个整型数的int *a102) 一个指向有10个整型数数组的指针Int (*a)103) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数int (*foo)(int)4) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型int (*a10)(int)C4 不使用其他变量,交换两个整型a,b的值int a = 2,b =3;(1)a = a + b; b = a b;a = a b; (2)a = a

3、bb = b aa = a bC5 有结构AA中间有cc域,比较这两种对cc引用的不同,并说明pp和qq各应如何定义:pp-cc,qq.ccstruct AAint a;int cc;*pp,qq;pp-cc是用指针的方法引用ccqq.cc使用变量的方法引用ccC6 头文件中的 ifndef/define/endif 干什么用?防止头文件重复被引用C7 #include 和 #include “filename.h” 有什么区别?答:对于#include ,编译器从标准库路径开始搜索 filename.h 对于#include “filename.h” ,编译器从用户的工作路径开始搜索 fil

4、ename.h,然后再去标准库路径搜索 filename.hC8 const 有什么用途?(请至少说明两种)(1)可以定义 const 只读变量(2)const可以修饰函数的参数、返回值,甚至函数的定义体。被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。C9 请举例说明字符串数组与字符串指针的差异 char name100 = “abcdefg” char *name = “abcdefg” 字符串数组是在栈中或静态数据存储区中分配存储单元,把整个字符串都放进去,可以任意读写 字符串指针,字符串存放在文字常量区,把字符串的首地址放在指针变量中,只能读,不能写。C1

5、0 已知一个函数原型:int foo(struct type_t1 a, struct type_t2 *b),请用typedef定义一个指向该原型函数的指针,并用这个新定义的类型声明一个元素个数为SIZE的指针数组int (*p) (struct type_t1 a, struct type_t2 *b)typedef int (*FOO) (struct type_t1 a, struct type_t2 *b)FOO a SIZE int ( *fooSIZE ) (struct type_t1 a, struct type_t2 *b)C11 写出程序删除链表中的所有接点voiddel

6、_all(node*head) node*p;while(head!=NULL) p=head-next; free(head); head=p; cout释放空间成功!C12 请写一个函数,将字符串”123456”转换成变量123456。int str_to_num(char * str)char *temp = str;int num=0;while (*temp != 0)num = num * 10 + (*temp - 0);temp+;return num;C13 请实现将两个字符串合并的函数strcat.char *my_strcat(char *dest, const char

7、* src)char *temp = dest;while (*dest != 0)dest+;while(*dest+ = *src+) != 0);return temp;Linux部分L1 各个文件夹的意义是什么? /bin /lib /etc /mnt /boot/bin 存放如ls ,mv,rm等常用的命令工具 /lib 在linux执行或编译一些程序的时候,均会用到的一些函数库。/etc 系统在开机过成中需要读取的文件均在这个目录中,例如用户的帐号与密码,系统的主要设定。/mnt这是软盘与光盘默认挂载的地方/boot 这里存放linux内核与开机相关文件的地方。L2 怎样在vi中查

8、找一个字符串,请写出详细过程在编辑模式下(shift+:)用 /字符串/ 从光标开始处向文件尾部查找该字符串用 ?字符串 ? 从光标开始处向文件首查找该字符串。L3 怎样用gcc编译文件test.c,并加上调试信息?用gcc test.c o test gL4 用gcc编译文件test.c,要经过哪几个步骤?主要四个阶段 1:预处理阶段 2:编译成汇编代码 3:把汇编代码生成目标代码 4:用连接器把生成的目标代码和系统或用户提供的库连接起来生成可执行文件。L5 gcc的参数“-L”,“-l”“-I”分别是什么意义?举例说明。 - L 指定额外的函数库搜索路径 - 1 连接时搜索指定的函数库 -

9、 I 指定额外的头文件搜索路径。L6 在gdb中怎样设置一个断点?怎样清除一个断点?用break 文件行 设置断点 clear 文件行 清除断点L7 写一个简单的Makefile的例子,并对它进行解释,说明Makefile的语法规则。main: main.c main.hgcc o main main.cmain 是要产生的文件名称 main.c main.h是产生目标文件依赖的文件 gcc是执行的命令语法规则目标:依赖文件列表命令列表L8 什么是shell脚本?请写出你对shell脚本的理解。shell 脚本程序就是按照一定的语法结构把若干linux命令组织在一起,使这些命令按照我们的要求完

10、成一定的功能,它可以进行类似程序的编写,并且不需要编译就能运行。它就相当于windows下的批处理省去一步步的命令操作。L9 什么是系统调用?请写出你对系统调用的理解。系统调用是指操作系统提供给用户程序调用的一组特殊接口,用户程序可以通过这组接口获得操作系统内核提供的服务。L10 什么是标准I/O库?标准I/O库和系统调用有什么区别?系统级的I/O操作函数都是针对文件描述的,即打开文件时返回一个文件描述符,然后可以直接对文件描述符进行操作。系统调用运行内核态 I/O库函数运行与用户态。L11 函数read()和fread()有什么区别?fread的是标准IO,属于库函数,read是操作系统提供

11、的系统调用。fread是带缓冲的,read不带缓冲. 包是一种特殊类型的组成部分L12 什么是进程?用fork()创建一个子进程时,系统会做什么工作?进程是具有独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的独立单位不仅是系统内部独立运行的实体也是独立竞争资源的实体。用fork()时系统会分配子进程一个ID号 然后继承父进程的地址空间,包括进程上下文 进程堆栈 打开的文件描述符等等,他就是父进程的一个复制品。L13 什么是信号?请写出你对信号的理解。信号是软件中断,它提供了一种处理异步事件的方法,是进程间通信的方法。信号处理有三种方式 1:忽略此信号 2:用用户定义的

12、信号处理函数处理该信号 3:执行系统默认的动作 可以用void(*signal(int signo,void (*func)(int)int)函数中的第二个参数func()函数来指定信号的处理方式,SIGIGN:忽略该信号 SIGDFL :采用默认方式处理该信号 自定义信号处理函数。L14 进程和线程有什么区别?每个独立的进程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。进程是系统进行资源分配和调度的一个独立单位.线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本

13、上不拥有系统资源,只拥有一点在运行中必不可少的资源但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源. 一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行。L15 什么是线程的互斥和同步,程序应怎样写才能达到互斥或同步?互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。 同步:是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。在大多数情况下,同步已经实现了互斥,特别是所有写入资源的情况必定是互斥的。少数情况是指可以允许多个访问者同时访问资源。在写程序时可以用互斥锁和

14、信号量实现线程同步 ,一个线程访问共享资源时给这个资源上锁其他线程就不能访问了直到上锁的进程释放互斥锁为止。L16 编写一个多进程多线程的程序:要求创建4个子进程,每个进程都分别创建2个线程,进程和线程的功能不做要求,可只提供简单的打印语句。#include #include #include void *fun11(void *arg) printf(11);void *fun12(void *arg) printf(12);void *fun21(void *arg) printf(21);void *fun22(void *arg) printf(22);void *fun31(void *arg) printf(31);void *fun3

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号