2011最新C_C 语言程序设计笔试面试题03.pdf_第1页
2011最新C_C 语言程序设计笔试面试题03.pdf_第2页
2011最新C_C 语言程序设计笔试面试题03.pdf_第3页
2011最新C_C 语言程序设计笔试面试题03.pdf_第4页
2011最新C_C 语言程序设计笔试面试题03.pdf_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

12 IP 地址的编码分为哪俩部分 地址的编码分为哪俩部分 答答 IP 地址由两部分组成地址由两部分组成 网络号和主机号网络号和主机号 不过是要和不过是要和 子网掩码子网掩码 按位与之后才能区分按位与之后才能区分 哪些是网络位哪些是主机位 哪些是网络位哪些是主机位 13 用户输入用户输入 M N 值值 从从 1 至至 N 开始顺序循环数数开始顺序循环数数 每数到每数到 M 输出该数值输出该数值 直至全部输出直至全部输出 写出写出 C 程序 程序 答答 循环链表 用取余操作做 循环链表 用取余操作做 14 不能做不能做 switch 的参数类型是 的参数类型是 答答 switch 的参数不能为实型 的参数不能为实型 华为华为 15 局部变量能否和全局变量重名 局部变量能否和全局变量重名 答答 能 局部会屏蔽全局 要用全局变量 需要使用 能 局部会屏蔽全局 要用全局变量 需要使用 局部变量可以与全局变量同名 在函数内引用这个变量时 会用到同名的局部变量 而不局部变量可以与全局变量同名 在函数内引用这个变量时 会用到同名的局部变量 而不 会用到全局变量 对于有些编译器而言 在同一个函数内可以定义多个同名的局部变量 会用到全局变量 对于有些编译器而言 在同一个函数内可以定义多个同名的局部变量 比如在两个循环体内都定义一个同名的局部变量 而那个局部变量的作用域就在那个循环比如在两个循环体内都定义一个同名的局部变量 而那个局部变量的作用域就在那个循环 体内体内 16 如何引用一个已经定义过的全局变量 如何引用一个已经定义过的全局变量 答答 可以用引用头文件的方式可以用引用头文件的方式 也可以用也可以用 extern 关键字关键字 如果用引用头文件方式来引用某如果用引用头文件方式来引用某 个在头文件中声明的全局变理 假定你将那个变写错了 那么在编译期间会报错 如果你个在头文件中声明的全局变理 假定你将那个变写错了 那么在编译期间会报错 如果你 用用 extern 方式引用时 假定你犯了同样的错误 那么在编译期间不会报错 而在连接期间方式引用时 假定你犯了同样的错误 那么在编译期间不会报错 而在连接期间 报错报错 17 全局变量可不可以定义在可被多个 全局变量可不可以定义在可被多个 C 文件包含的头文件中 为什么 文件包含的头文件中 为什么 答答 可以 在不同的 可以 在不同的 C 文件中以文件中以 static 形式来声明同名全局变量 形式来声明同名全局变量 可以在不同的可以在不同的 C 文件中声明同名的全局变量文件中声明同名的全局变量 前提是其中只能有一个前提是其中只能有一个 C 文件中对此变量赋文件中对此变量赋 初值 此时连接不会出错初值 此时连接不会出错 18 语句 语句 for 1 有什么问题 它是什么意思 有什么问题 它是什么意思 答答 和 和 while 1 相同 相同 19 do while 和和 while do 有什么区别 有什么区别 答答 前一个循环一遍再判断 后一个判断以后再循环 前一个循环一遍再判断 后一个判断以后再循环 20 请写出下列代码的输出内容 请写出下列代码的输出内容 i nclude main int a b c d a 10 b a c a d 10 a printf b c d d d d b c d return 0 答答 10 12 120 21 static 全局变量与普通的全局变量有什么区别 全局变量与普通的全局变量有什么区别 static 局部变量和普通局部变量有什么局部变量和普通局部变量有什么 区别 区别 static 函数与普通函数有什么区别 函数与普通函数有什么区别 答答 全局变量 全局变量 外部变量外部变量 的说明之前再冠以的说明之前再冠以 static 就构成了静态的全局变量 全局变量本就构成了静态的全局变量 全局变量本 身就是静态存储方式 身就是静态存储方式 静态全局变量当然也是静态存储方式 静态全局变量当然也是静态存储方式 这两者在存储方式上并无这两者在存储方式上并无 不同不同 这两者的区别虽在于非静态全局变量的作用域是整个源程序这两者的区别虽在于非静态全局变量的作用域是整个源程序 当一个源程序由多个当一个源程序由多个 源文件组成时源文件组成时 非静态的全局变量在各个源文件中都是有效的非静态的全局变量在各个源文件中都是有效的 而静态全局变量则限制了而静态全局变量则限制了 其作用域 其作用域 即只在定义该变量的源文件内有效 即只在定义该变量的源文件内有效 在同一源程序的其它源文件中不能使用在同一源程序的其它源文件中不能使用 它它 由于静态全局变量的作用域局限于一个源文件内由于静态全局变量的作用域局限于一个源文件内 只能为该源文件内的函数公用只能为该源文件内的函数公用 因因 此可以避免在其它源文件中引起错误 此可以避免在其它源文件中引起错误 从以上分析可以看出从以上分析可以看出 把局部变量改变为静态变量后是改变了它的存储方式即改变了它的把局部变量改变为静态变量后是改变了它的存储方式即改变了它的 生存期 把全局变量改变为静态变量后是改变了它的作用域 生存期 把全局变量改变为静态变量后是改变了它的作用域 限制了它的使用范围 限制了它的使用范围 static 函数与普通函数作用域不同函数与普通函数作用域不同 仅在本文件仅在本文件 只在当前源文件中使用的函数应该说明为只在当前源文件中使用的函数应该说明为 内部函数内部函数 static 内部函数应该在当前源文件中说明和定义 对于可在当前源文件以外使 内部函数应该在当前源文件中说明和定义 对于可在当前源文件以外使 用的函数 应该在一个头文件中说明 要使用这些函数的源文件要包含这个头文件用的函数 应该在一个头文件中说明 要使用这些函数的源文件要包含这个头文件 static 全局变量与普通的全局变量有什么区别 全局变量与普通的全局变量有什么区别 static 全局变量只初使化一次 防止在其他全局变量只初使化一次 防止在其他 文件单元中被引用文件单元中被引用 static 局部变量和普通局部变量有什么区别 局部变量和普通局部变量有什么区别 static 局部变量只被初始化一次 下一次依据局部变量只被初始化一次 下一次依据 上一次结果值 上一次结果值 static 函数与普通函数有什么区别 函数与普通函数有什么区别 static 函数在内存中只有一份 普通函数在每个被调用函数在内存中只有一份 普通函数在每个被调用 中维持一份拷贝中维持一份拷贝 程序的局部变量存在于程序的局部变量存在于 堆栈堆栈 中中 全局变量存在于全局变量存在于 静态区静态区 中中 动态申请数据存在于动态申请数据存在于 堆 中 堆 中 22 设有以下说明和定义 设有以下说明和定义 typedef union long i int k 5 char c DATE struct data int cat DATE cow double dog too DATE max 则语句则语句 printf d sizeof struct date sizeof max 的执行结果是 的执行结果是 答答 结果是结果是 52 DATE 是一是一个个 union 变量公用空间变量公用空间 里面最大的变量类型里面最大的变量类型是是 int 5 占用占用 20 个字节个字节 所以它的大小是所以它的大小是 20 data 是一个是一个 struct 每个变量分开占用空间每个变量分开占用空间 依次为依次为 int4 DATE20 double8 32 所以结果是所以结果是 20 32 52 当然当然 在某些在某些 16 位编辑器下位编辑器下 int 可能是可能是 2 字节字节 那么结果是那么结果是 int2 DATE10 double8 20 23 队列和栈有什么区别 队列和栈有什么区别 答答 队列先进先出 栈后进先出 队列先进先出 栈后进先出 24 写出下列代码的输出内容 写出下列代码的输出内容 i nclude int inc int a return a int multi int a int b int c return c a b typedef int FUNC1 int in typedef int FUNC2 int int int void show FUNC2 fun int arg1 int arg2 INC p int temp p arg1 fun printf d n arg2 main int a show multi 10 return 0 答答 110 25 请找出下面代码中的所以错误 请找出下面代码中的所以错误 说明 以下代码是把一个字符串倒序 如说明 以下代码是把一个字符串倒序 如 abcd 倒序后变为倒序后变为 dcba 1 i nclude string h 2 main 3 4 char src hello world 5 char dest NULL 6 int len strlen src 7 dest char malloc len 8 char d dest 9 char s src len 10 while len 0 11 d s 12 printf s dest 13 return 0 14 答答 方法 方法 1 int main char src hello world int len strlen src char dest char malloc len 1 要为要为 0 分配一个空间分配一个空间 char d dest char s 指向最后一个字符指向最后一个字符 while len 0 d s d 0 尾部要加尾部要加 0 printf s n dest free dest 使用完 应当释放空间 以免造成内存汇泄露使用完 应当释放空间 以免造成内存汇泄露 return 0 方法方法 2 include include main char str hello world int len strlen str char t for int i 0 i t str i str i str len i 1 str len i 1 t printf s str return 0 26 1 2 7 28 126 请问请问 28 和和 126 中间那个数是什么 为什么 中间那个数是什么 为什么 答答 应该是 应该是 4 3 1 63 规律是规律是 n 3 1 当当 n 为偶数为偶数 0 2 4 n 3 1 当当 n 为奇数为奇数 1 3 5 27 用两个栈实现一个队列的功能 要求给出算法和思路 用两个栈实现一个队列的功能 要求给出算法和思路 答答 设 设 2 个栈为个栈为 A B 一开始均为空一开始均为空 入队入队 将新元素将新元素 push 入栈入栈 A 出队出队 1 判断栈判断栈 B 是否为空 是否为空 2 如果不为空 则将栈如果不为空 则将栈 A 中所有元素依次中所有元素依次 pop 出并出并 push 到栈到栈 B 3 将栈将栈 B 的栈顶元素的栈顶元素 pop 出 出 这样实现的队列入队和出队的平摊复杂度都还是这样实现的队列入队和出队的平摊复杂度都还是 O 1 比上面的几种方法要好 比上面的几种方法要好 28 在在 c 语言库函数中将一个字符转换成整型的函数是语言库函数中将一个字符转换成整型的函数是 atool 吗 这个函数的原型是什么 吗 这个函数的原型是什么 答答 函数名 函数名 atol 功功 能能 把字符串转换成长整型数把字符串转换成长整型数 用用 法法 long atol const char nptr 程序例程序例 include include int main void long l char str 98765432 l atol lstr printf string s integer ld n str l return 0 29 对于一个频繁使用的短小函数对于一个频繁使用的短小函数 在在 C 语言中应用什么实现语言中应用什么实现 在在 C 中应用什么实现中应用什么实现 答答 c 用宏定义 用宏定义 c 用用 inline 一 编程题一 编程题 输入 输入 N N 整数 整数 输入 数据文件输入 数据文件 A txtA txt 不超过 不超过 6 6 条记录 字符串长度不超过条记录 字符串长度不超过 1515 个字节个字节 文件格式如下 文件格式如下 字符串字符串 t t 数字数字 n n 说明 说明 每行为每行为 1 1 条记录 字符串中不含有条记录 字符串中不含有 t t 数字描述的是该字符串的出现概率 小于等于数字描述的是该字符串的出现概率 小于等于 100100 的整数 的整数 多条记录的出现概率之和为多条记录的出现概率之和为 100100 如果 如果 A txtA txt 不满足该条件 程序则退出 不满足该条件 程序则退出 如果文件格式错误 程序也退出 如果文件格式错误 程序也退出 要求 要求 编写一个程序 输入为编写一个程序 输入为 N N 正整数 读入文件 正整数 读入文件 A txtA txt 按照字符串出现概率随机 按照字符串出现概率随机 地输出字符串 输出地输出字符串 输出 N N 条记录条记录 例如 例如 输入文件输入文件 A txtA txt abc t20abc t20 a t30a t30 de t50de t50 输入为 输入为 1010 即即 abcabc 有有 20 20 的概率输出的概率输出 a a 有有 30 30 的概率输出的概率输出 dede 有有 50 50 的概率输出的概率输出 输出输出 1010 条条 记录记录 以下为一次输出的结果以下为一次输出的结果 多次输出的结果可能不相同 多次输出的结果可能不相同 abcabc a a dede dede abcabc dede a a dede a a dede 下面是我用下面是我用 c c 写的实现代码写的实现代码 include include include include include include include include usingusing namespacenamespace std std voidvoid errorinfo interrorinfo int rownum intrownum int errorcode errorcode switch errorcode switch errorcode casecase 0 0 cout therecout there areare tootoo manymany lineslines inin thethe filefile moremore thanthan 6 endl 6 endl break break casecase 1 1 cout errorcout error occursoccurs inin thethe line rownum errorline rownum 15 15 endl break break casecase 2 2 cout errorcout error occursoccurs inin thethe line rownum errorline rownum error information thereinformation there isis non integernon integer charactercharacter inin thethe probility endl probility endl break break casecase 3 3 cout error totalcout error total probilityprobility isis notnot equalequal withwith 100 endl 100 endl break break default default break break structstruct nodenode stringstring str str intint prob prob intint main main intint N N cout Pleasecout N cin N ifstreamifstream infile A txt infile A txt ifif infile infile 判断文件是否存在判断文件是否存在 cout Filecout File NotNot Exists endl Exists endl returnreturn 1 1 char buffer newchar buffer new char 100 char 100 memset buffer 0 100 memset buffer 0 100 intint flag tab 0 flag tab 0 intint charcount 0 charcount 0 char p char p intint rowcount 0 rowcount 0 vectorarray vectorarray whilewhile infile getline buffer 100 infile getline buffer 100 p buffer p buffer rowcount rowcount if rowcount 6 if rowcount 6 判断行数是否超过判断行数是否超过 6 6 errorinfo rowcount 0 errorinfo rowcount 0 whilewhile p 0 p 0 ifif p t p t if flag tab if flag tab flag tab 1 flag tab 1 标记制表符出现标记制表符出现 else else ifif flag tab flag tab charcount charcount ifif charcount 15 charcount 15 字符串长度过长字符串长度过长 errorinfo rowcount 1 errorinfo rowcount 1 returnreturn 1 1 else else ifif p57 p57 数字部分出现非数字字符数字部分出现非数字字符 errorinfo rowcount 2 errorinfo rowcount 2 returnreturn 1 1 p p nodenode temp temp 分割每一行的文件为字符串和数字分割每一行的文件为字符串和数字 temp str strtok buffer t temp str strtok buffer t temp prob atoi strtok NULL buffer temp prob atoi strtok NULL buffer array push back temp array push back temp flag tab 0 flag tab 0 charcount 0 charcount 0 memset buffer 0 100 memset buffer 0 100 intint probtotal 0 probtotal 0 intint i i for i 0 i array size i for i 0 i array size i probtotal array i prob probtotal array i prob if probtotal 100 if probtotal 100 概率之和不等于概率之和不等于 100 100 errorinfo 0 3 errorinfo 0 3 returnreturn 1 1 for i 1 i array size i for i 1 i array size i array i prob array i 1 prob array i prob array i 1 prob 将概率空间分割为几个部分 计算分割将概率空间分割为几个部分 计算分割 点的概率值点的概率值 srand time 0 srand time 0 intint r num r num for i 0 i N i for i 0 i N i r num rand 100 r num rand 100 for intfor int j 0 j array size j j 0 j array size j if r num array j prob if r num array j prob 如果随机数落在该区间如果随机数落在该区间 则输出对应的字符串则输出对应的字符串 cout array j str endl cout array j str endl break break 关闭文件流 释放空间关闭文件流 释放空间 infile close infile close delete buffer delete buffer returnreturn 0 0 思路思路 首先进行文件打开首先进行文件打开 格式检查格式检查 对于按照概率输出字符串对于按照概率输出字符串 可以采用类似蒙可以采用类似蒙 地卡罗方法 具体做法是 地卡罗方法 具体做法是 针对给出的示例 针对给出的示例 abc t20abc t20 a t30a t30 de t50de t50 将概率空间分割为三个部分将概率空间分割为三个部分 0 20 50 1000 20 50 100 然后生成然后生成 N N 个个 0 990 99 的随机数的随机数 然后看然后看 每个随机数落在哪一个区间 就将该区间对应的字符串输出每个随机数落在哪一个区间 就将该区间对应的字符串输出 1 1 局部变量能否和全局变量重名 局部变量能否和全局变量重名 答 能 局部会屏蔽全局 要用全局变量 需要使用答 能 局部会屏蔽全局 要用全局变量 需要使用 局部变量可以与全局部变量可以与全 局变量同名局变量同名 在函数内引用这个变量时在函数内引用这个变量时 会用到同名的局部变量会用到同名的局部变量 而不会用到全局而不会用到全局 变量变量 对于有些编译器而言对于有些编译器而言 在同一个函数内可以定义多个同名的局部变量在同一个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论