C语言笔记

附录

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. 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值