自己整理的几个C面试小题
来源:互联网 发布:法兰克系统编程 编辑:程序博客网 时间:2024/05/22 07:56
概念题:
1.c++中为什么用模板类?a.与类型无关,具有很高的可复用性。b.他在编译的时而不是运行时候检查数据类型,保证了类型安全性c.他与平台无关的,具有可已移植性d.可用于基本数据类型e.可用来创建动态增长和减小数据结构 //?????2.简介多态,虚函数,纯虚函数多态:一个接口(方法),实现不同种功能虚函数:用virtual修饰的重写方法纯虚函数:在虚函数后面加上=0,告诉编译器这是纯虚函数/*如果在父类定义虚函数,那么在定义对象时,如果用父类定义对象,则执行父类的函数体如果用子类定义对象,那么执行子类的函数体,这就实现了一个接口,不同功能的作用*/3.inline函数与非inline区别?inline函数为内联函数,在函数调用时直接调用,而没有上下文环境非inline在函数调用时则会保存上下文环境。4.什么是函数重载?允许函数名相同,但参数的类型或者参数的个数不能相同,并且不可以以返回值类型重载。5.const在c++跟c中的不同?C中的const:被修饰的内容不可以被改变,使用场合:修饰变量,函数参数,返回值等。 而且c中的const默认时外部链接,因此在不同编译单元中,如果有同名的const则会报错C++中的const:1.类外的const默认时内部链接的,因才在不同的编译单元中可以重名 2.它是编译时常量,因此可以像#define一样使用,因此可以在头文件定义const变量, 并且在其包含的不同的cpp文件中使用不会引起命名冲突。 3.类中的const,与c语言中的一样 类中的const变量占用内存空间 类中的const成员变量,需要在构造函数初始化列表中初始化 引用与指针有什么区别?『指针』是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元。『引用』跟原来的变量实质上是一个东西,只不过是原变量的一个别名指针有多级的,而引用只有一级的指针可以用const修饰,引用不可以指针可以赋值NULL,引用不可以sizeof指针:指针的大小sizeof引用:所指变量(对象的)大小malloc与new的区别?1.malloc和free是c/c++语言的标准库函数,new/delete是运算符。他们都可以申请动态内存和释放2.对于非内部数据类型的对象而言,malloc/free无法满足动态对象的要求。即定义对象时自动调用构造函数,对象结束时自动执行析构函数。malloc/free可以在c和c++中使用,而new/delete只能在c++中使用。new出来的指针带直接带类型信息的,相当与malloc加构造函数的执行。
编程题:
/*编程实现,对于输入任何一个非负数,打印输出与其等值的六进制数 * */#include <stdio.h>int power(int num,int index){ int i; int sum = 1; for(i=0;i<index;i++) { sum = sum * 10; } sum = num * sum; return sum;}int main(){ int temp; int sum = 0,res; int num,i=0; printf("输入一个非负数\n"); scanf("%d",&num); while(num != 0) { temp = num % 6; num = num / 6; sum = sum + power(temp,i); i++; } printf("%d\n",sum); return 0;}
/*编程实现,在已知字符串中查找子串,并返回第一个子串的首地址,如果没有返回空 * */#include <stdio.h>#include <string.h>char *findSub(char *a,char *b){ int i,j,k = 0; for(i=0;i<strlen(a);i++) { if(a[i] == b[0]) { for(j=0;j<strlen(b);j++) { if(a[i+j] == b[j]) { k++; if(k == strlen(b)) { return a+i; } } } k = 0; } } printf("无子串\n"); return NULL;}int main(){ char a[] = "asdfjhqklfhs"; char b[] = "sd"; char *p = NULL; printf("%p\n",a); p = findSub(a,b); printf("%p\n",p); return 0;}
/*"标识符"是由小写字母,大写字母,数字组成的字符串 * 1.大写字母后面不能是数字 * 2.首字母不能是数字 * */#include <stdio.h>#include <string.h>int low(char ch){ if(ch>='a' && ch<='z'){ return 1; }else{ return 0; }}int up(char ch){ if(ch>='A' && ch<='Z'){ return 1; }else{ return 0; }}int num(char ch){ if(ch>='0' && ch<='9'){ return 1; }else{ return 0; }}int main(){ char arr[]= "as233dfdAHJASD"; char *p = arr; int i; int flag = 0; for(i=0;i<strlen(arr);i++){ if(!up(arr[i]) && !low(arr[i]) && !num(arr[i])){ printf("必须由大小写字母,数字组成\n"); return 1; } } if(num(*p) == 1){ printf("首字母不能是数字\n"); return 2; } while(*p != '\0') { if(flag && num(*p)){ printf("大写字母后面不能是数字\n"); return 3; } if(up(*p)){ flag = 1; }else{ flag = 0; } p++; } printf("right!\n"); return 0;}
/*一个数如果等于他的因子之和,这个数称之为“完数”,例如6=1+2+3 *编程找出1000以内的所有完数 * */#include <stdio.h>int isRight(int num) { int sum = 0; int i; for(i=1;i<num;i++) { if(num%i == 0) { sum = sum + i; } } return sum;}int main(){ int i; for(i=1;i<1000;i++) { if(i == isRight(i)) { printf("%5d",i); } } printf("\n"); return 0;}
阅读全文
0 0
- 自己整理的几个C面试小题
- 整理的几个面试题目
- 总结自己写C的几个小问题
- 面试的几个小问题?
- 几个小问题的整理
- PHP几个比较常见的面试程序题整理
- 自己整理的前端面试的东西
- C++面试的几个小题目
- 关于面试的几个小问题
- 几个小知识点的整理170308
- 推荐几个自己用的小软件
- 提高自己工作效率的几个小技巧
- 让自己快乐的几个小建议
- 自己做的几个小项目
- 自己的小代码整理库
- 自己整理的一些小问题
- C语言整理:几个库函数的学习
- 几个自己写的字符串C函数
- hdu6199(此题是搜索但是阔以改成dp的)
- 笔记:mysql修改数据表表名sql语句。
- 9月13号某公司一道有趣面试题
- Mysql的执行顺序
- liferay获取媒体库图片
- 自己整理的几个C面试小题
- Spring 集成hessian进行接口的暴露和访问
- 我的Java设计模式-单例模式
- [bzoj1606][Usaco2008 Dec]Hay For Sale 购买干草
- 解惑spring事务传播特性之嵌套事务
- framework bundle多次加载注意
- SpringMVC Controller介绍及常用注解
- Android中的Intent和Intent-filter总结
- android studio app显示红叉