毛泽西 | C/C++ 程序设计员应聘常见面试试题深入剖析

Size: px
Start display at page:

Download "毛泽西 | C/C++ 程序设计员应聘常见面试试题深入剖析"

Transcription

1 C/C++ 程序设计员应聘常见面试试题深入剖析 silver6 25 九月, :07 本文的写作目的并不在于提供 C/C++ 程序员求职面试指导, 而旨在从技术上分析面试题的内涵 文中的大多数面试题来自各大论坛, 部分试题解答也参考了网友的意见 许多面试题看似简单, 却需要深厚的基本功才能给出完美的解答 企业要求面试者写一个最简单的 strcpy 函数都可看出面试者在技术上究竟达到了怎样的程度, 我们能真正写好一个 strcpy 函数吗? 我们都觉得自己能, 可是我们写出的 strcpy 很可能只能拿到 10 分中的 2 分 读者可从本文看到 strcpy 函数从 2 分到 10 分解答的例子, 看看自己属于什么样的层次 此外, 还有一些面试题考查面试者敏捷的思维能力 分析这些面试题, 本身包含很强的趣味性 ; 而作为一名研发人员, 通过对这些面试题的深入剖析则可进一步增强自身的内功 2. 找错题 试题 1: void test1() char string[10]; char* str1 = " "; strcpy( string, str1 ); 试题 2: void test2() char string[10], str1[10]; int i; for(i=0; i<10; i++) str1[i] = 'a'; strcpy( string, str1 ); 试题 3: void test3(char* str1) char string[10]; if( strlen( str1 ) <= 10 ) strcpy( string, str1 ); 试题 1 字符串 str1 需要 11 个字节才能存放下 ( 包括末尾的 ), 而 string 只有 10 个字节的空间,strcpy 会导致数组越界 ; 对试题 2, 如果面试者指出字符数组 str1 不能在数组内结束可以给 3 分 ; 如果面试者指出 strcpy(string, str1) 调用使得从 str1 内存起复制到 string 内存起所复制的字节数具有不确定性可以给 7 分, 在此基础上指出库函数 strcpy 工作方式的给 10 分 ; 对试题 3,if(strlen(str1) <= 10) 应改为 if(strlen(str1) < 10), 因为 strlen 的结果未统计 所占用的 1 个字节 考查对基本功的掌握 : 第 1/12 页 ) :55:07 上午

2 (1) 字符串以 结尾 ; (2) 对数组越界把握的敏感度 ; (3) 库函数 strcpy 的工作方式, 如果编写一个标准 strcpy 函数的总分值为 10, 下面给出几个不同得分的答案 : 2 分 void strcpy( char *strdest, char *strsrc ) while( (*strdest++ = * strsrc++)!= ); 4 分 void strcpy( char *strdest, const char *strsrc ) // 将源字符串加 const, 表明其为输入参数, 加 2 分 while( (*strdest++ = * strsrc++)!= ); 7 分 void strcpy(char *strdest, const char *strsrc) // 对源地址和目的地址加非 0 断言, 加 3 分 assert( (strdest!= NULL) && (strsrc!= NULL) ); while( (*strdest++ = * strsrc++)!= ); 10 分 // 为了实现链式操作, 将目的地址返回, 加 3 分! char * strcpy( char *strdest, const char *strsrc ) assert( (strdest!= NULL) && (strsrc!= NULL) ); char *address = strdest; while( (*strdest++ = * strsrc++)!= ); return address; 从 2 分到 10 分的几个答案我们可以清楚的看到, 小小的 strcpy 竟然暗藏着这么多玄机, 真不是盖的! 需要多么扎实的基本功才能写一个完美的 strcpy 啊! (4) 对 strlen 的掌握, 它没有包括字符串末尾的 '' 读者看了不同分值的 strcpy 版本, 应该也可以写出一个 10 分的 strlen 函数了, 完美的版本为 : int strlen( const char *str ) // 输入参数 const assert( strt!= NULL ); // 断言字符串地址非 0 int len; while( (*str++)!= '' ) len++; return len; 试题 4: 第 2/12 页 ) :55:07 上午

3 void GetMemory( char *p ) p = (char *) malloc( 100 ); void Test( void ) char *str = NULL; GetMemory( str ); strcpy( str, "hello world" ); printf( str ); 试题 5: char *GetMemory( void ) char p[] = "hello world"; return p; void Test( void ) char *str = NULL; str = GetMemory(); printf( str ); 试题 6: void GetMemory( char **p, int num ) *p = (char *) malloc( num ); void Test( void ) char *str = NULL; GetMemory( &str, 100 ); strcpy( str, "hello" ); printf( str ); 试题 7: void Test( void ) char *str = (char *) malloc( 100 ); strcpy( str, "hello" ); free( str );... // 省略的其它语句 试题 4 传入中 GetMemory( char *p ) 函数的形参为字符串指针, 在函数内部修改形参并不能真正的改变传入形参的值, 执行完 第 3/12 页 ) :55:07 上午

4 char *str = NULL; GetMemory( str ); 后的 str 仍然为 NULL; 试题 5 中 char p[] = "hello world"; return p; 的 p[] 数组为函数内的局部自动变量, 在函数返回后, 内存已经被释放 这是许多程序员常犯的错误, 其根源在于不理解变量的生存期 试题 6 的 GetMemory 避免了试题 4 的问题, 传入 GetMemory 的参数为字符串指针的指针, 但是在 GetMemory 中执行申请内存及赋值语句 *p = (char *) malloc( num ); 后未判断内存是否申请成功, 应加上 : if ( *p == NULL )...// 进行申请内存失败处理 试题 7 存在与试题 6 同样的问题, 在执行 char *str = (char *) malloc(100); 后未进行内存是否申请成功的判断 ; 另外, 在 free(str) 后未置 str 为空, 导致可能变成一个 野 指针, 应加上 : str = NULL; 试题 6 的 Test 函数中也未对 malloc 的内存进行释放 试题 4~7 考查面试者对内存操作的理解程度, 基本功扎实的面试者一般都能正确的回答其中 50~60 的错误 但是要完全解答正确, 却也绝非易事 对内存操作的考查主要集中在 : (1) 指针的理解 ; (2) 变量的生存期及作用范围 ; (3) 良好的动态内存申请和释放习惯 再看看下面的一段程序有什么错误 : swap( int* p1,int* p2 ) int *p; *p = *p1; *p1 = *p2; *p2 = *p; 在 swap 函数中,p 是一个 野 指针, 有可能指向系统区, 导致程序运行的崩溃 在 VC++ 中 DEBUG 运行时提示错误 Access Violation 该程序应该改为 : 第 4/12 页 ) :55:07 上午

5 swap( int* p1,int* p2 ) int p; p = *p1; *p1 = *p2; *p2 = p; 3. 内功题 试题 1: 分别给出 BOOL,int,float, 指针变量与 零值 比较的 if 语句 ( 假设变量名为 var) BOOL 型变量 :if(!var) int 型变量 : if(var==0) float 型变量 : const float EPSINON = ; if ((x >= - EPSINON) && (x <= EPSINON) 指针变量 : if(var==null) 考查对 0 值判断的 内功,BOOL 型变量的 0 判断完全可以写成 if(var==0), 而 int 型变量也可以写成 if(!var), 指针变量的判断也可以写成 if(!var), 上述写法虽然程序都能正确运行, 但是未能清晰地表达程序的意思 一般的, 如果想让 if 判断一个变量的 真 假, 应直接使用 if(var) if(!var), 表明其为 逻辑 判断 ; 如果用 if 判断一个数值型变量 (short int long 等 ), 应该用 if(var==0), 表明是与 0 进行 数值 上的比较 ; 而判断指针则适宜用 if(var==null), 这是一种很好的编程习惯 浮点型变量并不精确, 所以不可将 float 变量用 == 或!= 与数字比较, 应该设法转化成 >= 或 <= 形式 如果写成 if (x == 0.0), 则判为错, 得 0 分 试题 2: 以下为 Windows NT 下的 32 位 C++ 程序, 请计算 sizeof 的值 void Func ( char str[100] ) sizeof( str ) =? void *p = malloc( 100 ); sizeof ( p ) =? sizeof( str ) = 4 sizeof ( p ) = 4 Func ( char str[100] ) 函数中数组名作为函数形参时, 在函数体内, 数组名失去了本身的内涵, 仅仅只是一个指针 ; 在失去其内涵的同时, 它还失去了其常量特性, 可以作自增 自减等操作, 可以被修改 数组名的本质如下 : (1) 数组名指代一种数据结构, 这种数据结构就是数组 ; 例如 : 第 5/12 页 ) :55:07 上午

6 char str[10]; cout << sizeof(str) << endl; 输出结果为 10,str 指代数据结构 char[10] (2) 数组名可以转换为指向其指代实体的指针, 而且是一个指针常量, 不能作自增 自减等操作, 不能被修改 ; char str[10]; str++; // 编译出错, 提示 str 不是左值 (3) 数组名作为函数形参时, 沦为普通指针 Windows NT 32 位平台下, 指针的长度 ( 占用内存的大小 ) 为 4 字节, 故 sizeof ( str ) sizeof ( p ) 都为 4 试题 3: 写一个 标准 宏 MIN, 这个宏输入两个参数并返回较小的一个 另外, 当你写下面的代码时会发生什么事? least = MIN(*p++, b); #define MIN(A,B) ((A) <= (B)? (A) : (B)) MIN(*p++, b) 会产生宏的副作用 这个面试题主要考查面试者对宏定义的使用, 宏定义可以实现类似于函数的功能, 但是它终归不是函数, 而宏定义中括弧中的 参数 也不是真的参数, 在宏展开的时候对 参数 进行的是一对一的替换 程序员对宏定义的使用要非常小心, 特别要注意两个问题 : (1) 谨慎地将宏定义中的 参数 和整个宏用用括弧括起来 所以, 严格地讲, 下述 #define MIN(A,B) (A) <= (B)? (A) : (B) #define MIN(A,B) (A <= B? A : B ) 都应判 0 分 ; (2) 防止宏的副作用 宏定义 #define MIN(A,B) ((A) <= (B)? (A) : (B)) 对 MIN(*p++, b) 的作用结果是 : ((*p++) <= (b)? (*p++) : (*p++)) 这个表达式会产生副作用, 指针 p 会作三次 ++ 自增操作 除此之外, 另一个应该判 0 分的解答是 : #define MIN(A,B) ((A) <= (B)? (A) : (B)); 这个解答在宏定义的后面加 ;, 显示编写者对宏的概念模糊不清, 只能被无情地判 0 分并被面试官淘汰 试题 4: 为什么标准头文件都有类似以下的结构? 第 6/12 页 ) :55:07 上午

7 #ifndef INCvxWorksh #define INCvxWorksh #ifdef cplusplus extern "C" #endif /*...*/ #ifdef cplusplus #endif #endif /* INCvxWorksh */ 头文件中的编译宏 #ifndef #define #endif INCvxWorksh INCvxWorksh 的作用是防止被重复引用 作为一种面向对象的语言,C++ 支持函数重载, 而过程式语言 C 则不支持 函数被 C ++ 编译后在 symbol 库中的名字与 C 语言的不同 例如, 假设某个函数的原型为 : void foo(int x, int y); 该函数被 C 编译器编译后在 symbol 库中的名字为 _foo, 而 C++ 编译器则会产生像 _foo_int_int 之类的名字 _foo_int_int 这样的名字包含了函数名和函数参数数量及类型信息,C++ 就是考这种机制来实现函数重载的 为了实现 C 和 C++ 的混合编程,C++ 提供了 C 连接交换指定符号 extern "C" 来解决名字匹配问题, 函数声明前加上 extern "C" 后, 则编译器就会按照 C 语言的方式将该函数编译为 _foo, 这样 C 语言中就可以调用 C++ 的函数了 试题 5: 编写一个函数, 作用是把一个 char 组成的字符串循环右移 n 个 比如原来是 abcdefghi 如果 n=2, 移位后应该是 hiabcdefgh 函数头是这样的 : //pstr 是指向以 '' 结尾的字符串的指针 //steps 是要求移动的 n void 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 ) ) = ''; strcpy( pstr, tmp ); 正确解答 2: 第 7/12 页 ) :55:07 上午

8 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 int16 通道数 18H 2 int16 采样率 ( 每秒样本数 ), 表示每个通道的播放速度 1CH 4 int32 波形音频数据传送速率 20H 2 int16 数据块的调整数 ( 按字节算的 ) 22H 2 每样本的数据位数 24H 4 Char 数据标记符 "data" 28H 4 int32 语音数据的长度 将 WAV 文件格式定义为结构体 WAVEFORMAT: typedef struct tagwaveformat char criffflag[4]; UIN32 nfilelen; char cwaveflag[4]; char cfmtflag[4]; char ctransition[4]; UIN16 nformattag ; UIN16 nchannels; UIN16 nsamplespersec; UIN32 navgbytespersec; UIN16 nblockalign; UIN16 nbitnumpersample; 第 8/12 页 ) :55:08 上午

9 char cdataflag[4]; UIN16 naudiolength; WAVEFORMAT; 假设 WAV 文件内容读出后存放在指针 buffer 开始的内存单元内, 则分析文件格式的代码很简单, 为 : WAVEFORMAT waveformat; memcpy( &waveformat, buffer,sizeof( WAVEFORMAT ) ); 直接通过访问 waveformat 的成员, 就可以获得特定 WAV 文件的各项格式信息 试题 6 考查面试者组织数据结构的能力, 有经验的程序设计者将属于一个整体的数据成员组织为一个结构体, 利用指针类型转换, 可以将 memcpy memset 等函数直接用于结构体地址, 进行结构体的整体操作 透过这个题可以看出面试者的程序设计经验是否丰富 试题 7: 编写类 String 的构造函数 析构函数和赋值函数, 已知类 String 的原型为 : class String public: String(const char *str = NULL); // 普通构造函数 String(const String &other); // 拷贝构造函数 ~ String(void); // 析构函数 String & operate =(const String &other); // 赋值函数 private: char *m_data; // 用于保存字符串 ; // 普通构造函数 String::String(const char *str) if(str==null) m_data = new char[1]; // 得分点 : 对空字符串自动申请存放结束标志 '' 的空 // 加分点 : 对 m_data 加 NULL 判断 *m_data = ''; else int length = strlen(str); m_data = new char[length+1]; // 若能加 NULL 判断则更好 strcpy(m_data, str); // String 的析构函数 String::~String(void) delete [] m_data; // 或 delete m_data; 第 9/12 页 ) :55:08 上午

10 // 拷贝构造函数 String::String(const String &other) 数为 const 型 int length = strlen(other.m_data); m_data = new char[length+1]; m_data 加 NULL 判断 strcpy(m_data, other.m_data); // 得分点 : 输入参 // 加分点 : 对 // 赋值函数 String & String::operate =(const String &other) // 得分点 : 输入参数为 const 型 if(this == &other) // 得分点 : 检查自赋值 return *this; delete [] m_data; // 得分点 : 释放原有的内存资源 int length = strlen( other.m_data ); m_data = new char[length+1]; // 加分点 : 对 m_data 加 NULL 判断 strcpy( m_data, other.m_data ); 用 return *this; // 得分点 : 返回本对象的引 能够准确无误地编写出 String 类的构造函数 拷贝构造函数 赋值函数和析构函数的面试者至少已经具备了 C++ 基本功的 60% 以上! 在这个类中包括了指针类成员变量 m_data, 当类中包括指针类成员变量时, 一定要重载其拷贝构造函数 赋值函数和析构函数, 这既是对 C++ 程序员的基本要求, 也是 Effective C++ 中特别强调的条款 仔细学习这个类, 特别注意加注释的得分点和加分点的意义, 这样就具备了 60% 以上的 C++ 基本功! 试题 8: 请说出 static 和 const 关键字尽可能多的作用 static 关键字至少有下列 n 个作用 : (1) 函数体内 static 变量的作用范围为该函数体, 不同于 auto 变量, 该变量的内存只被分配一次, 因此其值在下次调用时仍维持上次的值 ; (2) 在模块内的 static 全局变量可以被模块内所用函数访问, 但不能被模块外其它函数访问 ; (3) 在模块内的 static 函数只可被这一模块内的其它函数调用, 这个函数的使用范围被限制在声明它的模块内 ; (4) 在类中的 static 成员变量属于整个类所拥有, 对类的所有对象只有一份拷贝 ; (5) 在类中的 static 成员函数属于整个类所拥有, 这个函数不接收 this 指针, 因而只能访问类的 static 成员变量 const 关键字至少有下列 n 个作用 : (1) 欲阻止一个变量被改变, 可以使用 const 关键字 在定义该 const 变量时, 通常需要对它进行初始化, 因为以后就没有机会再去改变它了 ; (2) 对指针来说, 可以指定指针本身为 const, 也可以指定指针所指的数据为 const, 或二者同时指定为 const; (3) 在一个函数声明中,const 可以修饰形参, 表明它是一个输入参数, 在函数内 第 10/12 页 ) :55:08 上午

11 部不能改变其值 ; (4) 对于类的成员函数, 若指定其为 const 类型, 则表明其是一个常函数, 不能修改类的成员变量 ; (5) 对于类的成员函数, 有时候必须指定其返回值为 const 类型, 以使得其返回值不为 左值 例如 : const classa operator*(const classa& a1,const classa& a2); operator* 的返回结果必须是一个 const 对象 如果不是, 这样的变态代码也不会编译出错 : classa a, b, c; (a * b) = c; // 对 a*b 的结果赋值 操作 (a * b) = c 显然不符合编程者的初衷, 也没有任何意义 惊讶吗? 小小的 static 和 const 居然有这么多功能, 我们能回答几个? 如果只能回答 1~2 个, 那还真得闭关再好好修炼修炼 这个题可以考查面试者对程序设计知识的掌握程度是初级 中级还是比较深入, 没有一定的知识广度和深度, 不可能对这个问题给出全面的解答 大多数人只能回答出 static 和 const 关键字的部分功能 4. 技巧题 试题 1: 请写一个 C 函数, 若处理器是 Big_endian 的, 则返回 0; 若是 Little_endian 的, 则返回 1 int checkcpu() union w int a; char b; c; c.a = 1; return (c.b == 1); 嵌入式系统开发者应该对 Little-endian 和 Big-endian 模式非常了解 采用 Littleendian 模式的 CPU 对操作数的存放方式是从低字节到高字节, 而 Big-endian 模式对操作数的存放方式是从高字节到低字节 例如,16bit 宽的数 0x1234 在 Little- endian 模式 CPU 内存中的存放方式 ( 假设从地址 0x4000 开始存放 ) 为 : 内存地址 0x4000 0x4001 存放内容 0x34 0x12 而在 Big-endian 模式 CPU 内存中的存放方式则为 : 内存地址 0x4000 0x4001 存放内容 0x12 0x34 32bit 宽的数 0x 在 Little-endian 模式 CPU 内存中的存放方式 ( 假设从地址 0x4000 开始存放 ) 为 : 第 11/12 页 ) :55:08 上午

12 内存地址 0x4000 0x4001 0x4002 0x4003 存放内容 0x78 0x56 0x34 0x12 而在 Big-endian 模式 CPU 内存中的存放方式则为 : 内存地址 0x4000 0x4001 0x4002 0x4003 存放内容 0x12 0x34 0x56 0x78 联合体 union 的存放顺序是所有成员都从低地址开始存放, 面试者的解答利用该特性, 轻松地获得了 CPU 对内存采用 Little-endian 还是 Big-endian 模式读写 如果谁能当场给出这个解答, 那简直就是一个天才的程序员 试题 2: 写一个函数返回 n 的值 ( 假定结果不会超过长整型变量的范围 ) int Sum( int n ) return ( (long)1 + n) * n / 2; // 或 return (1l + n) * n / 2; 对于这个题, 只能说, 也许最简单的答案就是最好的答案 下面的解答, 或者基于下面的解答思路去优化, 不管怎么 折腾, 其效率也不可能与直接 return ( 1 l + n ) * n / 2 相比! int Sum( int n ) long sum = 0; for( int i=1; i<=n; i++ ) sum += i; return sum; 所以程序员们需要敏感地将数学等知识用在程序设计中 第 12/12 页 ) :55:08 上午

Microsoft PowerPoint - string_kruse [兼容模式]

Microsoft PowerPoint - string_kruse [兼容模式] Strings Strings in C not encapsulated Every C-string has type char *. Hence, a C-string references an address in memory, the first of a contiguous set of bytes that store the characters making up the string.

More information

新版 明解C++入門編

新版 明解C++入門編 511!... 43, 85!=... 42 "... 118 " "... 337 " "... 8, 290 #... 71 #... 413 #define... 128, 236, 413 #endif... 412 #ifndef... 412 #if... 412 #include... 6, 337 #undef... 413 %... 23, 27 %=... 97 &... 243,

More information

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 月 3 日 1 1 INPUTOUTPUT 1 InputOutput 题目描述 用 cin 输入你的姓名 ( 没有空格 ) 和年龄 ( 整数 ), 并用 cout 输出 输入输出符合以下范例 输入 master 999 输出 I am master, 999 years old. 注意 "," 后面有一个空格,"." 结束,

More information

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double

More information

CC213

CC213 : (Ken-Yi Lee), E-mail: feis.tw@gmail.com 49 [P.51] C/C++ [P.52] [P.53] [P.55] (int) [P.57] (float/double) [P.58] printf scanf [P.59] [P.61] ( / ) [P.62] (char) [P.65] : +-*/% [P.67] : = [P.68] : ,

More information

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d

More information

Microsoft PowerPoint - 8. 运算符重载 Operator Overloading.pptx

Microsoft PowerPoint - 8. 运算符重载 Operator Overloading.pptx 运算符重载 Operator Overloading class Point { public: ; double x_, y_; Why Operator Overloading? Point (double x =0, double y = 0):x_(x),y_(y) { int main(){ Point a(1., 2), b(3,4); Point c = a + b; return 0;

More information

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP:  ******************* * 关于 Java 测试试题 ****** ******************* * 关于 Java 测试试题 ******************* 問 1 运行下面的程序, 选出一个正确的运行结果 public class Sample { public static void main(string[] args) { int[] test = { 1, 2, 3, 4, 5 ; for(int i = 1 ; i System.out.print(test[i]);

More information

NOWOER.OM m/n m/=n m/n m%=n m%n m%=n m%n m/=n 4. enum string x1, x2, x3=10, x4, x5, x; 函数外部问 x 等于什么? 随机值 5. unsigned char *p1; unsigned long *p

NOWOER.OM m/n m/=n m/n m%=n m%n m%=n m%n m/=n 4. enum string x1, x2, x3=10, x4, x5, x; 函数外部问 x 等于什么? 随机值 5. unsigned char *p1; unsigned long *p NOWOER.OM /++ 程师能 评估. 单项选择题 1. 下 描述正确的是 int *p1 = new int[10]; int *p2 = new int[10](); p1 和 p2 申请的空间 的值都是随机值 p1 和 p2 申请的空间 的值都已经初始化 p1 申请的空间 的值是随机值,p2 申请的空间 的值已经初始化 p1 申请的空间 的值已经初始化,p2 申请的空间 的值是随机值 2.

More information

FY.DOC

FY.DOC 高 职 高 专 21 世 纪 规 划 教 材 C++ 程 序 设 计 邓 振 杰 主 编 贾 振 华 孟 庆 敏 副 主 编 人 民 邮 电 出 版 社 内 容 提 要 本 书 系 统 地 介 绍 C++ 语 言 的 基 本 概 念 基 本 语 法 和 编 程 方 法, 深 入 浅 出 地 讲 述 C++ 语 言 面 向 对 象 的 重 要 特 征 : 类 和 对 象 抽 象 封 装 继 承 等 主

More information

Microsoft PowerPoint - 5. 指针Pointers.ppt [兼容模式]

Microsoft PowerPoint - 5. 指针Pointers.ppt [兼容模式] 指针 Pointers 变量指针与指针变量 Pointer of a variable 变量与内存 (Variables and Memory) 当你声明一个变量时, 计算机将给该变量一个内存, 可以存储变量的值 当你使用变量时, 计算机将做两步操作 : - 根据变量名查找其对应的地址 ; - 通过地址对该地址的变量内容进行读 (retrieve) 或写 (set) 变量的地址称为变量的指针! C++

More information

chap07.key

chap07.key #include void two(); void three(); int main() printf("i'm in main.\n"); two(); return 0; void two() printf("i'm in two.\n"); three(); void three() printf("i'm in three.\n"); void, int 标识符逗号分隔,

More information

Microsoft PowerPoint - 4. 数组和字符串Arrays and Strings.ppt [兼容模式]

Microsoft PowerPoint - 4. 数组和字符串Arrays and Strings.ppt [兼容模式] Arrays and Strings 存储同类型的多个元素 Store multi elements of the same type 数组 (array) 存储固定数目的同类型元素 如整型数组存储的是一组整数, 字符数组存储的是一组字符 数组的大小称为数组的尺度 (dimension). 定义格式 : type arrayname[dimension]; 如声明 4 个元素的整型数组 :intarr[4];

More information

Microsoft PowerPoint - 3. 函数Functionl.ppt [兼容模式]

Microsoft PowerPoint - 3. 函数Functionl.ppt [兼容模式] 函数 Function 如何重用代码 How to reuse code 3 4 = 3*3*3*3 3 4,6 5 : 拷贝 - 粘帖代码 (Copy-paste code) 3 4,6 5,12 10 : 拷贝 - 粘帖代码 (Copy-paste code) Bad! 使用函数 (with a function) 使用函数 (with a function) 使用函数 (with a function)

More information

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 5 月 2 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d =

More information

没有幻灯片标题

没有幻灯片标题 指针作为函数参数 : 原因 : 1 需要修改一个或多个值,( 用 return 语句不能解决问题 ) 2 执行效率的角度 使用方法 : 在函数原型以及函数首部中需要声明能够接受指针值的形参, 具体的写法为 : 数据类型 * 形参名 如果有多个指针型形参, 则用逗号分隔, 例如 : void swap(int *p1, int *p2) 它说明了形参 p1 p2 是指向整型变量的指针 在函数调用时,

More information

int *p int a 0x00C7 0x00C7 0x00C int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++;

int *p int a 0x00C7 0x00C7 0x00C int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++; Memory & Pointer trio@seu.edu.cn 2.1 2.1.1 1 int *p int a 0x00C7 0x00C7 0x00C7 2.1.2 2 int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++; 2.1.3 1. 2. 3. 3 int A,

More information

Guava学习之Resources

Guava学习之Resources Resources 提供提供操作 classpath 路径下所有资源的方法 除非另有说明, 否则类中所有方法的参数都不能为 null 虽然有些方法的参数是 URL 类型的, 但是这些方法实现通常不是以 HTTP 完成的 ; 同时这些资源也非 classpath 路径下的 下面两个函数都是根据资源的名称得到其绝对路径, 从函数里面可以看出,Resources 类中的 getresource 函数都是基于

More information

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢   学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 Email: 51141201063@ecnu.cn 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料 OOP with Java Java 类型 引用 不可变类型 对象存储位置 作用域 OOP

More information

<4D F736F F D2043D3EFD1D4C3E6CAD4CCE2B4F3BBE3D7DCD6AEBBAACEAAC3E6CAD4CCE22E646F63>

<4D F736F F D2043D3EFD1D4C3E6CAD4CCE2B4F3BBE3D7DCD6AEBBAACEAAC3E6CAD4CCE22E646F63> C 语言面试题大汇总之华为面试题 C 语言面试题大汇总之华为面试题 1 局部变量能否和全局变量重名? 答 : 能, 局部会屏蔽全局 要用全局变量, 需要使用 "::" ; 局部变量可以与全局变量同名, 在函数内引用这个变量时, 会用到同名的局部变量, 而不会用到全局变量 对于有些编译器而言, 在同一个函数内可以定义多个同名的局部变量, 比如在两个循环体内都定义一个同名的局部变量, 而那个局部变量的作用域就在那个循环体内

More information

新・解きながら学ぶC言語

新・解きながら学ぶC言語 330!... 67!=... 42 "... 215 " "... 6, 77, 222 #define... 114, 194 #include... 145 %... 21 %... 21 %%... 21 %f... 26 %ld... 162 %lf... 26 %lu... 162 %o... 180 %p... 248 %s... 223, 224 %u... 162 %x... 180

More information

_汪_文前新ok[3.1].doc

_汪_文前新ok[3.1].doc 普 通 高 校 本 科 计 算 机 专 业 特 色 教 材 精 选 四 川 大 学 计 算 机 学 院 国 家 示 范 性 软 件 学 院 精 品 课 程 基 金 青 年 基 金 资 助 项 目 C 语 言 程 序 设 计 (C99 版 ) 陈 良 银 游 洪 跃 李 旭 伟 主 编 李 志 蜀 唐 宁 九 李 涛 主 审 清 华 大 学 出 版 社 北 京 i 内 容 简 介 本 教 材 面 向

More information

/ V 0.9 V 1.0 2001-7-1 2001-7-18 2001-7-18 2001-7-24 V 0.9 2001 Page 2 of 101

/ V 0.9 V 1.0 2001-7-1 2001-7-18 2001-7-18 2001-7-24 V 0.9 2001 Page 2 of 101 C++/C [ ] 1.0 [ ] [ ] 2001 7 24 / V 0.9 V 1.0 2001-7-1 2001-7-18 2001-7-18 2001-7-24 V 0.9 2001 Page 2 of 101 ...6 1...8 1.1...8 1.2...8 1.3...8 1.4...8 1.5...8 2...8 2.1...8 2.2...8 2.3...8 2.4...8 2.5...8

More information

《计算概论》课程 第十九讲 C 程序设计语言应用

《计算概论》课程 第十九讲  C 程序设计语言应用 计算概论 A 程序设计部分 字符数组与字符串 李戈 北京大学信息科学技术学院软件研究所 lige@sei.pku.edu.cn 字符数组的定义 #include int main() char a[10] = 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j' ; for (int i = 0; i < 10; i++) cout

More information

新版 明解C言語入門編

新版 明解C言語入門編 328, 4, 110, 189, 103, 11... 318. 274 6 ; 10 ; 5? 48 & & 228! 61!= 42 ^= 66 _ 82 /= 66 /* 3 / 19 ~ 164 OR 53 OR 164 = 66 ( ) 115 ( ) 31 ^ OR 164 [] 89, 241 [] 324 + + 4, 19, 241 + + 22 ++ 67 ++ 73 += 66

More information

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc 2 5 8 11 0 13 1. 13 2. 15 3. 18 1 23 1. 23 2. 26 3. 28 2 36 1. 36 2. 39 3. 42 4. 44 5. 49 6. 51 3 57 1. 57 2. 60 3. 64 4. 66 5. 70 6. 75 7. 83 8. 85 9. 88 10. 98 11. 103 12. 108 13. 112 4 115 1. 115 2.

More information

《C语言程序设计》第2版教材习题参考答案

《C语言程序设计》第2版教材习题参考答案 教材 C 语言程序设计 ( 第 2 版 ) 清华大学出版社, 黄保和, 江弋编著 2011 年 10 月第二版 ISBN:978-7-302-26972-4 售价 :35 元 答案版本 本习题答案为 2012 年 2 月修订版本 一 选择题 1. 设已定义 int a, * p, 下列赋值表达式中正确的是 :C)p = &a A. *p = *a B. p = *a C.p = &a D. *p =

More information

C/C++语言 - C/C++数据

C/C++语言 - C/C++数据 C/C++ C/C++ Table of contents 1. 2. 3. 4. char 5. 1 C = 5 (F 32). 9 F C 2 1 // fal2cel. c: Convert Fah temperature to Cel temperature 2 # include < stdio.h> 3 int main ( void ) 4 { 5 float fah, cel ;

More information

C++ 程序设计 实验 3 - 参考答案 MASTER 2017 年 5 月 21 日 1

C++ 程序设计 实验 3 - 参考答案 MASTER 2017 年 5 月 21 日 1 C++ 程序设计 实验 3 - 参考答案 MASTER 2017 年 5 月 21 日 1 1 圆 1 圆 设计圆类 包含 包含基本属性和基本属性访问接口 计算面积和周长接口 2 1 圆 1 #include 2 using namespace std ; 3 c l a s s CCircle 4 { 5 p r i v a t e : 6 double r ; 7 const

More information

《C语言程序设计》教材习题参考答案

《C语言程序设计》教材习题参考答案 教材名称 : C 语言程序设计 ( 第 1 版 ) 黄保和 江弋编著清华大学出版社 ISBN:978-7-302-13599-9, 红色封面 答案制作时间 :2011 年 2 月 -5 月 一 选择题 1. 设已定义 int a, * p, 下列赋值表达式中正确的是 :C)p=&a 2. 设已定义 int x,*p=&x;, 则下列表达式中错误的是 :B)&*x 3. 若已定义 int a=1,*b=&a;,

More information

为提高我们的程序品质特将林博士的资料作为我公司程序员的学习教材,请各位读读,我把我的看法用红字表出,供大家探讨

为提高我们的程序品质特将林博士的资料作为我公司程序员的学习教材,请各位读读,我把我的看法用红字表出,供大家探讨 C++/C [ ] [] 1.0 2001 7 24 [ ] / V 0.9 2001-7-1 V 1.0 2001-7-18 2001-7-18 V 0.9 2001-7-24 4 1 10 1.1 10 1.2 11 1.3 13 1.4 14 1.5 14 2 15 2.1 15 2.2 16 2.3 17 2.4 19 2.5 20 2.6 21 2.7 22 2.8 23 3 25 3.1

More information

新・明解C言語入門編『索引』

新・明解C言語入門編『索引』 !... 75!=... 48 "... 234 " "... 9, 84, 240 #define... 118, 213 #include... 148 %... 23 %... 23, 24 %%... 23 %d... 4 %f... 29 %ld... 177 %lf... 31 %lu... 177 %o... 196 %p... 262 %s... 242, 244 %u... 177

More information

c_cpp

c_cpp C C++ C C++ C++ (object oriented) C C++.cpp C C++ C C++ : for (int i=0;i

More information

untitled

untitled 3 C++ 3.1 3.2 3.3 3.4 new delete 3.5 this 3.6 3.7 3.1 3.1 class struct union struct union C class C++ C++ 3.1 3.1 #include struct STRING { typedef char *CHARPTR; // CHARPTR s; // int strlen(

More information

c语言面试题总结.doc

c语言面试题总结.doc 参考 : C/C++ 程序员面试指南 杨国祥等编著电子工业出版社 编程规范 1 头文件内有时会定义一些类, 结构体等, 如果被包含多次, 将会出现类型重定义的错误, 所以通常使用预处理指令来解决这个问题 #ifndef 标识 #define 标识. #endif 标识在理论上是可以自由命名的, 但每个头文件的这个标识都应该是唯一的, 标识的命名的规则一般是头文件名全大写, 前后加下划线, 并把头文件中的.

More information

Generated by Unregistered Batch DOC TO PDF Converter , please register! 浙江大学 C 程序设计及实验 试题卷 学年春季学期考试时间 : 2003 年 6 月 20 日上午 8:3

Generated by Unregistered Batch DOC TO PDF Converter , please register! 浙江大学 C 程序设计及实验 试题卷 学年春季学期考试时间 : 2003 年 6 月 20 日上午 8:3 浙江大学 C 程序设计及实验 试题卷 2002-2003 学年春季学期考试时间 : 2003 年 6 月 20 日上午 8:30-10:30 注意 : 答题内容必须写在答题卷上, 写在本试题卷上无效 一. 单项选择题 ( 每题 1 分, 共 10 分 ) 1. 下列运算符中, 优先级最低的是 A.

More information

untitled

untitled 1 Outline 數 料 數 數 列 亂數 練 數 數 數 來 數 數 來 數 料 利 料 來 數 A-Z a-z _ () 不 數 0-9 數 不 數 SCHOOL School school 數 讀 school_name schoolname 易 不 C# my name 7_eleven B&Q new C# (1) public protected private params override

More information

C/C++ - 文件IO

C/C++ - 文件IO C/C++ IO Table of contents 1. 2. 3. 4. 1 C ASCII ASCII ASCII 2 10000 00100111 00010000 31H, 30H, 30H, 30H, 30H 1, 0, 0, 0, 0 ASCII 3 4 5 UNIX ANSI C 5 FILE FILE 6 stdio.h typedef struct { int level ;

More information

提问袁小兵:

提问袁小兵: C++ 面 试 试 题 汇 总 柯 贤 富 管 理 软 件 需 求 分 析 篇 1. STL 类 模 板 标 准 库 中 容 器 和 算 法 这 部 分 一 般 称 为 标 准 模 板 库 2. 为 什 么 定 义 虚 的 析 构 函 数? 避 免 内 存 问 题, 当 你 可 能 通 过 基 类 指 针 删 除 派 生 类 对 象 时 必 须 保 证 基 类 析 构 函 数 为 虚 函 数 3.

More information

C 1

C 1 C homepage: xpzhangme 2018 5 30 C 1 C min(x, y) double C // min c # include # include double min ( double x, double y); int main ( int argc, char * argv []) { double x, y; if( argc!=

More information

CC213

CC213 : (Ken-Yi Lee), E-mail: feis.tw@gmail.com 177 [P179] (1) - [P181] [P182] (2) - for [P183] (3) - switch [P184] [P187] [P189] [P194] 178 [ ]; : : int var; : int var[3]; var 2293620 var[0] var[1] 2293620

More information

CHAPTER VC#

CHAPTER VC# 1. 2. 3. 4. CHAPTER 2-1 2-2 2-3 2-4 VC# 2-5 2-6 2-7 2-8 Visual C# 2008 2-1 Visual C# 0~100 (-32768~+32767) 2 4 VC# (Overflow) 2-1 2-2 2-1 2-1.1 2-1 1 10 10!(1 10) 2-3 Visual C# 2008 10! 32767 short( )

More information

nooog

nooog C : : : , C C,,, C, C,, C ( ), ( ) C,,, ;,, ; C,,, ;, ;, ;, ;,,,, ;,,, ; : 1 9, 2 3, 4, 5, 6 10 11, 7 8, 12 13,,,,, 2008 1 1 (1 ) 1.1 (1 ) 1.1.1 ( ) 1.1.2 ( ) 1.1.3 ( ) 1.1.4 ( ) 1.1.5 ( ) 1.2 ( ) 1.2.1

More information

( CIP) /. :, ( ) ISBN TP CIP ( 2005) : : : : * : : 174 ( A ) : : ( 023) : ( 023)

( CIP) /. :, ( ) ISBN TP CIP ( 2005) : : : : * : : 174 ( A ) : : ( 023) : ( 023) ( CIP) /. :, 2005. 2 ( ) ISBN 7-5624-3339-9.......... TP311. 1 CIP ( 2005) 011794 : : : : * : : 174 ( A ) :400030 : ( 023) 65102378 65105781 : ( 023) 65103686 65105565 : http: / /www. cqup. com. cn : fxk@cqup.

More information

运算符重载 为什么要 运算符重载 那些运算符可以重载, 哪些不可以 如何实现运算符重载 实现方式 : 成员函数与非成员函数 类型转换 怎样实现对象与基本数据类型数据的运算 2

运算符重载 为什么要 运算符重载 那些运算符可以重载, 哪些不可以 如何实现运算符重载 实现方式 : 成员函数与非成员函数 类型转换 怎样实现对象与基本数据类型数据的运算 2 第十一讲 运算符重载 与类型转换 运算符重载 为什么要 运算符重载 那些运算符可以重载, 哪些不可以 如何实现运算符重载 实现方式 : 成员函数与非成员函数 类型转换 怎样实现对象与基本数据类型数据的运算 2 为什么要运算符重载 预定义的运算符只针对基本数据类型, 若要对类的对象进行类似的运算, 需要重新定义运算符的功能 运算符重载实质就是函数重载 : 对已有的运算符赋予多重含义, 使得同一个运算符作用于不同类型的数据时导致不同的行为

More information

Microsoft PowerPoint - 10 模板 Template.pptx

Microsoft PowerPoint - 10 模板 Template.pptx 模板 Tempalte 泛型编程的需要 Why Templates? 设想你对整数类型实现了一个排序算法 : void sort(int *is,int n); 用该函数可以对实 复数或工资单排序吗? 模板可以复用源代码 - 泛型编程. inline void Swap( int &x, int &y){ int t = x; x = y; y =t; inline void Swap(double

More information

北京大学

北京大学 1 string 类 郭炜刘家瑛 北京大学程序设计实习 string 类 string 类是一个模板类, 它的定义如下 : typedef basic_string string; 使用 string 类要包含头文件 string 对象的初始化 : string s1("hello"); // 一个参数的构造函数 string s2(8, x ); // 两个参数的构造函数

More information

内 容 提 要 指 针 持 久 动 态 内 存 分 配 字 符 串 ( 字 符 数 组 ) 2

内 容 提 要 指 针 持 久 动 态 内 存 分 配 字 符 串 ( 字 符 数 组 ) 2 第 六 讲 指 针 与 字 符 串 1 内 容 提 要 指 针 持 久 动 态 内 存 分 配 字 符 串 ( 字 符 数 组 ) 2 指 针 什 么 是 指 针 指 针 的 定 义 与 运 算 指 针 与 一 维 数 组 指 针 数 组 行 指 针 与 二 维 数 组 指 针 与 引 用 指 针 与 函 数 3 指 针 定 义 什 么 是 指 针 指 针 变 量, 简 称 指 针, 用 来 存 放

More information

C/C++程序设计 - 字符串与格式化输入/输出

C/C++程序设计 - 字符串与格式化输入/输出 C/C++ / Table of contents 1. 2. 3. 4. 1 i # include # include // density of human body : 1. 04 e3 kg / m ^3 # define DENSITY 1. 04 e3 int main ( void ) { float weight, volume ; int

More information

C++ 程序设计 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1 1 CIRCLE 1 Circle 描述 编写一个圆类 Circle, 实现半径的输入 面积的计算和输出 输入 圆的半径 (double 类型 ) 输出 圆的面积 ( 保留小数点后两位 ) 样例输入 3 样例输出 28.27 提示 圆周率的取值需要比较精确, 以保证计算结果的精度 #include

More information

ebook50-15

ebook50-15 15 82 C / C + + Developer Studio M F C C C + + 83 C / C + + M F C D L L D L L 84 M F C MFC DLL M F C 85 MFC DLL 15.1 82 C/C++ C C + + D L L M F C M F C 84 Developer Studio S t u d i o 292 C _ c p l u s

More information

51 C 51 isp 10 C PCB C C C C KEIL

51 C 51 isp 10   C   PCB C C C C KEIL http://wwwispdowncom 51 C " + + " 51 AT89S51 In-System-Programming ISP 10 io 244 CPLD ATMEL PIC CPLD/FPGA ARM9 ISP http://wwwispdowncom/showoneproductasp?productid=15 51 C C C C C ispdown http://wwwispdowncom

More information

新・解きながら学ぶJava

新・解きながら学ぶJava 481! 41, 74!= 40, 270 " 4 % 23, 25 %% 121 %c 425 %d 121 %o 121 %x 121 & 199 && 48 ' 81, 425 ( ) 14, 17 ( ) 128 ( ) 183 * 23 */ 3, 390 ++ 79 ++ 80 += 93 + 22 + 23 + 279 + 14 + 124 + 7, 148, 16 -- 79 --

More information

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例 帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例 这篇文章主要介绍了帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例, 本文还详细介绍了帝国 CMS 数据库类中的一些常用方法, 需要的朋友可以参考下 例 1: 连接 MYSQL 数据库例子 (a.php)

More information

C/C++ - 函数

C/C++ - 函数 C/C++ Table of contents 1. 2. 3. & 4. 5. 1 2 3 # include # define SIZE 50 int main ( void ) { float list [ SIZE ]; readlist (list, SIZE ); sort (list, SIZE ); average (list, SIZE ); bargragh

More information

CHAPTER 1

CHAPTER 1 CHAPTER 1 1-1 System Development Life Cycle; SDLC SDLC Waterfall Model Shelly 1995 1. Preliminary Investigation 2. System Analysis 3. System Design 4. System Development 5. System Implementation and Evaluation

More information

Guava学习之CharSequenceReader

Guava学习之CharSequenceReader CharSequenceReader 类是以 CharSequence 的形式读取字符 CharSequenceReader 类继承自 Reader 类, 除了 remaining() hasremaining() 以及 checkopen() 函数之后, 其他的函数都是重写 Reader 类中的函数 CharSequenceReader 类声明没有用 public 关键字, 所以我们暂时还不能调用这个类

More information

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File 51 C 51 51 C C C C C C * 2003-3-30 pnzwzw@163.com C C C C KEIL uvision2 MCS51 PLM C VC++ 51 KEIL51 KEIL51 KEIL51 KEIL 2K DEMO C KEIL KEIL51 P 1 1 1 1-1 - 1 Project New Project 1 2 Windows 1 3 N C test

More information

幻灯片 1

幻灯片 1 第三课类和对象 ( 封装 ) 互联网新技术在线教育领航者 1 内容概述 1. 封装的概念 2. 访问控制 3. 栈类的封装 4. 构造与析构 5.myString 构造函数 6. 构造与析构的次序 7. 类文件写法 8. 对象的内存 9.this 指针初探 10. 构造函数初始值列表 11. 拷贝构造和赋值运算符重载 12. 浅拷贝 13. 深拷贝 14. 成员函数内联 15. 友元 16.const

More information

C C

C C C C 2017 3 8 1. 2. 3. 4. char 5. 2/101 C 1. 3/101 C C = 5 (F 32). 9 F C 4/101 C 1 // fal2cel.c: Convert Fah temperature to Cel temperature 2 #include 3 int main(void) 4 { 5 float fah, cel; 6 printf("please

More information

C/C++ 语言 - 循环

C/C++ 语言 - 循环 C/C++ Table of contents 7. 1. 2. while 3. 4. 5. for 6. 8. (do while) 9. 10. (nested loop) 11. 12. 13. 1 // summing.c: # include int main ( void ) { long num ; long sum = 0L; int status ; printf

More information

Microsoft PowerPoint - 6. 用户定义类型User-defined Datatypes.ppt [兼容模式]

Microsoft PowerPoint - 6. 用户定义类型User-defined Datatypes.ppt [兼容模式] 用户定义类型 User-defined Datatypes classes and structs 几何向量 (Geometry Vector) 二维平面上的向量由起点和终点构成 每个点包含两个坐标 (x, y), 因此一个向量需要四个实数表示 Start= (0.9,1.5) Start= (0.4,0.8) int main() { double xstart = 0.4; double xend

More information

C/C++语言 - 运算符、表达式和语句

C/C++语言 - 运算符、表达式和语句 C/C++ Table of contents 1. 2. 3. 4. C C++ 5. 6. 7. 1 i // shoe1.c: # include # define ADJUST 7. 64 # define SCALE 0. 325 int main ( void ) { double shoe, foot ; shoe = 9. 0; foot = SCALE * shoe

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 第 1 章程序设计和 C 语言 1.1 什么是计算机程序 1.2 什么是计算机语言 1.3 C 语言的发展及其特点 1.4 最简单的 C 语言程序 1.5 运行 C 程序的步骤与方法 1.6 程序设计的任务 1.1 什么是计算机程序 程序 : 一组计算机能识别和执行的指令 只要让计算机执行这个程序, 计算机就会自动地 有条不紊地进行工作 计算机的一切操作都是由程序控制的, 离开程序, 计算机将一事无成

More information

1 2005 9 2005,,,,,,,,,, ( http: \ \ www. ncre. cn,, ) 30,,,,,,,, C : C : : 19 : 100081 : : 7871092 1 /16 : 8. 75 : 96 : 2005 11 1 : 2005 11 1 : ISBN 7

1 2005 9 2005,,,,,,,,,, ( http: \ \ www. ncre. cn,, ) 30,,,,,,,, C : C : : 19 : 100081 : : 7871092 1 /16 : 8. 75 : 96 : 2005 11 1 : 2005 11 1 : ISBN 7 1 2005 9 2005,,,,,,,,,, ( http: \ \ www. ncre. cn,, ) 30,,,,,,,, C : C : : 19 : 100081 : : 7871092 1 /16 : 8. 75 : 96 : 2005 11 1 : 2005 11 1 : ISBN 7-80097 - 564-9 /TP 8 : 10. 00 ,,,, 1994 NCRE,,, ( ),,,,,

More information

untitled

untitled 1 7 7.1 7.2 7.3 7.4 7.5 2 7.1 VFT virtual 7.1 3 1 1. 2. public protected public 3. VFT 4. this const volatile 4 2 5. ( ) ( ) 7.1 6. no-static virtual 7.2 7. inline 7.3 5 3 8. this this 9. ( ) ( ) delete

More information

<4D F736F F F696E74202D20B5DA3032BDB25FC0E0BACDB6D4CFF3312E BBCE6C8DDC4A3CABD5D>

<4D F736F F F696E74202D20B5DA3032BDB25FC0E0BACDB6D4CFF3312E BBCE6C8DDC4A3CABD5D> 程序设计实习 (I): C++ 程序设计 第二讲类和对象 (1) 面向对象的程序设计 面向对象的程序设计方法, 能够较好解决结构化程序设计中出现的问题 面向对象的程序 = 类 + 类 + + 类 设计程序的过程, 就是设计类的过程 2 面向对象的程序设计 面向对象的程序设计方法 : 将某类客观事物共同特点 ( 属性 ) 归纳出来, 形成一个数据结 构 ( 可以用多个变量描述事物的属性 ); 将这类事物所能进行的行为也归纳出来,

More information

untitled

untitled 串 串 例 : char ch= a ; char str[]= Hello ; 串 列 ch=getchar(); scanf( %c,&ch); 串 gets(str) scanf( %s,str); 8-1 數 ASCII 例 : char ch= A ; printf( %d,ch); // 65 A ascii =0x41 printf( %c,ch); // A 例 : char ch;

More information

2015年计算机二级(C语言)模拟试题及答案(三)

2015年计算机二级(C语言)模拟试题及答案(三) 2016 年计算机二级 (C 语言 ) 模拟试题及答案 (3) 1.( A ) 是构成 C 语言程序的基本单位 A 函数 B 过程 C 子程序 D 子例程 2.C 语言程序从 ( C ) 开始执行 A 程序中第一条可执行语句 B 程序中第一个函数 C 程序中的 main 函数 D 包含文件中的第一个函数 3 以下说法中正确的是( C ) A C 语言程序总是从第一个定义的函数开始执行 B 在 C 语言程序中,

More information

3.1 num = 3 ch = 'C' 2

3.1 num = 3 ch = 'C' 2 Java 1 3.1 num = 3 ch = 'C' 2 final 3.1 final : final final double PI=3.1415926; 3 3.2 4 int 3.2 (long int) (int) (short int) (byte) short sum; // sum 5 3.2 Java int long num=32967359818l; C:\java\app3_2.java:6:

More information

untitled

untitled A, 3+A printf( ABCDEF ) 3+ printf( ABCDEF ) 2.1 C++ main main main) * ( ) ( ) [ ].* ->* ()[] [][] ** *& char (f)(int); ( ) (f) (f) f (int) f int char f char f(int) (f) char (*f)(int); (*f) (int) (

More information

OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课

OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课 复习 Java 包 创建包 : package 语句, 包结构与目录结构一致 使用包 : import restaurant/ - people/ - Cook.class - Waiter.class - tools/ - Fork.class

More information

Ps22Pdf

Ps22Pdf C ( CIP) C /. :, 2001. 7 21 ISBN 7-5624 -2355-5. C........ C. TP312 CIP ( 2001 ) 034496 C * * : 7871092 1 /16 : 14. 25 : 356 20017 1 20017 1 : 1 6 000 ISBN 7-5624-2355-5 / TP311 : 21. 00 C, C,,,, C,, (

More information

C++ 程序设计 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1 1 PERSON 1 Person 题目描述 编写程序, 定义一个基类 Person, 包含 name 和 age 两个数据成员 ; 再由它派生出学生类 Student 和教师类 Teacher, 其中学生类添加学号 no 数据, 教师类添加职称 title 数据 ; 要求每个类均有构造函数 析构函数和显示数据的函数

More information

OOP with Java 通知 : Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢

OOP with Java 通知 : Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 : Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 Email: 51141201063@ecnu.cn 复习 : Java 类型 基本类型 boolean, char, 封装 (wrappers) 类 (class) 定义 class MyType { int i;

More information

OOP with Java 通知 : Project 2 提交时间 : 3 月 15 日晚 9 点

OOP with Java 通知 : Project 2 提交时间 : 3 月 15 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 : Project 2 提交时间 : 3 月 15 日晚 9 点 复习 : Java 类型 基本类型 boolean, char, 封装 (wrappers) 类 (class) 定义 class MyType { int i; double d; 数据 (Fields) char c; void set(double

More information

网C试题(08上).doc

网C试题(08上).doc 学习中心 姓名 学号 西安电子科技大学网络与继续教育学院 高级语言程序设计 (C) 全真试题 ( 闭卷 90 分钟 ) 题号一二三总分 题分 60 20 20 得分 一 单项选择题 ( 每小题 3 分, 共 60 分 ) 1.C 语言程序的基本单位是 A) 程序行 B) 语句 C) 函数 D) 字符 2. 下列四组选项中, 均是不合法的用户标识符的选项是 A)A B)getc C)include D)while

More information

Microsoft PowerPoint - 第06讲_继承.ppt [兼容模式]

Microsoft PowerPoint - 第06讲_继承.ppt [兼容模式] 程序设计实习 (I): C++ 程序设计 第六讲继承 上节内容回顾 三种运算符重载的实现方式 重载为普通函数 重载为成员函数 重载为友元 常见的运算符重载 流运算符 (>>

More information

幻灯片 1

幻灯片 1 第一课 C 与 C++ 互联网新技术在线教育领航者 1 内容概述 第一部分 : C++ 综述 1. C++ 历史背景 2. Why C++ 3. 推荐书籍第二部分 : C VS C++ 1. C 语法回顾 2. 例 :C 实现动态数组 3. C++ 的 vector 第三部分 :C++ 对 C 的扩展 ( 上 ) 1. 命名空间 2. 输入输出 3. 基本类型转换 4. 声明 列表初始化 5. 指针和引用

More information

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 odps-sdk 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基 开放数据处理服务 ODPS SDK SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基础功能的主体接口, 搜索关键词 "odpssdk-core" 一些

More information

移动平台应用软件开发 C/C++/JAVA 基础 C 中的预处理指令 主讲 : 张齐勋 移动平台应用软件开发 课程建设小组北京大学二零一五年

移动平台应用软件开发 C/C++/JAVA 基础 C 中的预处理指令 主讲 : 张齐勋 移动平台应用软件开发 课程建设小组北京大学二零一五年 移动平台应用软件开发 C/C++/JAVA 基础 C 中的预处理指令 主讲 : 张齐勋 zhangqx@ss.pku.edu.cn 移动平台应用软件开发 课程建设小组北京大学二零一五年 预处理 2 预处理器 C 语言的编译系统分为编译预处理和正式编译 预处理作用 : 对源程序编译之前做一些处理, 生成扩展 C 源程序 预处理器的行为是由预处理指令控制的 宏定义 文件包含 条件编译 #define #ifdef

More information

幻灯片 1

幻灯片 1 第四课类和对象 ( 构造深入 ) 互联网新技术在线教育领航者 1 内容概述 1. 数据成员指针 2. 成员函数指针 3. 三 / 五法则 4. 引用计数 5. 写时拷贝 6.swap 函数 7. 移动构造函数 8. 移动赋值运算符重载 9. 对象移动 10.std::vector 动态增长 11.std::vector 与移动 12. 移动小结 互联网新技术在线教育领航者 2 数据成员指针 定义 :

More information

Microsoft Word - 01.DOC

Microsoft Word - 01.DOC 第 1 章 JavaScript 简 介 JavaScript 是 NetScape 公 司 为 Navigator 浏 览 器 开 发 的, 是 写 在 HTML 文 件 中 的 一 种 脚 本 语 言, 能 实 现 网 页 内 容 的 交 互 显 示 当 用 户 在 客 户 端 显 示 该 网 页 时, 浏 览 器 就 会 执 行 JavaScript 程 序, 用 户 通 过 交 互 式 的

More information

Microsoft Word - 《C语言开发入门》课程教学大纲-2.doc

Microsoft Word - 《C语言开发入门》课程教学大纲-2.doc C 语言开发入门 课程教学大纲 ( 课程英文名称 ) 课程编号 :201409210011 学分 :5 学分学时 :60 学时 ( 其中 : 讲课学时 :37 学时上机学时 :23 学时 ) 先修课程 : 计算机导论后续课程 :C++ 程序设计适用专业 : 信息及其计算机相关专业开课部门 : 计算机系 一 课程的性质与目标 C 语言开发入门 是计算机各专业必修的基础课程, 是数据结构 C++ Java

More information

第3章.doc

第3章.doc 3 3 3 3.1 3 IT Trend C++ Java SAP Advantech ERPCRM C++ C++ Synopsys C++ NEC C C++PHP C++Java C++Java VIA C++ 3COM C++ SPSS C++ Sybase C++LinuxUNIX Motorola C++ IBM C++Java Oracle Java HP C++ C++ Yahoo

More information

C++ 程序设计 实验 1 - 参考答案 MASTER 2017 年 5 月 21 日 1

C++ 程序设计 实验 1 - 参考答案 MASTER 2017 年 5 月 21 日 1 C++ 程序设计 实验 1 - 参考答案 MASTER 2017 年 5 月 21 日 1 1 简单图形 1 简单图形 输入图形的行数 ( 如下图 7 行 ), 输出如下图所示图形 * *** ***** ******* ***** *** * 2 1 简单图形 1 #inc lude 2 using namespace std ; 3 4 // 注意变量命名的方式 5 //

More information

untitled

untitled 1 1.1 1.2 1.3 1.4 1.5 ++ 1.6 ++ 2 BNF 3 4 5 6 7 8 1.2 9 1.2 IF ELSE 10 1.2 11 1.2 12 1.3 Ada, Modula-2 Simula Smalltalk-80 C++, Objected Pascal(Delphi), Java, C#, VB.NET C++: C OOPL Java: C++ OOPL C# C++

More information

C, Win-TC Turbo C,, C, C,,,, C C, : Win-TC C, 23,,, 15,, C Turbo C Win-TC Turbo C,,,, 2005 1 W in -TC 1 Win-TC 1 1. Win-TC 1 2. Win-TC 1 3. Win-TC 1 2 Win-TC 3 1. 3 2. 3 3. 4 4. 4 5. 4 6. 4 7. 5 8. 5 9.

More information

Microsoft PowerPoint - 07 派生数据类型

Microsoft PowerPoint - 07 派生数据类型 能源与动力工程学院 目录 派生类型 陈 斌 固有数据类型 数值型 (numerical) 整型 INTEGER 实型 REAL 复数型 COMPLEX 非数值型 字符型 CHARACTER 逻辑型 ( 布尔型 )LOGICAL 自定义数据类型 ( 派生类型, derived type) 派生类型是指用户利用 Fortran 系统内部类型, 如整型 实型 复数型 逻辑型 字符型等的组合自行创建出一个新的数据类型,

More information

OOP with Java 通知 Project 2 提交时间 : 3 月 21 日晚 9 点 作业提交格式 学习使用 文本编辑器 cmd, PowerShell (Windows), terminal(linux, Mac)

OOP with Java 通知 Project 2 提交时间 : 3 月 21 日晚 9 点 作业提交格式 学习使用 文本编辑器 cmd, PowerShell (Windows), terminal(linux, Mac) OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 2 提交时间 : 3 月 21 日晚 9 点 作业提交格式 学习使用 文本编辑器 cmd, PowerShell (Windows), terminal(linux, Mac) 复习 面向对象编程 将实际问题分解成不同的对象 不的对象提供不同的服务 对象之间可以传递消息 例子小李深夜

More information

幻灯片 1

幻灯片 1 信息科学技术学院 程序设计实习 郭炜微博 http://weibo.com/guoweiofpku http://blog.sina.com.cn/u/3266490431 刘家瑛微博 http://weibo.com/pkuliujiaying 1 信息科学技术学院 程序设计实习 郭炜刘家瑛 继承和派生 ( 教材 P215) 2 继承和派生的概念 继承 : 在定义一个新的类 B 时, 如果该类与某个已有的类

More information

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.07.doc

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.07.doc 2 5 8 11 0 1. 13 2. 15 3. 18 1 1. 22 2. 25 3. 27 2 1. 35 2. 38 3. 41 4. 43 5. 48 6. 50 3 1. 56 2. 59 3. 63 4. 65 5. 69 13 22 35 56 6. 74 7. 82 8. 84 9. 87 10. 97 11. 102 12. 107 13. 111 4 114 1. 114 2.

More information

程序设计语言及基础

程序设计语言及基础 Chapter 10 Classes: A Deeper Look, Part 2 http://jssec.seu.edu.cn 杨明 yangming2002@seu.edu.cn OBJECTIVES To specify const (constant) objects and const member functions. To create objects composed of other

More information

华恒家庭网关方案

华恒家庭网关方案 LINUX V1.5 1 2 1 2 LINUX WINDOWS PC VC LINUX WINDOWS LINUX 90% GUI LINUX C 3 REDHAT 9 LINUX PC TFTP/NFS http://www.hhcn.com/chinese/embedlinux-res.html minicom NFS mount C HHARM9-EDU 1 LINUX HHARM9-EDU

More information

untitled

untitled 1 5 IBM Intel 1. IBM 第 1/175 页 第 2/175 页 第 3/175 页 80 第 4/175 页 2. IBM 第 5/175 页 3. (1) 第 6/175 页 第 7/175 页 第 8/175 页 = = 第 9/175 页 = = = = = 第 10/175 页 = = = = = = = = 3. (2) 第 11/175 页 第 12/175 页 第 13/175

More information

无类继承.key

无类继承.key 无类继承 JavaScript 面向对象的根基 周爱 民 / aimingoo aiming@gmail.com https://aimingoo.github.io https://github.com/aimingoo rand = new Person("Rand McKinnon",... https://docs.oracle.com/cd/e19957-01/816-6408-10/object.htm#1193255

More information

Microsoft Word - C++CodeRule94.doc

Microsoft Word - C++CodeRule94.doc C++ 程序编制标准 标准如下 : 一 概述制定本编程格式的目的是为了使软件可读性好 兼容性好 易维护等等 二 程序的构成 C++ 程序的主要特点即为对象 (object) 的概念和数据封装性 (encaptulation) 所以, C++ 程序的主要内容包括 : 1 类 ( 包括基类子类等, 结构看作特殊的类 ) 的定义, 也就是类的描述说明 2 对象类的成员函数的定义, 即类的实现 所有的类都既有属性定义,

More information

C PICC C++ C++ C C #include<pic.h> C static volatile unsigned char 0x01; static volatile unsigned char 0x02; static volatile unsigned cha

C PICC C++ C++ C C #include<pic.h> C static volatile unsigned char 0x01; static volatile unsigned char 0x02; static volatile unsigned cha CYPOK CYPOK 1 UltraEdit Project-->Install Language Tool: Language Suite----->hi-tech picc Tool Name ---->PICC Compiler Executable ---->c:hi-picinpicc.exe ( Command-line Project-->New Project-->File Name--->myc

More information

Static Enforcement of Security with Types

Static Enforcement of Security with Types 例题 1 一个 C 语言程序及其在 X86/Linux 操作系统上的编译结 果如下 根据所生成的汇编程序来解释程序中四个变 量的存储分配 生存期 作用域和置初值方式等方面 的区别 static long aa = 10; short bb = 20; func( ) { } static long cc = 30; short dd = 40; static long aa = 10; func(

More information

C/C++ - 字符串与字符串函数

C/C++ - 字符串与字符串函数 C/C++ Table of contents 1. 2. 3. 4. 1 char C 2 char greeting [50] = " How " " are " " you?"; char greeting [50] = " How are you?"; 3 printf ("\" Ready, go!\" exclaimed John."); " Ready, go!" exclaimed

More information