1. const int a,const int* a,int const* a多代表什么意义?
const int a; /常量,a的值不可以修改。
const int* a; /a是一个指向常量整形的指针,整形数不可以修改,指针可以改。
int *const a; /指向整形数的常指针,指针不可以修改,指针指向的整形数可以修改。
2. 关键字static的作用是什么?
在c语言中,关键字static有三个明显的作用:
1). 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
2). 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。
3). 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。
3. 几种排序算法的时间复杂度的比较:最坏情况和平均情况
冒泡排序 快速排序
选择排序 归并排序
希尔排序 堆排序。
快速排序在平均情况下复杂性为o(nlogn),最坏情况 o(n2),最好o(nlogn)
选择排序最好是 o(n2),最坏情况 o(n2)
堆排序和合并排序在最坏情况下复杂性为o(nlogn)。
冒泡排序、插入排序的比较次数为o(n2),最坏情况 o(n2),最好o(n)
4. 写出float x 与“零值”比较的if语句。
if(x>0.000001&&x<-0.000001)
5. 确定模块的功能和模块的接口是在软件设计的那个队段完成的?
概要设计阶段。
6. heap与stack的差别。
heap是堆,stack是栈。
stack的空间由操作系统自动分配/释放,heap上的空间手动分配/释放。
stack空间有限,heap是很大的自由存储区。
c中的malloc函数分配的内存空间即在堆上,c++中对应的是new操作符。
程序在编译期对变量和函数分配内存都在栈上进行,且程序运行过程中函数调用时参数的传递也在栈上进行。
7. 写一个“标准”宏,这个宏输入两个参数并返回较小的一个。
#define min(x, y) (x)>(y)?(y):(x))
8. void class::function() const中const的用途。
该函数中不能对成员变量的值作修改。
8. char a1 abcd";
sizeof( a1结果为5,字符串末尾还存在一个null终止符。
int a2[3];
sizeof( a2结果为3*4=12(依赖于int)
char* pc = abcd";
sizeof( pc结果为4,指针在32位系统中占4个字节。
9. 已知类string的原型为:
class string
else/ 拷贝构造函数。
string::string(const string &other)
int length = strlen(
m_data = new char[length+1]; 若能加null 判断则更好。
strcpy(m_data,
/ 赋值函数。
string & string:operate =(const string &other)
// 1) 检查自赋值。
if(this ==other)
return *this;
// 2) 释放原有的内存资源。
delete m_data;
// 3)分配新的内存资源,并复制内容。
int length = strlen(
m_data = new char[length+1]; 若能加null 判断则更好。
strcpy(m_data,
// 4)返回本对象的引用。
return *this;
10. 排序二叉树插入一个节点,其节点定义如下:
typedef struct node
bstnode;
bstnode *bstsearch(bstnode *t,int k)
if (t==null) else
12. 编写一个标准strcpy函数。
void *strcpy(char *strdest, const char *strsrc)
13. 编写单向链表的删除操作,链表节点定义如下:
int sll_remove(struct node **rootp, struct node *node);
函数的第一个参数是指向链表根指针的指针,第二个参数是一个指向欲删除的。
节点的指针。如果链表并不包含欲删除的节点,函数就返回假,否则它就移除。
这个节点并返回真。把一个指向欲移除的节点的指针而不是欲移除节点的值作。
为参数传递给函数有哪些优点?
#include <>
#include <>
#define false 0;
#define true 1;
typedef struct node
struct node *link;
int value;
node;
node *create()
node *head, *tail, *p;
int x;
char str;
head = tail = null;
printf("input data.");
while(1 ==scanf("%d", x))
scanf("%c", str);
return head;
int all_remove(node **linkp, node *deleted)
node *current;
while((current = linkp)!=null &¤t !=deleted)
linkp = t->link;
if(current ==deleted)
else return false;
14.二叉树查找。
#include <>
#include <>
#define max 10
int data[max] =
为力新国际
stack空间有限,heap是很大的自由存储区。c中的malloc函数分配的内存空间即在堆上,c 中对应的是new操作符。程序在编译期对变量和函数分配内存都在栈上进行,且程序运行过程中函数调用时参数的传递也在栈上进行。7.写一个 标准 宏,这个宏输入两个参数并返回较小的一个。define min x...
为力新国际
一 选择题 每小题2分,共30分 1.下面对于指针的描述不正确的是 a.指针是地址变量 b.指针不能用除0以外的常量赋值 c.两个指针变量的加减法无意义 d.指针指向不同基类型的变量长度不同 2.下面对于析构函数的描述中不正确的是 a.析构函数是内置函数b.析构函数与类名相同 c.析构函数不能有参数...
新国际结算
单项选择。第一章。1.实现货物或代表货物所有权的单据与货款对流的形式是 b a支付条件 b支付方式 c支付程序 d支付原则。2.在光票汇票结算阶段出现了以汇票结算为基础的 a a商人信用证 b银行信用证 c跟单信用证 d议付信用证。3.英国放弃英国惯例采用 跟单信用证统一惯例 的时期是 d a光票汇...