C语言部分:
1.写一个宏, 求两个整数的最大值.
#include
#define MAX a>b?a:b;
Void main{
Int a ,b;
Printf(“请输入两个数:”);
Scanf(“%d %d”,&a,&b);
Printf(“max = %d”,MAX);
}
2.内存如何划分(地址从高到低), 每个分区的特点是什么?
内存分为五大区,分别是:栈区、堆区、静态区、常量区、代码区
1.栈区:内存为8M,地址从高到低排列,函数调用时,在栈区开辟内存,函数调用结束时就会立马被系统回收
2.堆区:开辟内存用函数malloc calloc给开辟的内存清零 realloc重新分配内存
生命周期为从程序开始一直到程序结束
3.静态区:静态区关键字为static,在主函数外定义的变量是全局变量,可被改写,作用域在整个程序,他的生命周期重程序开始一直到程序结束
4.常量区:存储常量数字 ,字符或字符串,是立即数,立即使用立即释放,存储在CPU中,在使用是通常从常量区拷贝到栈区开辟的变量空间中
5.代码区:存储代码,生命周期从程序开始到程序结束
3.变量定义三要素__变量类型___、__变量名____和__变量值____
4.编写程序,实现两个整数的交换
#include
Void main {
Int a, b;
Int temp = a;
A = b;
B = temp;
}
5.逻辑运算符包括__&&____、__||____和__!____
6.分支结构的分类和格式;
If(条件){表达式}
Else{表达式}
Switch:
Case1:表达式1;
Case2:表达式2;
...,
Default:表达式
7.编写程序, 输入一个年份, 判断该年份是否是闰年
#import
Void main {
Printf(“请输入年份:”);
Scanf(“%d”,&a);
If(a % 4 ==0 || a & 100 == 0){
Printf(“该年是闰年”)
}
Else
printf(“该年不是闰年“);
}
8.for循环包含__循环变量初值____、__循环条件____、__循环步长____和__循环体____四部分
9.break和continue的作用
Break是结束本次循环
Contiue是跳出本次循环,直接进入下次循环
10.sizeof和strlen的区别
Sizeof是指变量所占空间 字节长度
Strlen是指字符串的长度
11.用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题)
#import
#define second 365*24*60*60;
12.static的作用
Static 静态变量的关键词,定义静态变量,作用域是整个程序
13.堆和栈的区别
(1)栈区是由编译器自动管理,一旦函数调用结束内存有系统自动的回收,无需手动释放,其进栈方式是先进后出,进栈出栈有指令进行,效率较高,当内存空间超过8M时,会出现溢出。其分配方式有静态分配(由编译器完成)和(alloc函数完成)动态分配
(2)堆是高地址扩展的数据结构,不是连续的内存空间,遍历方向是由低地址向高地址,其释放是由程序员控制,容易产生内存泄漏;其内存大小受限于计算机系统的中有效虚拟内存,数据的存入提取均由函数库完成。堆得分配方式是动态分配(alloc函数完成)有程序员手动释放。
14.堆区常见的内存问题
堆是一种经过排序的树形数据结构,每个结点都有一个值。通常所说的堆的数据结构,是指二叉堆。堆的特点是根结点的值最小,且根结点的两个子树也是一个堆。由于堆的这个特性,常用来实现优先队列,堆的存取是随意,这就如同在图书馆的书架上取书,虽然书的摆放是有顺序的,但是想取任意一本时不必像栈一样,先取出前面所有的书,书架这种机制不同于箱子,可以直接取出想要的书。
15.指出下述变量a的含义:
int a[10] :数组名
int *a :变量名
int (*a)(int) :函数变量
16.变量名的命名规范是什么?
1).以字母 下划线开头
2).非系统关键字
3).包含字母、数字、下划线
17.指针和地址是什么关系?
指针就是地址
18.局部变量能否和全局变量重名?
19.请写出下列代码的输出内容
#include
int main(void)
{
int a,b,c,d;
a=10;
b=a++;
c=++a;
d=10*a++;
printf("b,c,d:%d,%d,%d",b,c,d);