【C基础篇】算法、数据类型、运算符与表达式、常见输入出函数

引言

  • 算法:熟悉算法概念、算法的描述;
  • 数据类型:学习C语言最基础的语法知识、认识变量、常量和数据类型;
  • 运算符和表达式:掌握各种运算符、表达式、优先级结合性等内容。

一、算法

1、算法的基本概念

算法是为解决某一特定类型的问题而制定的一个实现过程,具有下列特性:

  • 有穷性:执行步骤有穷、执行时间有穷,不能无限执行;
  • 确定性:每个步骤都有确切定义;
  • 可行性:每一步都能有效运行;
  • 输入:一个算法应有零个或多个输入;
  • 输出:一个算法应有一个或多个输出。

衡量一个算法的好坏,通常从以下几个方面来分析

  • 正确性
  • 可读性
  • 健壮性
  • 时间复杂度和空间复杂度

时间复杂度:算法运行所需的时间;
空间复杂度:算法运行时所需的存储空间的大小。

二、数据类型

1、关键字

关键字是C语言规定的具有特定意义的字符串。用户定义的常量、变量、函数等名称不能与关键字相同。

关键字描述关键字描述
auto声明自动变量break跳出当前循环
case开关语句分支char声明字符型变量或函数
const限定变量不被改变continue结束当前循环,开始下一轮循环
default开关语句其他分支返回语句do循环语句的循环体
double声明双精度变量或函数else条件语句否定分支
enum声明枚举类型extern存储类声明修饰符
float声明浮点型变量或函数for循环语句
goto无条件跳转语句while循环语句的循环条件
int声明整型变量或函数long声明长整型变量或函数
register声明寄存器变量union声明共用体数据类型
short声明短整型变量或函数signed声明有符号型变量或函数
sizeof计算数据类型长度static声明静态变量
struct声明结构体变量或函数switch用于开关语句
typedef用于给数据类型取别名return返回语句
unsigned声明无符号型变量或函数void声明函数无返回值或无参数,声明无指针类型
volatile说明变量在程序执行中可被隐含地改变if条件语句

利用extern关键字。可以在一个文件中引用另一个文件中定义的变量或函数

2、标识符

标识符基本命名规则:

  1. 必须以字母或下划线开头,不能以数字或符号开头;
  2. 除开头外的其他字符可以由字母、下划线或数字组成;
  3. 大写和小写的字母代表不同的标识符;
  4. 标识符不能是关键字;
  5. 标识符应体现一定的功能含义,便于理解;

3、数据类型

C语言中的数据类型包括:基本类型、构造类型、指针类型和空类型等。
在这里插入图片描述

4、变量的存储类别

auto
作用为定义一个局部变量为自动变量,该变量存储于内存的动态存储区中,每次执行到该变量定义语句时,都会产生一个新的变量,并且对其初始化。

#include<stdio.h>

void add()
{
    auto int a = 1;
    a = a + 1;
    printf("%d\n",a);
}

int main()
{
    printf("第一次调用:");
    add();
    printf("第二次调用:");
    add();
    return 0;
}

在这里插入图片描述
static
static变量表示静态变量,存储于内存的静态存储区;在语句块执行过程中,static变量将始终保持它的值,并且初始化操作只在第一次执行时起作用,在随后的运行过程中变量将保持语句块在上一次执行时的值。

#include<stdio.h>

void click()
{
    static int sum = 0;
    sum = sum + 1;
    printf("%d\n",sum);
}
int main()
{
    click();
    click();
    click();
    click();
    click();
    return 0;
}

在这里插入图片描述

三、运算符与表达式

1、强制类型转换

强制类型转换的一般形式如下:

(类型名) (表达式);
num  = (int)(a)*(int)(b);

2、逻辑运算符

逻辑运算符可根据表达式的真假属性返回真值或假值。[‘||’用ii代替]

符号功能示例说明
&&逻辑与A&&B同真为真;单真单假为假
ii逻辑或AiiB同假为假;单真单假为真
逻辑非!A非真为真;非假为假

四、常用数据的输入(出)函数

1、字符输入(出)

输出字符数据使用的是putchar(),作用是向显示设备输出一个字符。

#include<stdio.h>
int main()
{
    putchar('a');
    return 0;
}

输入字符数据使用的是getchar(),作用是从输入设备或终端输入一个字符

#include<stdio.h>
int main()
{
    char i;
    printf("请输入一个字符:\n");
    i = getchar();
    printf("该字符对于的ASCII码为:%d\n",i);
    return 0;
}

在这里插入图片描述

2、字符串输入(出)

字符串输出使用的是puts函数,作用是输出一个字符串到屏幕上。

#include<stdio.h>
int main()
{
    puts("hello");
}

字符串输入使用gets函数,作用是将读取到的字符串(即用户输入的字符串)保存在str变量中,直到新的一行出现为止。

//模拟用户注册登录
#include<stdio.h>
int main()
{
    char account[20];//账号
    char password[20];//密码
    char name[20];//姓名
    char idcard[20];//身份证号码
    puts("请输入账号:");
    gets(account);
    puts("请输入密码:");
    gets(password);
    puts("请输入姓名:");
    gets(name);
    puts("请输入身份证号码:");
    gets(idcard);
    puts("信息核对:");
    puts("您输入的账号为:");
    puts(account);
    puts("您输入的密码为:");
    puts(password);
    puts("您输入的姓名为:");
    puts(name);
    puts("您输入的身份证号码为:");
    puts(idcard);
    return 0;
}

在这里插入图片描述

3、格式输入(出)

printf函数是格式输出函数,作用是向终端(输出设备)输出若干任意类型的数据;
输入函数scanf,按照指定的格式接收用户输入的数据,最后存储在指定的变量中。

格式字符功能说明
%d,%i有符号十进制整数
%u无符号十进制整数
%o无符号八进制整数
%x,%X无符号十六进制整数(大小对应)
%c单个字符
%s字符串
%f小数形式→实数
%e,%E指数形式→实数
%g,%G同%f,%e