![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
标准C
文章平均质量分 52
C语言基础知识总结
Amo-wintercs
神的随波逐流~
展开
-
C-class Week6.Day19
学生需求分析学生:姓名 性别 学号 密码 语文 数学 英语1、第一次登录强制修改密码。2、查询成绩排名 不显示姓名和学号。平均分最高分最低分3、修改密码4、查看个人信息5、三次密码错误锁定帐号,由教师解锁#include <stdio.h>#include <stdlib.h>#include <getch.h>#include <string.h>#include "student.h"#include "tools.h"原创 2021-01-14 10:49:15 · 127 阅读 · 0 评论 -
C-class Week5.Day18
teach.c需求教师:姓名 性别 工号 密码1、第一次登录强制修改密码。2、添加学生(学生的学号自动生成)单个添加批量导入3、删除学生输入两人次学号确定删除的学生要记录保存在已退学的文件中4、查找学生按姓名查找按学号查找5、修改学生信息修改学生基础信息修改学生成绩6、录入学生成绩单个录入批量导入7、重置学生密码8、显示所有在校学生信息9、显示所有退出学生信息10、三次密码错误锁定帐号,由校长解锁stu.h#ifndef STU_H#define STU_原创 2021-01-09 17:05:43 · 1342 阅读 · 0 评论 -
C-class Week5.Day17
文件批量读取进内存练习 以stuatschool.txt 读入需求格式的信息#include<stdio.h>#include "stu.h"#define NUM 5void show(Student* stu,int cnt){ for(int i=0;i<cnt-1;i++) { printf("姓名:%s 性别:%s 学号:%s 密码:%s 语文成绩:%d 数学成绩:%d 英语成绩:%d\n",stu[i].name,stu[i].sex,stu[i].s原创 2021-01-08 18:41:04 · 102 阅读 · 0 评论 -
C-class Week4.Day16
复习:结构: 结构是一种由程序员自己设计的一种数据类型,它用于描述一个事务的各项数据,由若干个基础的数据类型组成 设计:struct 结构名{基础类型 成员名;…}; 定义: struct 结构名 结构变量名; struct 结构名->成员名; 定义的方法很多,有一些很怪好看得懂 访问成员:结构变量名.成员名;结构指针->成员名 初始化: 顺序:struct 结构名 结构变量名={v1,v2,v3}; 指定:struct 结构名 结构变量名={.成员名=原创 2021-01-06 17:50:59 · 99 阅读 · 0 评论 -
C-class Week4.Day15
结构:STRUCT 结构是由程序员自己设计的一种数据类型,用于描述一个事务的各项数据,由若干个不同的基础数据类型组成。设计结构:struct 结构体名{ 类型 成员名; 类型 成员名; ...};struct 结构体名{ 类型 成员名; 类型 成员名; ...}变量名;struct 结构体名{ 类型 成员名; 类型 成员名; ...}变量名[n] = {{"mike","w","1234"},{"sony","w","1235"},{...}}; 注意:一原创 2021-01-04 15:27:30 · 74 阅读 · 0 评论 -
C-class Week3.Day14
复习预处理指令:C代码不能直接被真正的编译器所编译,需要一段程序对它进行翻译,负责翻译的程序叫做预处理器,翻译的过程叫做预处理,被翻译的代码叫做预处理指令,以#开头的都是预处理指令gcc -E code.c gcc -E code.c -o code.i1、文件包含#include 把一个头文件导入到当前文件中#include <>#include “”系统指定的路径可以通过设置环境变量来修改;可以指定编译参数-I /路径 指定头文件的路径2、宏常量 #def原创 2020-12-30 21:31:42 · 94 阅读 · 0 评论 -
C-class Week3.Day13
预处理指令: 程序员所编写的代码并不是标准c代码,不能被编译器所编译。所以需要对代码进行预处理把代码翻译一下。翻译的过程就叫做预处理,被翻译的代码叫做预处理指令以#开头的都是预处理指令。gcc -E code.c 直接把预处理的结果显示在终端上gcc -E code.c -o code.i把预处理结果放在code.i中预处理指令分类: #include 文件包含 1、#include<xxx.h> 从系统指定目录下查找头文件,找到后导入。 2、#include原创 2020-12-29 16:20:30 · 407 阅读 · 0 评论 -
C-class Week3.Day12
复习输出缓冲区 程序输出的数据并没有立即写入到文件,而是先存储到输出缓冲区,当满足一定条件时才会写入到文件中。 1、遇到换行 2、程序结束 3、遇到输出语句 4、缓冲区满4k 5、手动刷新fflush输入缓冲区 在终端上出入的数据此时由终端保管,当按下回车键时,数据由终端写入到程序中,交给了程序的缓冲区,scanf函数再从输入缓冲区中读取数据,最后赋值给变量。 1、当想要从缓冲区中读取整型、浮点型数据时、此时如果缓冲区中的数据时字符型,就会导致输入失败。 解决:先原创 2020-12-29 16:17:50 · 68 阅读 · 0 评论 -
C-class Week2.Day11
复习1、C语言中没有管理堆内存的语句,只能使用标准库中的函数#include<stdlib.h>void *malloc(size_t size);功能:从堆内存中申请size个字节的内存块返回值:申请成功的内存块的首地址malloc (sizeof(type)*num);注意:void* 在c++编译器中不能自动转换为其他类型的指针,如果想要让代码在c++编译器中兼容就必须要强制转换int *p = malloc(4);在c中没问题int *p = (int*) mal原创 2020-12-25 19:01:12 · 66 阅读 · 0 评论 -
C-class Week2.Day10
堆: 当首次使用malloc申请内存,系统就会分配一个33页的内存、33*1024 -2 是可以用的位置 最后四个字节不能用。这33页由malloc管理,但是使用者也有权使用,只要在33页范围内都行。这种越界访问存在隐患会产生脏数据,如果再向malloc申请,如果小于33页。则不向系统申请,在33页里面的寻找合适的空间。 每个内存块之间、都会有一些空隙4-12个字节。这些空隙一些是为了数据对齐、其中一定会有四个字节用于malloc的维护信息,这些维护信息决定了下次malloc分配内存的位置原创 2020-12-24 18:18:58 · 88 阅读 · 1 评论 -
C-class Week2.Day9 & test2 summary
指针指针数组和数组指针:指针数组: 是由指针组成的数组,里面都是指针,它的成员都是指针变量。 类型 *arr[长度]; int *arr[10];数组指针: 专门指向数组的指针 类型 (*arr)[长度];#include<stdio.h>int main(int argc,const char* argv[]){ int arr[10]={0,1,2,3,4,5,6,7,8,9}; /*int* arrp[10];原创 2020-12-23 20:01:31 · 107 阅读 · 0 评论 -
C-class Week2.Day8
指针什么是指针: 指针是一种特殊的数据类型,使用它可以定义指针变量,指针变量中储存的是整型数据,代表了内存的编号 通过这个编号可以访问到对应的内存。为什么使用指针: 1、函数与函数之间是相互独立的,参数无法进行传递,又想要共享变量时 传参是单项值传递 使用数组还需要传递数组长度 全局变量,但是不推荐容易和第三方库冲突,个数不宜多,当多个函数都用使用时还是可以使用。 函数命名空间是相互独立的,但是地址空间是同一个地方,所以指针可以解决这个问题 2、因为函原创 2020-12-22 17:16:28 · 51 阅读 · 0 评论 -
C-class Week2.Day7
复习: 1,函数声明 告诉编译器函数的格式,方便编译器检查调用者的参数、返回值 2,隐式声明 函数调用时没有声明就会产生,编辑器就会猜测函数的格式,函数的形参会根据调用者提供的实参来猜测 返回值会猜测为int类型。 3,函数定义 函数定义如果出现在函数调用之前,可以省略函数声明 4,函数传参 值传递:普通变量,局部变量,单项值传递,函数之间的变量无法共享 因为是局部变量 址传递:目前来说只有数组是址传递,导致数组的长度会丢失,需要额外增加一个参数传递数组长度,此时就共享了一个数组原创 2020-12-22 14:06:16 · 78 阅读 · 0 评论 -
C-class Week2.Day6
设计函数的准则:可读性 1.一个函数最好只解决一个问题!这样可以降低出错率,提高(可读性)。耦合性 2.最好不要依赖其他函数,(降低耦合性)通用性 3.数据都是由调用者提供,结果返回给调用者。(可以提高通用性)健壮性 4.要考虑调用者提供的非法数据,可以通过返回值的方式告诉调用者,或者把可能出现的 情况通过注释的方式写明白。(健壮性)进程映像:程序: 储存在磁盘上的 可执行文件(包括是二进制文件、脚本文件)进程: 正在系统中运行的程序进程映像: 指的是进程原创 2020-12-18 20:36:46 · 65 阅读 · 1 评论 -
C-class Week2.Day5
进制转换: 为什么要二进制,八进制,十六进制? 因为cpu只能识别高低两种电流,所以只能对二进制数据进行运算。二进制虽然可以直接被cpu识别,但是不方便书写所以把二进制转换为了八进制是为了方便记录在文件中。 随着cpu的不断发展不断地增加,由于八位计算机逐步发展到64位计算机,因此八进制逐渐不能满足需求,所以发展出了十六进制,由于历史原因八进制还不能退出历史舞台(例如rwz1234) 十进制转换二进制,余二倒去或者加权 练习: 1.输入一个m在输入一个n进制,原创 2020-12-16 21:01:00 · 318 阅读 · 0 评论 -
C-class Week2.Day4 && test summary
数组 什么是数组?变量的组合,是一种批量定义变量的方式 定义:类型 数组名[ ] 使用:通过数组的下表使用;arr[n]; 下表范围从 0 到 n-1; 遍历:for(int i=0;i<n;i++)… 初始化: 类型 数组名[数量] = {a,b,c,d,e,…} 1、数组与普通变量一样,默认值是随机的,为了安全起见要对数组进行初始化。 2、初始化数据过多时,编译器会产生警告,并且多出来的数据会丢弃。 初始化数据不足时,编译器自动补零。只能逐个赋值不能原创 2020-12-16 09:20:08 · 183 阅读 · 0 评论 -
C-class Week1.Day3
作业1.打印一个九九乘法表三角形的~2.公鸡5块 母鸡3块 小鸡1块钱3只 100块买100只鸡 100块要用完 不一定要多有种类的鸡会遇到一种m/3的情况:用了if(m%3)的方法去除小数的问题,还可以直接把小鸡个数类型变成float就会自动去除3.计算出100-1000之前所有的素数在双重循环的内环变量需要遍历多次例如j在i的循环下,如果在外面定义了j那么就会导致j不会遍历break跳出一层for4.输入一个日期(yyyy-mm-dd),计算公园1 年1月1号过了多少天? 例原创 2020-12-13 11:29:42 · 71 阅读 · 0 评论