C语言基础回顾

1.#include <stdio.h> :每一个C语言程序代码都含有的一个头文件,其中include 称为文件包含命令,其意义是把尖括号<>或引号""内指定的文件包含到本程序中,成为本程序的一部分。被包含的文件通常是由系统提供的,其扩展名为.h,而stdio为standard input output的缩写,意为“标准输入输出” 。

2.数据类型

char              字符数据类型
short            短整型
int                整形
long              长整型
long long      更长的整形
float              单精度浮点数( 有效数字8位,表示范围:-3.40E+38~3.40E+38 )
double          双精度浮点数( 有效数字16位,表示范围:-1.79E+308~-1.79E+308 )
3.sizeof()用于打印数据类型的大小。

3.变量的分类

全局变量:定义在int main()以外,对整个代码有效

局部变量:定义在某一个范围内用{ }括起来的区域,当出了该范围则无效,如果全局变量和局部变量一起存在,则局部变量优先。

局部变量的作用域是变量所在的局部范围。全局变量的作用域是整个工程。

4.常量

const 修饰的常变量:对所赋值的变量有固定作用,后续不能改变

const int num = 4;

define 定义的标识符常量 :定义的标识符不占内存,只是一个临时的符号,预编译后这个符号就不存在了。例如:对MAX的赋值,在main函数外定义。#define MAX 10

枚举常量:是 C语言中的一种基本数据类型,用于定义一组具有离散值的常量。

/* 定义枚举类型 */
enum DAY { MON=1, TUE, WED, THU, FRI, SAT, SUN }; 

/* 使用基本数据类型声明变量,然后对变量赋值 */
    int x, y, z;
    x = 10;
    y = 20;
    z = 30;
    /* 使用枚举类型声明变量,再对枚举型变量赋值 */
    enum DAY yesterday, today, tomorrow;
    yesterday = MON;
    today     = TUE;
    tomorrow  = WED;

5.字符串+转义字符+注释

字符串: 这种由双引号(Double Quote )引起来的一串字符称为字符串字面值( String Literal)

转义字符:转义字符是以“\”为开头的字符,后面跟一个或几个字符,其意思是将反斜杠“\”后面的字符转变成为另外的意思。

 6.选择语句:用if语句、switch case语句实现

7.循环语句:用while语句、for语句、do ... while语句实现

8.函数:是简化代码,代码复用。

库函数:strcpy (字符串的拷贝)

自定义函数:int Add(int x, int y)

9.数组:一组相同类型元素的集合

10.操作符:算术操作符、移位操作符【<<左移操作符        >>右移操作符】、

位操作符【&按位与    |按位或    ^按位异或(均是对二进制进行)

赋值操作符【=        +=         -=         *=         /=         &=         ^=          |=            >>=   <<=    

单目操作符【前置++作用是先进行运算再赋值,而后置++为先先复制后运算

i++ 返回原来的值,++i 返回加1后的值。

间接访问操作符【int* p= &a;

关系操作符【!=】、逻辑操作符【&&  ||

条件操作符【exp1 ? exp2 : exp3

eg:((a>b)?(x):(y)) 意思就是如果满足条件a>b,那么就返回x的值,否则就返回y的值。

11.常见关键字

auto           break            case           char           const            continue           default           do          ​double         else           enum           extern         float           for            goto           if            int            long           register             return            short           signed                 sizeof           static         struct   switch           typedef        union           unsigned           void           volatile           while

12.指针

用来储存地址的变量叫指针变量。

取地址符& 解引用符*
    int a = 10;
    int* p= &a;
    *p =20;

定义一个整型的变量a=10,用&a取出变量a的地址并放入指针变量p中,指针变量p的类型(也就是a的类型)是整型,用解引用符找到p变量的指向对象(a),并对指向对象重新赋值20,打印a的结果时发现打印的就是第二次赋值的20。

13.结构体

允许您存储不同类型的数据项。

struct Books

{ char title[50]; char author[50]; char subject[100]; int book_id;

} book = {"C 语言", "RUNOOB", "编程语言", 123456};

int main()

{ printf("title : %s\nauthor: %s\nsubject: %s\nbook_id: %d\n", book.title, book.author, book.subject, book.book_id); }

//此结构体的声明包含了指向自己类型的指针

struct NODE

{ char string[100];

struct NODE *next_node; };

14.static 存储类指示编译器在程序的生命周期内保持局部变量的存在,而不需要在每次它进入和离开作用域时进行创建和销毁。

静态变量在程序中只被初始化一次,即使函数被调用多次,该变量的值也不会重置。

15.字符串的函数

序号函数 & 目的
1strcpy(s1, s2);
复制字符串 s2 到字符串 s1。
2strcat(s1, s2);
连接字符串 s2 到字符串 s1 的末尾。
3strlen(s1);
返回字符串 s1 的长度。
4strcmp(s1, s2);
如果 s1 和 s2 是相同的,则返回 0;如果 s1<s2 则返回小于 0;如果 s1>s2 则返回大于 0。
5strchr(s1, ch);
返回一个指针,指向字符串 s1 中字符 ch 的第一次出现的位置。
6strstr(s1, s2);
返回一个指针,指向字符串 s1 中字符串 s2 的第一次出现的位置

C 排序算法

冒泡排序

冒泡排序(英语:Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。

过程演示:

实例

#include <stdio.h>

void bubble_sort(int arr[], int len)

{ int i, j, temp;

for (i = 0; i < len - 1; i++)

for (j = 0; j < len - 1 - i; j++)

if (arr[j] > arr[j + 1]) {

temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } }

int main() { int arr[] = { 22, 34, 3, 32, 82, 55, 89, 50, 37, 5, 64, 35, 9, 70 }; int len = (int) sizeof(arr) / sizeof(*arr); bubble_sort(arr, len); int i; for (i = 0; i < len; i++) printf("%d ", arr[i]); return 0; }

选择排序

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

过程演示:

实例

void selection_sort(int a[], int len) { int i,j,temp; for (i = 0 ; i < len - 1 ; i++) { int min = i; // 记录最小值,第一个元素默认最小 for (j = i + 1; j < len; j++) // 访问未排序的元素 { if (a[j] < a[min]) // 找到目前最小值 { min = j; // 记录最小值 } } if(min != i) { temp=a[min]; // 交换两个变量 a[min]=a[i]; a[i]=temp; } /* swap(&a[min], &a[i]); */ // 使用自定义函数交換 } } /* void swap(int *a,int *b) // 交换两个变量 { int temp = *a; *a = *b; *b = temp; } */

插入排序

插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到 {\displaystyle O(1)} {\displaystyle O(1)}的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后

挪位,为最新元素提供插入空间。

void insertion_sort(int arr[], int len)

{ int i,j,temp;

for (i=1;i<len;i++)

{ temp = arr[i];

for (j=i;j>0 && arr[j-1]>temp;j--)

arr[j] = arr[j-1]; arr[j] = temp; } }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值