首页 > 其他分享 >C语言复习总结超详细版(1)小白转身即变 有实例超级详细

C语言复习总结超详细版(1)小白转身即变 有实例超级详细

时间:2024-10-31 20:50:15浏览次数:3  
标签:语句 main 即变 return int C语言 详细 printf include

废话不多说直接开整

注:本博文超级详细但是还是适合有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/icon-default.png?t=O83Ahttps://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语言中,占位符用于printfscanf等函数中格式化输入和输出。下列为常见的

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 = &num;
    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:易变变量,编译器不会优化
  • signedunsigned:指定数据的有符号或无符号

#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;
}

 


控制语句关键字

  • ifelse:条件判断
  • switchcasedefault:多分支选择语句
  • forwhiledo:循环控制语句
  • 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. 循环语句

循环语句用于多次执行某一块代码,直到满足某个条件,主要包括 forwhiledo...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. 跳转语句

跳转语句用于改变程序的执行流程,包括 breakcontinuegotoreturn

  • 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

相关文章

  • 基于SpringBoot+Vue+uniapp的宿舍管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......
  • 基于SpringBoot+Vue+uniapp的物流信息管理系统的详细设计和实现(源码+lw+部署文档+讲
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......
  • JAVA面向对象编程(详细 全部)
    概念面向对象编程(Object-orientedProgramming,OOP)是一种广泛应用于软件开发的编程范式。它通过将数据和对数据操作的方法封装在一个独立的实体中,即对象,来组织和管理代码。面向对象编程强调在编程过程中模拟真实世界中的实体和其相互关系。定义类我们需要搞清楚几件事情:对象......
  • 【PTA 编程题 7-3 】矩形运算 #C语言
    代码#include<stdio.h>#defineMAXM10#defineMAXN10intmain(void){intn;scanf("%d",&n);inta[MAXM][MAXN];for(inti=0;i<n;i++){for(intj=0;j<n;j++){scanf("%d",&a[i][j]);......
  • Java基础篇(三)(超详细整理,建议收藏!!!)
    目录一、Java的诞生与发展历史    1.1Java的出生地:SUNMicrosystemsInc.1.2 Java技术体系   1.3 Java语言的特点1.4 Java程序的运行机制1.4.1 JVM与跨平台1.4.2 JVM、JRE、JDK1.5 java开发环境1.6 java开发流程1.6.1 结构化编程与面......
  • c语言自定义类型:枚举
    枚举类型的声明例如:  性别有:男生,女生  月份有:十二个月  三原色:也是可以一一列举以上这些数据类型的表示就可以使用枚举enumDay//星期{ Mon, Tue, Wed, Thur, Fri, Sat, Sun};enumSex//性别{ MALE, FMALE, SECRET};enumColor//颜......
  • c语言:动态内存管理中的malloc和free,calloc和realloc
    为什么要有动态内存分配?通过之前的学习,我们已经掌握的内存开辟方式有:inta=20;//在栈空间上开辟四个字节chararr[10]={0};//在栈空间上开辟10个字节的连续空间上述空间的开辟的大小是固定的数组在申明的时候,必须指定数组的长度,数组空间一旦确定了大小不能进行调整。......
  • 鹏哥C语言初识课程总结
    常见单位和数据类型的范围bitbytekbmbgbtbpb#include<stdio.h>intmain(){ printf("%d\n",sizeof(char));//12^8==1024 printf("%d\n",sizeof(int));//42^32==4294967296//-2,147,483,648到2,147,483,647。10位数 printf("%d\n&......
  • C语言和Julia在数据分析和科学计算上的区别
    ###开头段落在比较C语言和Julia在数据分析和科学计算上的差异时,主要区别体现在执行效率、易用性、生态系统、以及并行计算能力。C语言以其高度的执行效率和广泛的应用背景著称,被广泛用于系统编程和性能敏感的应用。相对而言,Julia设计之初就致力于科学计算和数据分析,提供了易用......
  • 嵌入式课程day04-C语言运算符和选择结构
    2.3运算符2.3.1运算符介绍运算符:具有一定运算规则的符号。操作数:运算符的操作对象。~a   ---a就是~运算符的操作数。---单目运算符:运算符只有一个操作数3+5---35就是+运算符的操作数。---双目运算符:运算符有2个操作数    表达式1?表达式2:表达......