实例介绍
【实例截图】
【核心代码】
C 程序设计 117题
1.new、delete、 malloc、 free关系?
2. delete与delete []区别 ?
3.C、C 、JAVA共同点,不同之处?
4.继承优缺点?
5. C 有哪些性质(面向对象特点) ?
6.子类析构时要调用父类的析构函数吗?
7.多态,虚函数,纯虚函数
8.求下面函数的返回值(微软)
int
func(x){ int
countx = 0;
while(x) { count
x ;
x = x&(x-1);
}
return countx;
9.什么是“引用”?申明和使用“引用”要注意哪些问题?
10.将“引用”作为函数参数有哪些特点?
11.在什么时候需要使用“常引用”?
12.将“引用”作为函数返回值类型的格式、好处和需要遵守的规则?
13.“引用”与多态的关系?
14.“引用”与指针的区别是什么?
15.什么时候需要“引用”?
16.结构与联合有和区别?
17.下面关于“联合”的题目的输出?
a)
#include <stdio.h>
Union
{
int i;
char x[2];
}a;
void main()
{
a.x[0] = 10;
a.x[1] = 1;
printf("%d",a.i);
}
b)
main()
{
union{ /*定义 一个联合*/
int i;
struct{ /*在联合中定义个结构*/
char first;
char second;
}half;
}number;
number. i=0x4241; /*联合成员赋值*/
printf ("%c%cn", number .half. first,numbe.half.second);
number .half.first='a'; /*联合中结构成员
number .half. second='b';
printf("%xn", number.i);
getch();
}
18. 关联、聚合(Aggregation)以及组合Composition)的区别?
19.面向对象的三个基本特征,并简单叙述之?
20.重载(overload)和重写(overried,有的书也叫做“覆盖”)的区别?
21.多态的作用?
22. Ado与Ado. net的相同与不同?
23. New delete与malloc free的联系与区别?
24 . #define DOUBLE(x) x x,i = 5*DOUBLE(5); i是多少?
25 有哪几种情况只能用intialization list而不能用assignment?
26. C 是不是类型安全的?
27. main 函数执行以前,还会执行什么代码?
28.描述内存分配方式以及它们的区别?
29. struct和class的区别?
30.当一个类A中没有任何成员变量与成员函数,这时sizeof(A)的值是多少?
31.在8086汇编下,逻辑地址和物理地址是怎样转换的? (Intel)
32.比较C 中的 4种类型转换方式?
33.分别写出BOOL,int, float, 指针类型的变量a与“零”的比较语句。
34.请说出const与#define相比,有何优点?
35.简述数组与指针的区别?
36.类成员函数的重载、覆盖和隐藏区别?
37.求出两个数中的较大者.
38.如何打印出当前源文件的文件名以及源文件的当前行号?
39. main 主函数执行完毕后,是否可能会再执行一段代码, 给出说明?
40.如何判断一段程序是由c编译程序还是由C 编译程序编译的?
41.文件中有一组整数,要求排序后输出到另一个文件中
42.链表题:一个链表的结点结构
struct Node
{
int data ; Node *next;
};
typedef struct Node Node ;
1) 己知链表的头结点head,写一个函数把这个链表逆序(Intel) Node *
ReverseList (Node *head) //链表逆序
if ( head == NULL || head->next == NULL )
return head;
Node *p1=head; Node *p2 = p1->next ; Node *p3=p2->next ;
P1->next = NULL ; while ( p3 != NULL )
{
p2->next =p1 ;
p1 =p2 ;
p2 =p3 ;
P3 = p3->next ;
}
p2->next =p1 ; head= p2 ; return head ;
}
2)已知两个链表head1和head2各自有序,请把它们合并成一个链表依然有序。
(保留所有结点,即使大小相同)
Node *Merge (Node *head1 ,Node *head2)
{
if ( head1 == NULL)
return head2 ;
if ( head2 = NULL)
return head1 ;
Node *head = NULL ; Node *P1=NULL; Node *p2 = NULL;
p1 = head1->next;
p2 = head2 ;
}
else
{
head = head2 ;
p2 =head2->next ;
p1 = head1 ;
}
Node *pcurrent = head;
while ( p1 != NULL && p2 != NULL)
{
if ( p1->data <= p2->data )
{
pcurrent->next = p1 ;
pcurrent= p1;
P1 = p1->next ;
}
else
{
pcurrent->next =p2 ;
pcurrent =p2 ;
p2=p2->next ;
}
}
if(p1!=NULL)
pcurrent->next = p1 ;
if(p2!=NULL)
pcurrent->next= p2 ;
return head ;
}
(3)已知两个链表head1和head2各自有序,请把它们合并成一个链表依然有序,这次要求用递归方法进行。(Autodesk)
43.分析一下这段程序的输出 (Autodesk)
class B
{
public: B()
{
cout<<"default constructor"<<endl;
}
~B()
{
cout<<"destructed"<<endl;
}
B(int i) :data(i)
//B(int) works as a converter( int ->instanceint of B)
{
cout<< "constructed by parameter”}
private: int data;
};
B Play( B b)
{
return b ;
}
44. 写一个函数找出一个整数数组中,第二大的数(microsoft)
45.写一个在一个字符串(n)中寻找一个子串(m)第一个位置的函数。
46.多重继承的内存分配问题
47.如何判断一个单链表是有环的? (注意不能用标志位,最多只能用两个额外指针)
48.指针找错题
分析这些面试题,本身包含很强的趣味性;而作为一名研发人员,通过对这些面试题的深入剖析则可进步增强自身的内功。
试题1:以 下是引用片段:
void test1() / /数组越界
{
char string[10];
char* strl = "0123456789";
strcpy( string, str1 );
}
试题2:以下是引用片段:
void test2()
{
char string[10], str1[10];
int i;
for(i=0; i<10; i )
{
str1= 'a';
}
strcpy( string, str1 );
}
试题3:以下是引用片段:
void test3 (char* str1)
{
char string[10];
if( strlen(str1)<=10)
{
strcpy( string, str1 );
}
}
49.如果编写一个标准strcpy函数
总分值为10,下面给出几个不同得分的答案: 2分 以下是引用片段:
void strcpy(char *strDest, char *strSrc )
{
while( (*strDest = * strSrc ) != '\0’);
}
4分,以下是引用片段:
void strcpy( char *strDest, const char *strSrc )
//将源字符串加const, 表明其为输入参数,加2分
{
while (*strDest = *strsrc ) != '\0’);
}
7分以下是引用片段:
void strcpy(char *strDest, const char *strSrc)
{
//源地址和目的地址加非0断言,加3分
assert( (strDest != NULL)&& (strSrc != NULL) );
while( (*strDest = * strSrc ) != ’\0’);
}
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的掌握,它没有包括字符串末尾的’\0‘。
读者看了不同分值的strcpy版本,应该也可以写出一个10分的strlen函数了,完美的版本为int strlen(const char *str)//输入参数const
以下是引用片段:
{
assert( strt !- xULL ); //断盲字符串地址非0
int len=0; //注,一定要初始化。
while( (*strt) != '\0' )
{
len ;
}
return len;
}
试题4:以下是引用片段:
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(); ptintf (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 );
... //省略的其它语句
}
50. String的具体实现已知String类定义如下:
class String
{
public:
String(const char *str =NULL); //通用构造函数
String (const String &another); // 拷贝构造函数
~ String(); //析构函数
String & operater =(const String &rhs); //赋值函数private:
char *m_data; // 用于保存字符串};
};
尝试写出类的成员函数实现。
51.h头文件中的ifndef/define/endif的作用?
52. # include<file.h>与#include "file. h"的区别?
53.在C 程序中调用被c编译器编译后的函数,为什么要加extern“C” ?
54请你分别画出OSI的七层网络结构图和TCP/IP的五层结构图。
56. 请问交换机和路由器各自的实现原理是什么?分别在哪个
57.全局变量和局部交量有什么区别?是怎么实现的?, 操作系统和编译器是怎么知道的?
58.8086是多少位的系统?在数据总线上是怎么实现的?
59.static有什么用途? (请至少说明两种)
60.引用与指针有什么区别?
61.描述实时系统的基本特性
62全局变量和局部变量在内存中是否有区别?如果有,是什么区别?
63.什么是平衡二叉树?
64.堆栈溢出一般是由什么原因导致的?
65.什么函数不能声明为虚函数?
66.冒泡排序算法的时间复杂度是什么?
67.写出float x与“零值”比较的if语句。
68. Internet采用哪种网络协议? 该协议的主要层次结构?
69. Internet物理地址和IP地址转换采用什么协议?
70. IP地址的编码分为哪俩部分?
71.用户输入M,N值,从1至N开始顺序循环数数,每数到输出该数值,直至全部输出。写出C程序。
72.不能做switch()的参数类型是()
73.局部变量能否和全局变量重名?
74.如何引用一个已经定义过的全局变量?
75.全局变量可不可以定义在可被多个.C文件包含的头文件中? 为什么?
76.语句for( ; 1 ; )有什么问题?它是什么意思?
77. do.......while和while.....do有什么区别?
78.请写出下列代码的输出内容
#include 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
}
79. statac全局变量、局部变量、函数与普通全局变量、局部变量、函数static全局变量与普通的全局变量有什么区别? static 局部变量和普通局部变量有什么区别? static函数与普通函数有什么区别?
80.设有以下说明和定义:
typedef union {long i; int k[5]; char c;} DATE;
struct data { int cat; DATE cow; double dog;} too;
DATE max;
则语句pintf("%d",sizeof(struct date) sizeof(max));的执行结果是?
81. -1,2,7,28,126 请问28和126中间那个数是什么?为什么?
82.用两个栈实现一个队列的功能?要求给出算法和思路!
83.在c语言库函数中将一个字符转换成整型的函数是atool数的原型是什么?
84.对于一个频繁使用的短小函数,在C语言中应用什么实现,在C 中应用什么实现?
85.用预处理指令#define声明一个常数, 用以表明1年中有多少秒(忽略闰年问题)
86.写一个“标准”宏MIN, 这个宏输入两个参数并返回较小的一个。
87.预处理器标识#error的目 的是什么?
88.嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢?
89.用变量a给出下面的定义
a)一个整型数(An integer)
b)一个指向整型数的指针(A pointer to an iteger)
c)一个指向指针的的指针,它指向的指针是指向一个整型数(A pointert to a pointerto an integer)
d)一个有 10个整型数的数组(An aray of 10 inegers)
e) 一个有10 个指针的数组,该指针是指向“个整型数的(An rray of10pointers to integers)
f)一个指向有 10个整型数数组的指针(A pointet to an rray of 10 integers)
g)一个指向函数的指针,该函数有一个整型参数并返回一个整型数(A pointer to a fuction that takes an integer as an argument and returns an integer)
h)一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数( Aarrayof ten pintes to unction that take an integerargument and returm an integer )
答案是:
a) int a; // An integer
b) int *a; // A pointer to an integer
c)int **a;//A pointer to pointer to an integer
d)int a[10];// an array of 10 integers
e) int *a{10]:// An array of 10 pointers to integers
f) int (*a)[10]; // A pointer to an aray of 10 integers
g) int (*a)(int);// A pinter to a function that takes an integer argument and returns an integer
h) int (*a[10])(int)); // An aray of 10 pointers to functionsargument and return an integer
人们经常称这里有几个问题是那种要翻下书才能回答的问题,我同意这种说法。当我写这篇文章时,为了确定语法的正确性, 我的确查了一下书,但是当我被面试的时候,我期望被问到这个问题(或者相近的问题)因为在被面试的这段时间里,我确定我知道这个问题的答案。应试者如果不知道所有的答案(或至少大部分答案) 那么也就没有为这次面试做准备,如果该面试者没有为这次面试做准备,那么他又能为什么出准备呢?
90.关键字static的作用是什么?
91.关键字const是什么含义?
92.关键字volatile有什么含意并给出三个不同的例子。
93.下面的代码输出是什么,为什么?
void Eoo (void)
{
unsigned int a = 6;
int b = -20;
(a b > 6) puts("> 6") : puts("<= 6");
}
94.C语言同意一些令人震惊的结构,下面的结构是合法的吗,如果是它做些什么?
95.线形表a、b为两个有序升序的线形表,编写-程序,使两个有序线形表合并成一个有序升序线形表h;
96.用递归算法判断数组a[N]是否为一个递增数组。递归的方法, 记录当前最大的,并且判断当前的是否比这个还大,大则继续,否则返回false 结束:
97.编写算法, 从10亿个浮点数当中, 选出其中最大的10000个。
98.编写一unix程序,防止僵尸进程的出现
99.可怕的题目终于来了
想象搜索的输入信息是一个字符中, 统计300万输入信息中最热门的前十条,我们每次输入的一个字节不超过255byte,内存使用只有1G,请描述思想,写出算发(c语言),空间和时间复杂度。100.判断字符串是否为回文
101. ASDL使用的是什么 协议?并进行简单描述?
102. Static作用是什么
103.什么是预编译,何时需要预编译?
104.进程和线程的区别什么是进程(Process) ?105.插入排序和插入排序基本思想:106.运算符优先级问题
107.字符串倒序
写一个函数将"tomis cat'倒序打印出来,印"cat is tom”"
-----------------------------------------------------------
1) 写一个递归函数将内存中的字符串翻转"abe*->"cba"
2) 写一个函数将"tom is cat"将内存中的字符串翻转,即"cat is tomm"
-----------------------------------------------------------
今天同学又问一道题,和上面有些类似,但是要求更严格了一些:写一个递归函数将内存中的字符中翻转"abc"->"cba",并且函数原型已确定:
void everse(char*p)其实,要求越多,思路越确定,
108.交换两个数的宏定义
109. tearator各指针的区别
110. C 中的class和struct的区别
111.有关重载函数
返同值类型不同构不成重载 参数参数顺序不同能构成重载。c 函数同名不同返回值不算重载!函数重载是忽略返回值类型的。
112.数据库与T-SQL语言
113.关系模型的基本概念
114. SQL语言概述
115.C语言中结构化程序 设计的三种基本控制结构
116. CVS是什么
117.三种基本的数据模型
相关软件
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论