目前C面试题

来源:互联网 发布:dlt算法 编辑:程序博客网 时间:2024/05/16 08:30
1.什么是引用?声明引用和使用的时候需要注意哪些问题?
2.内存分配方式有几种?MTK开发分配应该注意什么?
3.sizeof的计算,包括变量和结构体以及循环结构体的sizeof的计算
4.++ ,--单目操作符的运算
5.排序和查找:

写一个通用排序函数,按任何需要的方式排序任意类型的数组。排序方式有冒泡排序、选择排序、插入排序、希尔排序。


6.建立一个通讯录单链表,包括姓名、地址、邮编、电话、成绩。编写以下函数:

1. 链表的建立函数:链表按人员姓名的字典顺序排列,并存入磁盘文件;

2. 插入函数:链表中插入一成员,依然保证按姓名的字典顺序排列;

3. 删除函数:链表中删除指定成员;

4. 修改函数:查找指定成员,并能进行修改;

5. 统计函数:统计各分数段的人数;

6. 输出函数:画出二维直方图,使用不同的颜色区分不同的分数段人数。

要求:根据操作菜单,选择各功能的执行。


7.文件操作:
编写了一个可以同时显示文件名和文件的属性,又可以显示文件的部分内容的程序。
程序的主要函数list()的基本设计思路是:
⑴用findfirst()函数查找第一个有效的文件;
 ⑵分析文件的属性字节,判断它是否为子目录、二进制文件或其它文件;
 ⑶如果不是子目录和二进制文件,那么打开这个文件,从文件头读指定个数的字符,然后关闭文件;
⑷显示文件名称、属性和特征字符串;
⑸用findnext()查找下一个有效的文件,转⑵,重复执行,直到没有有效文件为止。
8.查找并替换程序:
用C语言实现文件中有一组整数,要求排序后输出到另外一个档中。
附加:
编写对一批文本文件完成一个字符串查找并替换程序。其步骤如下:
⑴用fgets()函数从文件中读一行内容;
⑵用strcmp()判断是否含有指定的字符串;
⑶对该行内容进行重复查找,每查到一个searchstr,替换为一个replacestr,直到将行上所有的searchstr均替换为replacestr为止;
⑷将替换好的该行内容写入一个临时文件;
⑸判断是否是文件尾,若不是,则转⑴,重复上述过程,直至文件结尾;
⑹关闭原文件和临时文件;
⑺将原文件改名为BAK文件,将临时文件改名为原文件名。
额外:

加密技术编程

1.机密文件的有效销毁程序

按照美国国防部DOD5220.22M标准来擦掉需要删除的机密数据,即首先将要删除的文件内容全部写为'0',再被写为'1',如此重复3次,接着被写上一个随机值;再加上一个DOD标准中未说明的步骤,即在删除文件之前,先将文件长度置为0,这使恢复机密文件的希望更为渺茫。

2. 文件加密技术

采用文件逐字节与密码异或方式对文件进行加密,当解密时,只需再运行一遍加密程序即可.密码要求用户输入,8位以内.

3.程序加锁
建立修改口令子函数,建立或修改用户输入口令,系统只认默认口令88888888,本程序可加到用户的源程序之前,起到加锁的作用,三次无效口令推出。程序涉及到C语言函数getpass(char *),该函数从键盘读取8位字符并返回,且不在屏幕上显示。

文件操作:

1.成批地修改文件的建立时间
提供了findfirst()和findnext()的库函数,可以用来搜索当前目录下指定类型的文件,getdate()和gettime()可以用来获得系统的当前时间,setftime()可以用来修改文件的建立时间。
程序设计思路是:                    
第1步:用getdate()和gettime()获取系统的当前日期和当前时间;
第2步:用当前日期和当前时间给文件时间变量myftime(为struct ftime类型)赋值;
第3步:用findfirst()查找第一个有效的指定类型的文件;
第4步:用open()打开它,并用setftime()修改文件的建立时间和日期,关闭文件;
第5步:用findnext()查找下一个文件,重复第4~5步,直到没有有效的文件为止。