【C基础篇】算法、数据类型、运算符与表达式、常见输入出函数
【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、标识符
标识符基本命名规则:
- 必须以字母或下划线开头,不能以数字或符号开头;
- 除开头外的其他字符可以由字母、下划线或数字组成;
- 大写和小写的字母代表不同的标识符;
- 标识符不能是关键字;
- 标识符应体现一定的功能含义,便于理解;
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 |