博文

[置顶] [C/C++]编程入门必做的题(76个 转)(2006-07-24 21:51:00)

摘要:编程入门必做的题(76 个) 很久没去论坛逛了,一进去就看到这个了,看题目,本来以为是些简单的题目,本来不想点的,不过后来还是忍不住点了看了,  一看才知道,原来不是些简单的题目,有很多都是些经典的题目。。。   诶,偶好久没有动过C/C++了,现在就来锻炼一下,坚持一天做一个,看会不会做。。。。。 第一,二题解题思路......

阅读全文(12611) | 评论:1

[面试题]C/C++应聘常见面试试题深入剖析(转)(2006-11-25 21:37:00)

摘要:试题:编写一个函数,作用是把一个char组成的字符串循环右移n个。比如原来是“abcdefghi”如果n=2,移位后应该是“hiabcdefgh”   函数头是这样的: //pStr是指向以'\0'结尾的字符串的指针//steps是要求移动的nvoid LoopMove ( char * pStr, int steps ){ //请填充...}  解答:  正确解答1: void LoopMove ( char *pStr, int steps ){ int n = strlen( pStr ) - steps; char tmp[MAX_LEN];  strcpy ( tmp, pStr + n );  strcpy ( tmp + steps, pStr);  *( tmp + strlen ( pStr ) ) = '\0'; strcpy( pStr, tmp );}  正确解答2: void LoopMove ( char *pStr, int steps ){ int n = strlen( pStr ) - steps; char tmp[MAX_LEN];  memcpy( tmp, pStr + n, steps );  memcpy(pStr + steps, pStr, n );  memcpy(pStr, tmp, steps ); }  剖析:  这个试题主要考查面试者对标准库函数的熟练程度,在需要的时候引用库函数可以很大程度上简化程序编写的工作量。  最频繁被使用的库函数包括:  (1) strcpy  (2) memcpy  (3) memset  试题6:已知WAV文件格式如下表,打开一个WAV文件,以适当的数据结构组织WAV文件头并解析WAV格式的各项信息。  WAVE文件格式说明表 偏移地址 字节数 数据类型 内 容 文件头 00H 4 Char "RIFF"标志 04H 4 int32 文件长度 08H 4 Char "WAVE"标志 0CH 4 Char "fmt"标志 10H 4   过渡字节(不定) 14H 2 int16 格式类别 16H 2 int1......

阅读全文(12862) | 评论:0

[面试题]2005年11月华为在南邮的招聘笔试题(转)(2006-11-25 21:32:00)

摘要:1.写出判断ABCD四个表达式的是否正确, 若正确, 写出经过表达式中 a的值(3分)int a = 4;(A)a += (a++); (B) a += (++a) ;(C) (a++) += a;(D) (++a) += (a++);a = ?答:C错误,左侧不是一个有效变量,不能赋值,可改为(++a) += a;改后答案依次为9,10,10,112.某32位系统下, C++程序,请计算sizeof 的值(5分).char str[] = “www.ibegroup.com”char *p = str ;int n = 10;请计算sizeof (str ) = ?(1)sizeof ( p ) = ?(2)sizeof ( n ) = ?(3)void Foo ( char str[100]){请计算sizeof( str ) = ?(4)}void *p = malloc( 100 );请计算sizeof ( p ) = ?(5)答:(1)17 (2)4 (3) 4 (4)4 (5)43. 回答下面的问题. (4分)(1).头文件中的 ifndef/define/endif 干什么用?预处理答:防止头文件被重复引用(2). #i nclude 和 #i nclude “filename.h” 有什么区别?答:前者用来包含开发环境提供的库头文件,后者用来包含自己编写的头文件。(3).在C++ 程序中调用被 C 编译器编译后的函数,为什么要加 extern “C”声明?答:函数和变量被C++编译后在符号库中的名字与C语言的不同,被extern "C"修饰的变量和函数是按照C语言方式编译和连接的。由于编译后的名字不同,C++程序不能直接调用C 函数。C++提供了一个C 连接交换指定符号extern“C”来解决这个问题。(4). switch()中不允许的数据类型是?答:实型4. 回答下面的问题(6分)(1).Void GetMemory(char **p, int num){*p = (char *)malloc(num);}void Test(void){char *str = NULL;GetMemory(&str, 100);strcpy(str, "hello");printf(str);}请问运行Test 函数会有什么样的结果?答:输出“hello......

阅读全文(11300) | 评论:0

[面试题]C/C++面试题大汇总(转)(2006-11-25 21:31:00)

摘要:最近因为找工作,收集了很多C语言方面方面的面试题以及答案。现在新工作搞定了,决定把这些资料发出来,送给有需要的朋友,免得再象我一样到处搜寻,实在辛苦。 发布之前先申明两点:    1 所有资料来自网络(主要是CSDN),本人只是收集和转发。    2 所有问题解答(尤其是代码)只是参考,不保证正确。 先发基本问题,再发编程问题.......... 想成为嵌入式程序员应知道的0x10个基本问题:预处理器(Preprocessor) 1 . 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)         #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL我在这想看到几件事情:1) #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)2)懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。3) 意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。4) 如果你在你的表达式中用到UL(表示无符号长整型),那么你有了一个好的起点。记住,第一印象很重要。 2 . 写一个"标准"宏MIN ,这个宏输入两个参数并返回较小的一个。        #define MIN(A,B) ((A) <= (B) ? (A) : (B)) 这个测试是为下面的目的而设的:1) 标识#define在宏中应用的基本知识。这是很重要的。因为在  嵌入(inline)操作符 变为标准C的一部分之前,宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能达到要求的性能,嵌入代码经常是必须的方法。2)三重条件操作符的知识。这个操作符存在C语言中的原因是它使得编译器能产生比if-then-else更优化的代码,了解这个用法是很重要的。3) 懂得在宏中小心地把参数用括号括起来4) 我也用这个问题开始讨论宏的副作用,例如:当你写下面的代码时会发生什么事? &......

阅读全文(15334) | 评论:0

[C]C实现定时删除文件(2006-08-25 11:47:00)

摘要:#include "stdio.h"#include "string.h"#include "time.h"#include "stdlib.h" int main( void ){ char *strTime; time_t myTime; // long型时间 bool isDel;  time( &myTime );   // 取得时间 strTime = ctime( &myTime ); // 转换为字符串 printf( "%s", strTime ); // 显示时间 isDel = false; while( !isDel )    // 程序一直运行,直到删除了文件才结束次程序。{          /* 如果为18:00点则删除文件 */          if ( ( strTime[11] == '1' ) && ( strTime[12] == '8' ) && ( strTime[14] == '0' ) && ( strTime[15] == '0' ) )          {                  system( "type aaa.txt" ); // 显示文件的内容                  system( "del aaa.txt" );   ......

阅读全文(15077) | 评论:6

[C++]C++操作符重载实现复数加乘(2006-08-24 19:42:00)

摘要:用C++的操作符重载实现了复数的加乘。。。 #include "iostream.h" class Complex // 声明复数类{ private:   double real; // 实部  double image; // 虚部 public:  Complex ( double r, double i ); // 初始化  ~Complex( void );    // 销毁  void   setReal ( double r ); // 设置实数  void   setImage( double i ); // 设置虚数  double getReal ( void );  // 获得实数  double getImage( void );  // 获得虚数  void   displayComplex( void ); // 显示实数  const  Complex operator +( Complex C );  // 复数相加  const  Complex operator *( Complex &C ); // 复数相乘}; int main( void ){ Complex c1( 2, 3 ), c2( 0, 1 ), c3( 2, -1 ), c4( 0, 0 );  c1.displayComplex( ); cout << endl; c2.displayComplex( ); cout << endl; c3.displayComplex( ); cout << endl; c4.displ......

阅读全文(16040) | 评论:0

[C++]用VC++来设置获得注册表的键值(问题解决)(2006-08-23 14:20:00)

摘要:下面这个是基于MFC的基本对话写的。。  演示设置注册表的3中类型的值和获得注册表的3中类型的值。。 分别用RegSetValueEx()来设置,RegQueryValueEx()函数来获得。   void CUserRegDlg::OnOK() { // TODO: Add extra validation here  CString str = "hello reg"; DWORD regd = 100; BYTE bValues[] = { 0x11, 0x12, 0x55 };  BYTE Vals[100]; DWORD lenIt = 100; HKEY hk;  // 打开注册表如果没有则创建, 返回注册表句柄于hk  if ( ::RegCreateKey( HKEY_LOCAL_MACHINE, "SOFTWARE\\Test\\", &hk ) == ERROR_SUCCESS ) {  AfxMessageBox( "打开注册表" ); }  // 保存参数到注册表 try {  /*   RegSetValueEx( 根键句柄, 值项名称, 保留参数补0即可, 数据类型, 所设置的数据, 数据长度 )  用来设置注册表键特定的值,如果数据不存在则创建它    */  /* 保存字符值到注册表 */  if ( ::RegSetValueEx( hk, "Server", 0, REG_SZ, (LPBYTE)(LPCSTR)str, str.GetLength( ) +1 ) == ERROR_SUCCESS )  {   AfxMessageBox( "字符值参数保存成功" );  }    /* 保存双字节到注册表 */  if ( ::RegSetValueEx( h......

阅读全文(18079) | 评论:4

[编程思想]大道至简--流于形式的沟通(强烈推荐)(2006-08-14 00:48:00)

摘要:                               第4章  流于形式的沟通           “足下求速化之术,不于其人,乃以访愈,是所谓借听于聋,求道于盲。”                                                     ——唐·韩愈《答陈生书》 1.  客户不会用 C,难道就会用 UML 吗?             我们总是要先接触客户的,是的,如果不这样,我们将无法确知要做什么。              作为开发人员,可能更希望客户能学习或者精通 C语言,这样客户就知道开发人员正在做什么,以及有多么地勤劳。或者,这样的客户还能以 C 语言的方式告诉开发人员他们究竟想要什么。             然而要求客户学习 C 语言明显是自杀式的行为......

阅读全文(11725) | 评论:0

[编程理解]和同学谈的对编程的理解,请各位大哥指教(2006-08-13 17:07:00)

摘要:PS:今天下午和高中同学谈的对编程的理解,其中理解有什么错误的地方,请各位大哥指教下,也请大家发表下自己的看法。。。   先3ks 了。。          我学编程还差1个月就满1年了,在北大青鸟学软件技术。。          我同学在中南大学的二级学院学软件技术。。。   Without-one 22:03:03你们上课了吗 风飞 14:03:18上啊。。不过今天不要上。。   Without-one 22:05:14哦,这么快就上课了啊,曾海还在你那里吗 风飞 14:04:33曾海会邵阳了。。我没暑假的。。。   Without-one 22:06:06哦。你们没有暑假的吗 风飞 14:06:01没啊。 。一直上啊。。    555555   Without-one 22:07:45晕哦,是这样啊,那你们怎么放假的啊 风飞 14:07:30现在是1,2,4,6上课,每次上4节课。。其他时间在家自学。。   Without-one 22:09:09哦,那还不错啊,你们都学些什么啊,你们C++语言还没学完吗 风飞 14:08:26C++早就学完了。。不过学的不是很细。。  风飞 14:08:421个多月的时间就教完了C++   Without-one 22:10:01一概还可以吧那你们现在学什么罗 Without-one 22:10:25语言本身的内容就是不多啊 风飞 14:09:48学了C,VB,HTML,SQL2000, JAVA, ASP, C++, XML..现在在学Oracle.   风飞 14:10:15学的基本都会了,不过还没精通一门。。   Without-one 22:11:37都是只讲了语言语法而已啊?都学了这么多了哦,真好 风飞 14:11:35每门基本上都知道。。但还没精通一门啊。。以后我可能主要是学C++ 和 .NET   风飞 14:11:40你门呢。。......

阅读全文(10375) | 评论:7

[编程思想]大道至简--团队缺乏的不只是管理(强烈推荐) (2006-08-11 14:16:00)

摘要:                       第3章  团队缺乏的不只是管理              “言人三为众,虽难尽继,取其功尤高者一人继之,於名为众矣。”                            ——《汉书·高惠高后文功臣表序》颜师古注 1.  三个人的团队             《汉书》中说“言人三为众 ”,是指三个人就算得上是“众”了。这里的“众”应该理解成一个群体,亦或者说是一个团队。               团队是至少以三个人为规模的。这有其合理性。为什么呢?首先一个人算不得团队,那是个体。两个人则互相支撑,古文中“从”字是二人互立,就是这个意思。然而二人互立并不算团队,因为没有监督。三个人便可以构成团队,这样便有了团队的一些基本特性:主从、监督和责任。            一个人的开发行为可以成功,这取决于个人努力。大家熟知的 KV100、KV200 反病毒软件,最早就是王江民先生一个人做出来的。二人小组如果能相互支撑,那也是可以获得成功的,同样作为反病毒软件的 AV95 在 95 到97 年成功占据反病毒软件市场之隅,就是周辉和......

阅读全文(12142) | 评论:0