VCer代码 VCer开源 VCer文章 VCer工具 VCer知道 VCer词典 VCer读书 VCer论坛   站点首页 我要张贴 控制面板
VCer代码 VCer开源 VCer文章 VCer工具 VCer知道 VCer词典 VCer读书 VCer论坛   站点首页 我要张贴 控制面板

目前位置: VCer资源中心 >>> VCer文章
子级分类: 软件工程 C++/MFC基础 Windows界面 网络与通信 图形图象处理 系统通信 数据库 文件系统 硬件/系统调用 开发工具 组件技术 其它技术
我来转发一篇文章!>>>


一道经典常考的c语言题目,strcpy函数的编写
 
已知strcpy函数的原型是: char * strcpy(char * strDest,const char * strSrc); 1.不调用库函数,实现strcpy函数。 2.解释为什么要返回char *。 解说: 1.strcpy的实现代码 char * strcpy(char * strDest,const char * strSrc) { if ((strDest==NULL)||(strsrc="/=NULL")) file://[/1] throw "Invalid argument(s)"; //[2] char * strDestCopy=strDest; file://[/3] while ((*strDest++=*strSrc++)!='\0'); file://[/4] return strDestCopy; } 错误的做法: [1] (A)不检查指针的有效性,说明答题者不注重代码的健壮性。 (B)检查指针的有效性时使用((!strDest)||(!strSrc))或(!(strDest& ...
作者:不祥 oases2008张贴于2005-01-01 00:00:00.0,共阅读1719次,回复0
Josephu 问题
 
为:设编号为1,2,… n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m 的那个人出列,它的下一位又从1开始报数,数到m的那个人又出列,依次类推,直到所有人出列为止,由此产生一个出队编号的序列。数组实现:#i nclude <stdio.h>#i nclude <malloc.h>int Josephu(int n, int m){ int flag, i, j = 0; int *arr = (int *)malloc(n * sizeof(int)); for (i = 0; i < n; ++i) arr = 1; for (i = 1; i < n; ++i) { flag = 0; while (flag < m) { if (j == n) j = 0; if (arr[j]) ++flag; ++j; } arr[j - 1] = 0; printf("第%4d个出局的人是:%4d号\n", i, j); } free(arr); return j;}int main(){ int n, m; scanf("%d%d", &n, &m); printf("最后胜利的是%d号!\n", Josephu(n, m)); sy ...
作者:不祥 oases2008张贴于2005-01-01 00:00:00.0,共阅读1195次,回复0
把十进制数(long型)分别以二进制和十六进制形式输出
 
编程实现:把十进制数(long型)分别以二进制和十六进制形式输出,不能使用printf系列库函数char* test3(long num) {char* buffer = (char*)malloc(11);buffer[0] = '0';buffer[1] = 'x';buffer[10] = '\0';char* temp = buffer + 2;for (int i=0; i < 8; i++) {temp = (char)(num<<4*i>>28);temp = temp >= 0 ? temp : temp + 16;temp = temp < 10 ? temp + 48 : temp + 55;}return buffer;}本文转载自IT网it求职笔试真题库网。
作者:不祥 oases2008张贴于2005-01-01 00:00:00.0,共阅读1539次,回复0
高质量C++/C编程指南
 
比较经典的一本总结了c/c++最基本最重要,也是一些软件开发公司笔试的依据。本文转载自IT网it求职笔试真题库网。
作者:不祥 oases2008张贴于2005-01-01 00:00:00.0,共阅读1331次,回复0
堆和栈的区别
 
一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后有系统释放 4、文字常量区 —常量字符串就是放在这里的。 程序结束后由系统释放5、程序代码区—存放函数体的二进制代码。二、例子程序 这是一个前辈写的,非常详细 //main.cpp int a = 0; 全局初始化区 char *p1; 全局未初始化区 main() { int b; 栈 char s[] = "abc"; 栈 char *p2; 栈 char *p3 = "123456"; 123456\0在常量区,p3在栈上。 static int c =0; 全局(静态)初始化区 p1 = (char *)malloc(10); p2 = (char *)malloc(20); 分配得来得10和20字节的区域就在堆区。 strcpy ...
作者:不祥 oases2008张贴于2005-01-01 00:00:00.0,共阅读1304次,回复0
程序员陷阱题
 
程序员陷阱题本文转载自IT网it求职笔试真题库网。
作者:不祥 oases2008张贴于2005-01-01 00:00:00.0,共阅读1080次,回复0
linux中string库函数的实现,笔试时常考
 
/** linux/lib/string.c** Copyright (C) 1991, 1992 Linus Torvalds*//** stupid library routines.. The optimized versions should generally be found* as inline code in <asm-xx/string.h>** These are buggy as well..** * Fri Jun 25 1999, Ingo Oeser <ioe@informatik.tu-chemnitz.de>* - Added strsep() which will replace strtok() soon (because strsep() is* reentrant and should be faster). Use only strsep() in new code, please.** * Sat Feb 09 2002, Jason Thomas <jason@topic.com.au>,* Matthew Hawkins <matt@mh.dropbear.id.au>* - Kissed strtok() goodbye*/#include <linux/types.h>#inc ...
作者:不祥 oases2008张贴于2005-01-01 00:00:00.0,共阅读1756次,回复0
判断一个字符串是不是回文
 
int IsReverseStr(char *aStr){ int i,j; int found=1; if(aStr==NULL) return -1; j=strlen(aStr); for(i=0;i<j/2;i++) if(*(aStr+i)!=*(aStr+j-i-1)) { found=0; break; } return found;} [ 本帖最后由 oases2008 于 2007-2-3 19:34 编辑 ]本文转载自IT网it求职笔试真题库网。
作者:不祥 oases2008张贴于2005-01-01 00:00:00.0,共阅读1288次,回复0
基础理论的笔试真题,常考
 
1. static有什么用途?(请至少说明两种)1.限制变量的作用域2.设置变量的存储域2. 引用与指针有什么区别?1) 引用必须被初始化,指针不必。2) 引用初始化以后不能被改变,指针可以改变所指的对象。2) 不存在指向空值的引用,但是存在指向空值的指针。3. 描述实时系统的基本特性在特定时间内完成特定的任务,实时性与可靠性4. 全局变量和局部变量在内存中是否有区别?如果有,是什么区别?全局变量储存在静态数据库,局部变量在堆栈5. 什么是平衡二叉树?左右子树都是平衡二叉树 且左右子树的深度差值的绝对值不大于16. 堆栈溢出一般是由什么原因导致的?没有回收垃圾资源7. 什么函数不能声明为虚函数?constructor8. 冒泡排序算法的时间复杂度是什么?O(n^2)9. 写出float x 与“零值”比较的if语句。if(x>0.000001&&x<-0.000001)10. Internet采用哪种网络协议?该协议的主要层次结构?tcp/ip 应用层/传输层/网络层/数据链路层/物理层11. Internet物理地址和IP地址转换采用什么协议?ARP (Address Resolution Protocol)(地址解析?f?h)12.IP地址的编码分为哪俩部分?IP地址由两部分组成,网络号和主机号。不过是要和“子网掩码”按位与上 ...
作者:不祥 oases2008张贴于2005-01-01 00:00:00.0,共阅读1243次,回复0
C/C++笔试小结
 
1.void *p=malloc(100);sizeof(p)=4;---------------------指针的字节数,而不是指针指向的内容容量2. void Func(char str[100]){sizeof(str)=4;}--------------------数组作为函数的参数进行传递时,该数组自动退化为同类型的指针3.char str[100];sizeof(str)=100;--------------------不是函数的参数时4.char str[]="hello";char *p=str;int n=10;sizeof(str)=6;sizeof(p)=4;sizeof(n)=2;--------------------参考上面的5.#define A 3#define B 4#define C A+B#define s(x) x*xs(c)=A+B*A+B=3+4*3+4=19;-------------------宏展开只是简单的字符串替换6.一组碰到最多的题,至少4次笔试的题都有它,搞得我郁闷啊可参见林锐的《C/C++高质量编程》,很详细的解答了下面的题(1)void GetMemory(char *p, int num){ p = (char *)malloc(sizeof(char) * num);} void Test(void){ ...
作者:不祥 oases2008张贴于2005-01-01 00:00:00.0,共阅读1449次,回复0
Linux守护进程的编程方法
 
其实守护进程编程也没有什么难的,你只要掌握了一般的步骤就行了,而且 以后就可以将原来的那些程序块照搬过来。 下面是一篇文章,我想已经说得很清楚了,你自己好好看看吧。 ----守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且 周期性地执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进 程。Linux的大多数服务器就是用守护进程实现的。比如,Internet服务器inetd ,Web服务器httpd等。同时,守护进程完成许多系统任务。比如,作业规划进程 crond,打印进程lpd等。 ----守护进程的编程本身并不复杂,复杂的是各种版本的Unix的实现机制不尽相 同,造成不同Unix环境下守护进程的编程规则并不一致。这需要读者注意,照搬 某些书上的规则(特别是BSD4.3和低版本的SystemV)到Linux会出现错误的。下 面将全面介绍Linux下守护进程的编程要点并给出详细实例。 ----一.守护进程及其特性 ----守护进程最重要的特性是后台运行。在这一点上DOS下的常驻内存程序TSR与 之相似。其次,守护进程必须与其运行前的环境隔离开来。这些环境包括未关闭 的文件描述符,控制终端,会话和进程组,工作目录以及文件创建掩模等。这些 环境通常是守护进程从执行它的父进程(特别是shell)中继承下来的。最后,守 护进程的启动方式有其特殊之处。它可以 ...
作者:不祥 oases2008张贴于2005-01-01 00:00:00.0,共阅读1324次,回复0
如何判断一段程序是由C 编译程序还是由C++编译程序编译的?
 
答案:#ifdef __cplusplus cout<<"c++";#else cout<<"c";#endif本文转载自IT网it求职笔试真题库网。
作者:不祥 oases2008张贴于2005-01-01 00:00:00.0,共阅读1798次,回复0
c/ c++基本概念总结,笔试必考
 
static用法小结 static关键字是C, C++中都存在的关键字, 它主要有三种使用方式, 其中前两种只指在C语言中使用, 第三种在C++中使用(C,C++中具体细微操作不尽相同, 本文以C++为准).(1)局部静态变量(2)外部静态变量/函数(3)静态数据成员/成员函数下面就这三种使用方式及注意事项分别说明一、局部静态变量在C/C++中, 局部变量按照存储形式可分为三种auto, static, register(谭浩强, 第174-175页)与auto类型(普通)局部变量相比, static局部变量有三点不同1. 存储空间分配不同auto类型分配在栈上, 属于动态存储类别, 占动态存储区空间, 函数调用结束后自动释放, 而static分配在静态存储区, 在程序整个运行期间都不释放. 两者之间的作用域相同, 但生存期不同.2. static局部变量在所处模块在初次运行时进行初始化工作, 且只操作一次3. 对于局部静态变量, 如果不赋初值, 编译期会自动赋初值0或空字符, 而auto类型的初值是不确定的. (对于C++中的class对象例外, class的对象实例如果不初始化, 则会自动调用默认构造函数, 不管是否是static类型)特点: static局部变量的”记忆性”与生存期的”全局性”所谓”记忆性”是指在两次函数调用时, 在第二次调用进入时, 能保持第一次调用退出时的 ...
作者:不祥 oases2008张贴于2005-01-01 00:00:00.0,共阅读1885次,回复0
文件中有一组整数,要求排序后输出到另一个文件中
 
答案:#i nclude<iostream>#i nclude<fstream>using namespace std;void Order(vector<int>& data) //bubble sort{ int count = data.size() ; int tag = false ; // 设置是否需要继续冒泡的标志位 for ( int i = 0 ; i < count ; i++) { for ( int j = 0 ; j < count - i - 1 ; j++) { if ( data[j] > data[j+1]) { tag = true ; int temp = data[j] ; data[j] = data[j+1] ; data[j+1] = temp ; } } if ( !tag ) break ; }}void main( void ){ vector<int>data; ifstream in("c:\\data.txt"); if ( !in) ...
作者:不祥 oases2008张贴于2005-01-01 00:00:00.0,共阅读1295次,回复0
以下三条输出语句分别输出什么?
 
char str1[] = "abc";char str2[] = "abc";const char str3[] = "abc"; const char str4[] = "abc"; const char* str5 = "abc";const char* str6 = "abc";cout << boolalpha << ( str1==str2 ) << endl; // 输出什么?cout << boolalpha << ( str3==str4 ) << endl; // 输出什么?cout << boolalpha << ( str5==str6 ) << endl; // 输出什么? 答:分别输出false,false,true。str1和str2都是字符数组,每个都有其自己的存储区,它们的值则是各存储区首地址,不等;str3和str4同上,只是按const语义,它们所指向的数据区不能修改。str5和str6并非数组而是字符指针,并不分配存储区,其后的“abc”以常量形式存于静态数据区,而它们自己仅是指向该区首地址的指针,相等。本文转载自IT网it求职笔试真题库网。
作者:不祥 oases2008张贴于2005-01-01 00:00:00.0,共阅读1333次,回复0
编写字符串拷备函数
 
har *strcpy(char *strDest, const char *strSrc){ if ( strDest == NULL || strSrc == NULL) return NULL ; if ( strDest == strSrc) return strDest ; char *tempptr = strDest ; while( (*strDest++ = *strSrc++) != ‘\0’); return tempptr ;}本文转载自IT网it求职笔试真题库网。
作者:不祥 oases2008张贴于2005-01-01 00:00:00.0,共阅读1085次,回复0
有关引用类型知识点的总结
 
2. 什么是“引用”?申明和使用“引用”要注意哪些问题?答:引用就是某个目标变量的“别名”(alias),对应用的操作与对变量直接操作效果完全相同。申明一个引用的时候,切记要对其进行初始化。引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,不能再把该引用名作为其他变量名的别名。声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因此引用本身不占存储单元,系统也不给引用分配存储单元。不能建立数组的引用。3. 将“引用”作为函数参数有哪些特点?(1)传递引用给函数与传递指针的效果是一样的。这时,被调函数的形参就成为原来主调函数中的实参变量或对象的一个别名来使用,所以在被调函数中对形参变量的操作就是对其相应的目标对象(在主调函数中)的操作。(2)使用引用传递函数的参数,在内存中并没有产生实参的副本,它是直接对实参操作;而使用一般变量传递函数的参数,当发生函数调用时,需要给形参分配存储单元,形参变量是实参变量的副本;如果传递的是对象,还将调用拷贝构造函数。因此,当参数传递的数据较大时,用引用比用一般变量传递参数的效率和所占空间都好。(3)使用指针作为函数的参数虽然也能达到与使用引用的效果,但是,在被调函数中同样要给形参分配存储单元,且需要重复使用"*指针变量名"的形式进行运算,这很容易产生错误且程序的阅读性较差;另一方面,在 ...
作者:不祥 oases2008张贴于2005-01-01 00:00:00.0,共阅读1259次,回复0
简述数组与指针的区别?
 
数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。指针可以随时指向任意类型的内存块。(1)修改内容上的差别char a[] = “hello”;a[0] = ‘X’;char *p = “world”; // 注意p 指向常量字符串p[0] = ‘X’; // 编译器不能发现该错误,运行时错误(2) 用运算符sizeof 可以计算出数组的容量(字节数)。sizeof(p),p 为指针得到的是一个指针变量的字节数,而不是p 所指的内存容量。C++/C 语言没有办法知道指针所指的内存容量,除非在申请内存时记住它。注意当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针。char a[] = "hello world";char *p = a;cout<< sizeof(a) << endl; // 12 字节cout<< sizeof(p) << endl; // 4 字节计算数组和指针的内存容量void Func(char a[100]){cout<< sizeof(a) << endl; // 4 字节而不是100 字节}本文转载自IT网it求职笔试真题库网。
作者:不祥 oases2008张贴于2005-01-01 00:00:00.0,共阅读1516次,回复0
类成员函数的重载、覆盖和隐藏区别?
 
a.成员函数被重载的特征:(1)相同的范围(在同一个类中);(2)函数名字相同;(3)参数不同;(4)virtual 关键字可有可无。b.覆盖是指派生类函数覆盖基类函数,特征是:(1)不同的范围(分别位于派生类与基类);(2)函数名字相同;(3)参数相同;(4)基类函数必须有virtual 关键字。c.“隐藏”是指派生类的函数屏蔽了与其同名的基类函数,规则如下:(1)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual关键字,基类的函数将被隐藏(注意别与重载混淆)。(2)如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual 关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)本文转载自IT网it求职笔试真题库网。
作者:不祥 oases2008张贴于2005-01-01 00:00:00.0,共阅读1331次,回复0
extern“C”有什么作用?
 
Extern “C”是由C++提供的一个连接交换指定符号,用于告诉C++这段代码是C函数。这是因为C++编译后库中函数名会变得很长,与C生成的不一致,造成C++不能直接调用C函数,加上extren “c”后,C++就能直接调用C函数了。Extern “C”主要使用正规DLL函数的引用和导出 和 在C++包含C函数或C头文件时使用。使用时在前面加上extern “c” 关键字即可本文转载自IT网it求职笔试真题库网。
作者:不祥 oases2008张贴于2005-01-01 00:00:00.0,共阅读2122次,回复0

页次: 4/10页 记录总数191 9 7 [ 1 2 3 4 5 6 7 8 9 10 ] 8 :