C语言基础(复试复习版)

C语言基础

1.#include (standard input & output) 包括 printf 和scanf函数
2. C++ 需要加上“using namespace std;”
3. C语言中的数据类型:

分类 名称 在内存中占的字节数
字符 char 1
短整型 short 2
整型 int 4
长整型 long long 8
单精度浮点数 float(6~7位) 4
双精度浮点数 double(15~16位) 8

%d是int类型的输出格式
%lld是long long 类型的输出格式
%c是char类型的输出格式
%f是float类型的输出格式
%s是字符串常量的输出格式

  1. 局部变量分配在内存的“栈”中,存取速度比较快,空间较少,无默认值
  2. 全局变量分配在内存的“堆”中,存取速度比较慢,空间较多,有默认值
  3. 静态变量在定义是也有默认初始值
  4. 数组的定义 int a[10] = {1,1};
  5. while(scanf("&d,&d",&a,&b)!=EOF) (End Of File)
    gets输入字符串就不需要考虑EOF
    scanf和gets函数混用时,注意回车键问题
  6. 输出格式中的“%.1f”是指保留一位小数输出
  7. 符号常量和const常量 #define pi 3.14 等价于const double pi = 3.14
  8. 运算符 取模运算符的优先级和除法运算符相同
  9. 无穷大 const int INF = (1<<30)-1 等价于 const int INF = 0x3fffffff
  10. 在scanf中,除了char数组整个输入的 情况不加&之外,其他都需要加&
  11. scanf对其他格式符(如%d)的输入是以空白符(即空格、换行等)为结束判断标志的,因此除非使用%c把空格按字符读入,其他情况都会自动跳过空格
  12. 字符数组使用%s,读入的时候以空格跟换行为读入结束的标志
  13. double类型的变量,其输出格式变成了%f,而在scanf中却是%lf
  14. 三种使用的输出格式
项目 解释
%md 可以使不足m位的int型变量以m位进行右对齐输出,其中高位用空格补齐
%0md 可以使不足m位的int型变量以m位进行右对齐输出,其中高位用0补齐
%.mf 可以让浮点数保留m为小数输出,这个“保留”使用的是精度的“四舍六入五成双”
  1. getchar和putchar用来处理单个字符 (用多一个getchar吸收掉换行符)
  2. gets和puts输入输出一行字符串
  3. typedef给复杂的数据起一个别名 typedef long long LL;
  4. math函数
函数名 解释
fabs(double x) 对double 型变量取绝对值
floor(double x) 对double 型变量向下取整
ceil(double x) 对double 型变量向上取整
pow(double r,double p) r的p次方
sqrt(double x) 算术平方根
log(double x) 以自然数为底的对数
sin/cos/tan/asin/acos/atan(double x) 三角函数
round(double x) 四舍五入

注:abs(int a) 是使用#include 的头文件
21. 如果表达式是“!=0”,则可以省略“!=0”
如果表达式为“==0”,则可以省略“==0”,并在表达式前添加非运算符
22. do…while会先执行循环体一次,然后才去判断循环条件是否为真,这就使得do…while语句的实用性远不如while
23. 在C语言中不允许在for语句的表达式A里定义变量,但是在C++中可以
24. memset对数组中每一个元素赋相同的值 memset(数组名,值,sizeof(数组名))
例如:menset(a,0,sizeof(a)) 需要string.h
memset使用按直接赋值,即对每个直接赋同样的值,建议赋0或-1
25. \0的ASCII码是0 ,空格的ASCII码是32
26. 如果不是使用gets和scanf函数的%s,一定要再输入的每个字符串后加入"\0
27. string.h头文件

函数名 解释
strlen() 得到字符数组中第一个\0前的字符的个数
strcmp() 返回两个字符串大小的比较结果,比较原则是按字典序
strcpy() 把一个字符串2复制给另一个字符串1
strcat() 把一个字符串2接到另一个字符串1后面
  1. sscanf函数和sprintf函数
    sscanf(str,"%d",&n) 把字符串数组str中的内容以“%d”的格式写到n中
    sprintf(str,"%d",n)把n以%d的格式写到str中
  2. 数组作为函数的参数。第一维不需要填写长度,第二维需要填写长度
    在函数中对数组元素的修改就等同于是对原数组元素的修改(与局部变量不同)
  3. 只要在变量前面加上&,就表示变量的地址。指针是一个unsigned类型的整数
  4. 指针变量支持自增和自减操作。跨越一整个int型
  5. swap函数对地址本身进行修改并不能对main函数里的地址修改,能够使main函数里的数据发生变化的只能是swap函数中对地址指向的数据进行的修改。
  6. 引用不产生副本。对引用变量的操作就是对原变量的操作。常量不可用使用引用(由于是C++语法,因此文件必须保存为.cpp类型)
  7. 结构体定义
struct studentInfo{
	int id;
	char gender; // "F"/"M"
	char name[20];
	studentInfo *next;
}stu,*p;


结构体黎明能定义除了自己本身之外的任何数据类型。不过虽然不能定义本身,但可以定义自身类型的指针变量

访问stu中的变量

stu.id;
stu.name;
stu.next;

访问指针变量p中元素

(*p).id
(*p).name
(*p).next

p->id
p->name
p->next

  1. #include using namespace std;
    c++的输入与输出c++的输入与输出
    cin>> 输入不指定格式,也不需要加取地址运算符&,直接写变量名
    想读入一整行,则需要使用getline函数 cin.getline(str,100);
    cout<< 输出时中间没有加空格。
    想要控制double 型的精度,例如输出小数点后两位,那么加上
#include 
cout<
  1. #include MoreEqu(a,b) (((a)-(b))<(eps))
  2. 黑盒测试:系统后台会准备若干组输入数据,然后让提交的程序去运行这些数据,如果输出的结果与正确答案完全相同,则通过测试。
  3. 单点测试:系统会判断每组数据的输出结果是否正确
  4. 多点测试:要求程序能一次运行所有数据
    (1)while…EOF型 在黑框输出不会触发EOF状态,可以用Ctrl+z
    (2)while…break
    (3)while(T–)型
  5. 结构体中字符串数组赋值用 strcpy函数赋值。在string.h头文件下
  6. C语言中有可以产生随机数据的函数,需要添加stdlib.h头文件与time.h头文件
    rand()%(b-a+1)+a

你可能感兴趣的:(C语言)