1.不能做switch()的参数类型是:
switch()的参数不能为实行。其参数类型可以为char/short/int /long/bool/枚举类等。
2.C++中如何声明const void f(void)函数为c函数中的函数库?
使用extern 关键字,extern "C" const void f(void).
3.const char*p 和 char *const p的区别?
前者是可以改变值,不能改变地址;后着是可以改变地址,不能改变地址。
4.写出面向对象程序设计的优点:
面向对象程序设计的特点是“抽象”“封装”“继承”“多态”四个基本特点。所以可以看出面向程序设计方法继承了结构化程序设计方法的优点,同时又比较有效的克服了结构化程序设计的弱点。
5.关键字volatile/inline有什么用?
inline:一般用于定义内联函数,内联函数与一般函数区别是:①内联函数较短;②调用内联函数时直接把他嵌入到调用函数中即可。一般函数有保护堆栈的开销。(调用内联函数时会进行类型检查,宏定义没有类型检查)。
volatile:用它定义的变量在程序编译阶段不做优化,每次都必须从内存中读取变量的值。
6.分别写出bool/int/float、指针类型变量a与0的比较
7.为Type *s在堆中开辟分配空间
首先考虑内存申请函数malloc/calloc等。
Type *s = (Type *s)malloc(sizeof(Type));
8.动态特征是什么?
在大多数情况下,程序的功能是在编译时就确定下来的,称之为静态特征。
程序功能在运行时才确定下来称之为动态特征。(在语言层面上支持程序的可扩展性。)
9.全局变量可以定义在可被多个.c文件包含的头文件中,在头文件或不同的.c文件中用static来修饰同名全局变量。
10.二叉树的遍历。
先序遍历(中左右) 中序遍历(左中右) 后序遍历(左右中)
例;先序遍历:CEDBA 中序遍历:DEBAC 后序遍历:DABEC
从后续节点可知树根为c。中序可知,根节点左边为左孩子,根节点右边为又孩子。所以没有左孩子,只有右孩子。根据(中序)DEBA和(后序)DABE,E为根节点,D为左节点,BA为右节点。中序遍历为BA,后序遍历AB,推出B是右子树的根节点。
11.进程间通讯方式有那些?
答:管道、信号、信号量、消息队列、共享内存、套接字
12.以下代码输出内容?
#include <stdio.h>
union
{
int i;
int j;
}a;
int main()
{
a.i = 5;
a.j = 6;
printf("%d",a.j);
printf("%d",a.i);
return 0;
}
13.数组的排序算法:
冒泡排序、选择排序、插入排序、归并排序、快速排序、希尔排序、堆排序、计数排序、桶排序、基数排序 。
①冒泡排序:
思想: 从左到右,相邻元素进行比较。每次比较一轮,就会找到序列中最大的一个或最小的一个。这个数就会从序列的最右边冒出来。
相关代码:
#include <stdio.h>
int sort(int *arr,int len)
{
for(int i=0;i<len;i++)
{
for(int j=0;j<len-i;++j)
{
if(arr[j]>arr[j+1])
{
int n;
n=arr[j];
arr[j]=arr[j+1];
arr[j+1]=n;
}
}
}
printf("排序后:\n");
for(int i=0;i<len;i++)
{
printf("%d ",arr[i]);
}
printf("\n");
return 0;
}
int main()
{
int arr[] = {1,22,45,4,32,5,3,56,2,98};
int length = sizeof(arr)/sizeof(arr[0]);
sort(arr,length);
return 0;
}
14.下面的程序是否存在问题?如果有,请指出来:
void GetMemory(char **p,int num)
{
*p = (char*)malloc(num);
//问题一:没有判断是否申请成功;
}
void Test (void)
{
char *str = NULL;
GetMemory(&str,100);
strcpy(str,"hello");
printf(str);
//问题二:没有进行free
}
15.在某32位操作系统下C++程序,请计算sizeof的值:
char str[] = "raysharp.cn";
char *p = str;
int n = 10;
//请计算以下值
sizeof(str) //答案:12
sizeof(p) //答案:4
sizeof(n) //答案:4
void Fun(char str[100])
{
sizeof(str) //答案:4
}
void *p = malloc(100);
sizeof(p) //答案:4
16.写一个函数计算long变量中有多少个bit的值为1;
#include <stdio.h>
int count_bits_1(int value)
{
int count = 0,i = 0;
for(i = 0; i < 32 ; i++)
{
if(value & 0x01)
{
count ++;
}
value >>= 1;
}
return count;
}
int main()
{
printf("%d\n",count_bits_1(7));
}
17.Linux有哪些内核同步方法?
1,原子变量 2,加锁
18.用shell脚本,写一个简单的判断程序。判断变量a=0,显示"correct",a=1显示"incorrect";
#! /bin/bash
read -p "请输入0或1:" a
if[$a -eq 0]
then
echo "correct"
fi
if [$a -eq 1]
then
echo "incorrect"
fi
echo "error"
19.用linux命令查找当前文件下的所有.c文档
ls ./*.c
20.写出判断ABCD的四个表达式是否正确,若正确,写出经过表达式中a的值;
int a = 4;
a+=(a++) 答案:9
a+=(++a) 答案:10
(a++)+=a 答案:不对
(++a)+=(a++) 答案:11