废话不多说直接开整
注:本博文超级详细但是还是适合有C语言基础的观看
耗时很久,内容不会有问题但是 ⚠️字体晦涩望见谅
引子 第一个C语言程序
#include <stdio.h> int main() { printf("Hello, LJY!\n"); return 0; }
main函数
每个C语⾔程序不管有多少⾏代码,都是从 main 函数开始执⾏的, main 函数是程序的⼊⼝, main 函数也被叫做:主函数。
main 前⾯的 int 表⽰ main 函数执⾏结束的时候返回⼀个整型类 型的值。所以在 main 函数的最后写 return 0; 正好前后呼应。
库函数与占位符
库函数
C语言的标准库提供了大量的库函数,用于各种操作,包括输入输出、字符串处理、数学运算、内存分配等。所以以常见为准,其他可看https://cplusplus.com/reference/clibrary/https://cplusplus.com/reference/clibrary/
1. 输入输出函数(stdio.h
)
printf
:格式化输出到标准输出(如屏幕)scanf
:格式化输入puts
:输出字符串并换行gets
:输入字符串(不安全,建议避免使用)fopen
:打开文件fclose
:关闭文件fread
/fwrite
:从文件读/写数据块fprintf
/fscanf
:格式化输出/输入到文件
#include <stdio.h> int main() { printf("Hello, World!\n"); // 输出到屏幕 FILE *file = fopen("test.txt", "w"); fprintf(file, "Hello, File!\n"); // 输出到文件 fclose(file); return 0; }
2. 字符串处理函数(string.h
)
strlen
:获取字符串长度strcpy
:复制字符串strncpy
:复制指定长度的字符串strcat
:连接字符串strcmp
:比较字符串strstr
:查找子字符串strchr
:查找字符首次出现的位置#include <stdio.h> #include <string.h> int main() { char str1[20] = "Hello"; char str2[20] = "World"; strcat(str1, str2); // 连接字符串,str1变为"HelloWorld" printf("连接后字符串:%s\n", str1); return 0; }
3. 数学函数(
math.h
)pow
:计算幂次sqrt
:计算平方根sin
/cos
/tan
:三角函数fabs
:取绝对值ceil
:向上取整floor
:向下取整
#include <stdio.h> #include <math.h> int main() { double x = 9.0; printf("平方根:%.2f\n", sqrt(x)); // 输出:3.00 printf("2的3次方:%.2f\n", pow(2, 3)); // 输出:8.00 return 0; }
4. 内存管理函数(stdlib.h
)
malloc
:分配内存calloc
:分配并初始化内存realloc
:重新分配内存free
:释放内存
#include <stdio.h> #include <stdlib.h> int main() { int* arr = (int*)malloc(5 * sizeof(int)); // 分配内存 if (arr == NULL) { printf("内存分配失败\n"); return 1; } for (int i = 0; i < 5; i++) { arr[i] = i + 1; } free(arr); // 释放内存 return 0; }
5. 时间和日期函数(time.h
)
time
:获取当前时间clock
:获取程序运行时间difftime
:计算两个时间的差值localtime
:将时间转换为本地时间strftime
:格式化时间
#include <stdio.h> #include <time.h> int main() { time_t now = time(NULL); // 获取当前时间 printf("当前时间:%s", ctime(&now)); // 输出时间 return 0; }
6. 字符处理函数(ctype.h
)
isalpha
:判断是否是字母isdigit
:判断是否是数字isspace
:判断是否是空白字符toupper
:转换为大写tolower
:转换为小写
其他应用类似
#include <stdio.h> #include <ctype.h> int main() { char ch = 'a'; printf("大写:%c\n", toupper(ch)); // 输出:A return 0; }
7. 标准库通用函数(stdlib.h
)
atoi
:将字符串转换为整数
#include <stdio.h> #include <stdlib.h> int main() { const char *str = "12345"; int num = atoi(str); // 字符串转换为整数 printf("The integer value is: %d\n", num); return 0; }
atof:
将字符串转换为浮点数
#include <stdio.h> #include <stdlib.h> int main() { const char *str = "3.14159"; double num = atof(str); // 字符串转换为浮点数 printf("The float value is: %lf\n", num); return 0; }
rand:
生成随机数
#include <stdio.h> #include <stdlib.h> #include <time.h> int main() { // 初始化随机数种子 srand(time(NULL)); // 生成并打印10个随机数 for (int i = 0; i < 10; i++) { int randomNum = rand(); // 生成随机数 printf("Random number %d: %d\n", i + 1, randomNum); } return 0; }
srand
:设置随机数种子
#include <stdio.h> #include <stdlib.h> #include <time.h> int main() { srand(42); // 设置固定的随机数种子 // 生成并打印5个随机数 for (int i = 0; i < 5; i++) { int randomNum = rand(); printf("Random number %d: %d\n", i + 1, randomNum); } return 0; }
abs
:计算整数的绝对值
#include <stdio.h> #include <stdlib.h> int main() { int num = -42; int absValue = abs(num); // 计算绝对值 printf("The absolute value of %d is: %d\n", num, absValue); return 0; }
system
:执行系统命令
#include <stdio.h> #include <stdlib.h> int main() { char str[] = "123"; int num = atoi(str); // 转换字符串到整数 printf("转换后的整数:%d\n", num); // 输出:123 return 0; }
占位符
在C语言中,占位符用于printf
和scanf
等函数中格式化输入和输出。下列为常见的
1. 整数型
%d
:十进制整数%i
:十进制整数(与%d
类似)%u
:无符号十进制整数%o
:无符号八进制整数%x
:无符号十六进制整数(小写字母)%X
:无符号十六进制整数(大写字母)
#include <stdio.h> int main() { int a = 123; unsigned int b = 456; printf("十进制整数:%d\n", a); // 输出:123 printf("无符号十进制整数:%u\n", b); // 输出:456 printf("八进制整数:%o\n", b); // 输出:710 printf("十六进制整数(小写):%x\n", b); // 输出:1c8 printf("十六进制整数(大写):%X\n", b); // 输出:1C8 return 0; }
2. 字符型
%c
:单个字符
#include <stdio.h> int main() { char str[] = "Hello, C!"; printf("字符串:%s\n", str); // 输出:Hello, C! return 0; }
3. 字符串型
%s
:字符串
#include <stdio.h> int main() { char str[] = "Hello, C!"; printf("字符串:%s\n", str); // 输出:Hello, C! return 0; }
4. 浮点型
%f
:浮点数(默认小数点后6位)%e
:以科学计数法表示的浮点数(小写e
)%E
:以科学计数法表示的浮点数(大写E
)%g
:自动选择%f
或%e
的格式%a
:以十六进制表示的浮点数
#include <stdio.h> int main() { float f = 3.14159; double d = 12345.6789; printf("浮点数:%f\n", f); // 输出:3.141590 printf("科学计数法(小写e):%e\n", d); // 输出:1.234568e+04 printf("科学计数法(大写E):%E\n", d); // 输出:1.234568E+04 printf("自动选择:%g\n", d); // 输出:12345.7 return 0; }
5. 指针型
%p
:指针地址
#include <stdio.h> int main() { int num = 10; int *p = # printf("指针地址:%p\n", p); // 输出类似:0x7ffeece3c6dc return 0; }
6. 宽度和精度控制
%.nf
:小数点后保留n
位%m.nf
:输出宽度为m
,小数点后保留n
位
#include <stdio.h> int main() { float pi = 3.14159; printf("保留2位小数:%.2f\n", pi); // 输出:3.14 printf("宽度8,保留3位小数:%8.3f\n", pi); // 输出: 3.142 return 0; }
7. 特殊符号(不常用)
%%
:输出百分号%
#include <stdio.h> int main() { printf("显示百分号:%%\n"); // 输出:显示百分号:% return 0; }
关键字介绍
C 关键词 - cppreference.com 这里写了全部详细看文档
关键字(Keyword)也叫保留字(Reserved Word),是指已被编程语言本身使用,不能作为其他用途使用的单词。
数据类型关键字
int
:表示整型float
:表示单精度浮点型double
:表示双精度浮点型char
:表示字符型void
:表示空类型
#include <stdio.h> int main() { int a = 10; float b = 3.14; double c = 5.6789; char d = 'A'; void *p; // void类型指针 p = &a; printf("int a = %d\n", a); printf("float b = %f\n", b); printf("double c = %lf\n", c); printf("char d = %c\n", d); return 0; }
数据修饰符关键字
const
:常量volatile
:易变变量,编译器不会优化signed
、unsigned
:指定数据的有符号或无符号
#include <stdio.h> int main() { const int maxValue = 100; // 常量 unsigned int positiveNum = 50; // 无符号整数 signed int negativeNum = -25; // 有符号整数 printf("maxValue = %d\n", maxValue); printf("positiveNum = %u\n", positiveNum); printf("negativeNum = %d\n", negativeNum); return 0; }
其他关键字
sizeof
:返回数据类型或变量的大小typedef
:定义数据类型的别名struct
:结构体union
:共用体enum
:枚举类型
#include <stdio.h> typedef struct { int id; char name[20]; } Student; enum Color { RED, GREEN, BLUE }; int main() { Student s1 = {1, "Alice"}; enum Color c = GREEN; printf("Student ID = %d, Name = %s\n", s1.id, s1.name); printf("Color = %d\n", c); printf("Size of int: %lu bytes\n", sizeof(int)); printf("Size of Student: %lu bytes\n", sizeof(Student)); return 0; }
控制语句关键字
if
、else
:条件判断switch
、case
、default
:多分支选择语句for
、while
、do
:循环控制语句break
:跳出循环或switch
语句continue
:跳过本次循环,继续下一次循环return
:函数返回
#include <stdio.h> int main() { int a = 5; if (a > 0) { printf("a is positive\n"); } else { printf("a is non-positive\n"); } for (int i = 0; i < 3; i++) { if (i == 1) continue; printf("Loop index: %d\n", i); } return 0; }
存储类关键字
auto
:局部变量默认的存储类,可省略static
:静态存储方式extern
:声明外部变量register
:建议将变量存储在寄存器中
#include <stdio.h> int globalVar = 10; // 声明一个全局变量 void test() { static int count = 0; // 静态局部变量 count++; printf("Static count = %d\n", count); } int main() { extern int globalVar; // 使用外部变量 printf("globalVar = %d\n", globalVar); for (int i = 0; i < 3; i++) { test(); } return 0; }
字符和ASCII编码
在键盘上可以敲出各种字符,如:a,q,@,#等,这些符号都被称为字符,C语⾔中字符是⽤单引号 括起来的,如:'a','b','@'。
我们知道在计算机中所有的数据都是以⼆进制的形式存储(0与1组合)的,那这些字符在内存中分别以什么样的⼆ 进制存储的呢?如果我们每个⼈⾃⼰给这些字符中的每个字符编⼀个⼆进制序列,这个叫做编码,为 了⽅便⼤家相互通信,不造成混乱,后来美国国家标准学会(ANSI)出台了⼀个标准ASCII编码,C 语⾔中的字符就遵循了ASCII编码的⽅式。
ASCII 码表 ASCII 码表 - cppreference.com
我们不需要记住所有的ASCII码表中的数字,使⽤时查看就可以,不过我们最好能掌握⼏组特殊的数据
- 字符A~Z的ASCII码值从65~90
- 字符a~z的ASCII码值从97~122
- 对应的⼤⼩写字符(a和A)的ASCII码值的差值是32
- 数字字符0~9的ASCII码值从48~57
- 换⾏ \n 的ASCII值是:10
- 在这些字符中ASCII码值从0~31这32个字符是不可打印字符,⽆法打印在屏幕上观察
字符
C语⾔中如何表⽰字符串呢?使⽤双引号括起来的⼀串字符就被称为字符串,如:"abcdef",就是⼀个 字符串。%s 来指定
#include <stdio.h> int main() { char arr1[] = {'a', 'b', 'c'};//arr1 数组中存放 3 个字符 char arr2[] = "abc"; //arr2 数组中存放字符串 printf("%s\n", arr1); printf("%s\n", arr2); return 0; }
\0 是字符串的结束标志。所以我们在使⽤库函数 strlen() 计算字符串⻓度的时候,遇到 printf() 打印字符串或者 \0 的时候就⾃动停⽌了。
转义字符
在C语言中,转义字符用于表示一些特殊的字符或操作,通常以反斜杠 \
开头。常用的C语言转义字符及其含义如下:
⽐如:我们有字符 n ,在字符串中打印的时候⾃然能打印出这个字符,如下
#include <stdio.h> int main() { printf("abc\ndef"); return 0; }
控制语句
1. 条件判断语句也叫分⽀语句:if语句、switch语句;
2. 循环执⾏语句:dowhile语句、while语句、for语句;
3. 转向语句:break语句、goto语句、continue语句、return语句。
1. 表达式语句
表达式语句是由一个表达式和一个分号组成,主要用来完成赋值、运算或调用函数等操作。
int a = 5; // 赋值语句 a = a + 3; // 算术表达式 printf("%d", a); // 函数调用语句
2. 复合语句
复合语句由一组语句组成,放在一对大括号 {}
中,可以作为一个单独的语句使用。通常用于控制结构中,以构成一个代码块。
{ int a = 10; int b = 20; int sum = a + b; printf("Sum: %d\n", sum); }
3. 条件语句(选择语句)
条件语句根据条件是否成立来决定执行哪段代码,主要有 if
语句和 switch
语句。
- if 语句
int a = 5; if (a > 3) { printf("a 大于 3\n"); } else { printf("a 小于或等于 3\n"); }
- switch 语句
int grade = 2; switch (grade) { case 1: printf("Grade A\n"); break; case 2: printf("Grade B\n"); break; default: printf("Grade C\n"); break; }
4. 循环语句
循环语句用于多次执行某一块代码,直到满足某个条件,主要包括 for
、while
和 do...while
三种。
for 循环
for (int i = 0; i < 5; i++) { printf("%d ", i); }
while 循环
int i = 0; while (i < 5) { printf("%d ", i); i++; }
do...while 循环
int i = 0; do { printf("%d ", i); i++; } while (i < 5);
5. 跳转语句
跳转语句用于改变程序的执行流程,包括 break
、continue
、goto
和 return
。
- break 语句:用于立即跳出循环或 switch 语句。
for (int i = 0; i < 5; i++) { if (i == 3) break; printf("%d ", i); }
- continue 语句:跳过本次循环的剩余部分,进入下一次循环。
for (int i = 0; i < 5; i++) { if (i == 2) continue; printf("%d ", i); }
- goto 语句:跳转到程序中定义的标签位置。
int a = 5; if (a == 5) { goto label; } printf("这行不会被执行\n"); label: printf("跳转到这里\n");
- return 语句:用于函数返回值并结束函数执行。
int sum(int a, int b) { return a + b; }
6. 空语句
#include <stdio.h> int main() { ;//空语句 return 0; }
共勉
多的也不说了,在一路向北虽迷惘但在自己认为没有错的道路上加油
标签:语句,main,即变,return,int,C语言,详细,printf,include From: https://blog.csdn.net/LJY_CF/article/details/143297902