附录
codeblocks快捷键
Ctrl+Shift+C:注释掉当前行或选中块
Ctrl+Shift+X:解除注释
Tab:缩进当前行或选中块
Shift+Tab:减少缩进按住
Ctrl,滚动鼠标滚轮,放大或缩小字体编译与运行部分
Ctrl + F9:编译
Ctrl + F10:运行上次成功编译后的程序
Ctrl + Shift + F9:编译当前文件(而不是当前打开的工程项目)
F9:编译并运行当前代码(如果编译错误会提示错误而不会运行)
F8:debug
F10:全屏
Ctrl + C:终止正在运行的程序
Ctrl + Z:终止输入界面部分
Shift + F2:显示或隐藏左侧导航栏
几个头文件:
标准:
#include<stdio.h>
#include <stdlib.h>
数学运算:#include <math.h>
字符串:#include <string.h>
全局变量定义方法:
在main的括号外面定义;
如
int x = 20;
int main()
{
printf("x = %d", x);
}
第二章 C数据类型
2.1 关于格式问题
1)若定义 int x = 2.5 ,则实际上取x为int型整数,且x=2;
2) 若定义float x = 2.5, 则“ printf("x = %f", x);”, 输出x = 2.500000
2.2 变量或数据类型占内存的大小
sizeof函数
2.3 宏变量
宏变量没有数据类型;
# define PI 3.1415926 // 定义宏常量PI
2.4 const常量
有数据类型,
const double PI = 3.14159;
2.5 强制类型转换和自动类型转换
1) int型转为float
int m = 5;
printf("(float)m / 2"); // 输出2.500000 将int 转换为float型
2) 若定义int a, b ,c; float s; // 需要计算s = 1/2(a + b+ c);
s = 0.5 * (a+b+c) // Y
s = 1.0/2 * (a +b +c) // Y float型 * int 型可转f为float型
s = (a + b+ c)/2.0 // Y
s =(float) (a+b+c) / 2 // Y
下面2种情况为错
s = 1/2 * (a + b+c) // N 1/2等于int 型0
s = (float)((a+b+c) / 2) //N (a+b+c)/2 为int型运算,已经丢失小数部分;
2.6 标准熟悉函数
# include <math.h>
sqrt // 开根号; fabs :绝对值; log:计算lnx; exp:计算e的指数;
pow(x, y): 计算x的y次方; sin, cos:三角函数
2.7 scanf()函数的%c格式符输入字符型数据时存在的问题
在用%c格式读入字符时,空格字符、转义字符(包括回车)都会被当做有效字符读入。
第4章 输入输出
printf格式转换说明:
printf格式修饰符
如:
long int a = 10000
long double b = 100.23333
printf("%10ld", a); //即输出long int形式,同时占5个字符空间
printf("%7.2Lf", b); //即输出long double形式,宽度=7, 保留两位小数
第8章 数组
数组初始化为0:下面两种方式等价
int a[10] = {0};
int a[10];
第10章 字符串
1. 字符串输入输出
方法1:作为char数组输入输出,%c
字符串的末尾为'\0'
方法2:作为字符串整体输入输出,%s,
如输入:scanf("%s", str); // 表示输入一个字符串,直到空白字符(空格、回车或制表符)为止;
缺点:不能输入带空格的字符串;
方法3:输入:字符串处理函数gets(),可以输入带空格和制表符的字符串。gets以回车作为字符串的终止符,同时将回车从输入缓冲区读走,而scanf不带走回车符,回车符仍然留在缓冲区中。
方法4:输出:函数puts(),遇到'\0'时输出结束,并自动增加换行符。
2. 字符串处理函数
头文件:#include <string.h>
strlen(str): 长度
strcpy(str1, str2):把str2复制到字符数组str1中
strcmp(str1, str2):比较str1和str2的大小。str1>str2:》0; str1=str2: 0; str1<str2: <0
strcat(str1, str2):把str2添加到str1的末尾。注意str1应定义的足够大
strncpy(str1, str2): 把str2的至多前n个字符复制到str1中;
strncmp(str1,str2):比较前n个字符;
strncat(str1, str2):把str2的至多前n个字符拼接到str1末尾。
11章 指针
1. 指针函数
声明格式,如:int (*compare)(int a, int b) :被指向的函数有2个形参,返回值为int
调用格式:(*compare)(a, b):函数调用
下例,为通过指针函数 传递两个函数,Ascending和Descending
void SelectionSort(int score[], int n, int (*compare)(int a, int b))
{
int i, j, k;
for(i=0; i<n-1;i++)
{
k = i;
for(j = i+1; j< n; j++)
{
if((*compare)(score[j],score[k]))
{
k = j;
}
}
if(k!= i)
{
Swap(&score[i],&score[k]);
}
}
}
int Ascending(int a, int b)
{
return a < b;
}
int Descending(int a, int b)
{
return a > b;
}
2. 返回值为指针的函数
如 struct link *AppendNode(struct link *head):表明返回值是struct link的指针类型,此处是返回头指针head;
12章 结构体
1. 结构体别名
typedef 关键字:有别名作用
typedef struct link
{
int data;
struct Node *next;
}Node;
2. 结构体初始化
struct student
{
long id;
char name[20]
char sex;
int birthYear
int score[4];
}
初始化:struct student = {100310121, “王刚”, 'M', 1991, {72, 83, 90, 82}}
3. 结构体数组初始化:
一维数组两个大括号
struct student ={
{100310121, “王刚”, 'M', 1991, {72, 83, 90, 82}},
{100310122, “小林”, 'M', 1992, {72, 83, 90, 82}}
}
4.