摘要:友情提示先关注收藏,再查看,万字保姆级语言从入门到精通教程。及大牛出天地开始有随之乃有万种语年英国剑桥大学推出了语言。
友情提示:先关注收藏,再查看,13 万字保姆级 C 语言从入门到精通教程。
什么是计算机 ?
计算机的发明者是谁 ?
- 现在世界上***公认***的第一台现代电子计算机是1946年在美国宾夕法尼亚大学诞生的ENIAC(Electronic Numerical Integrator And Calculator)
计算机是一种电器, 所以计算机只能识别两种状态, 一种是通电一种是断电
正是因为如此, 最初ENIAC的程序是由很多开关和连接电线来完成的。但是这样导致***改动一次程序要花很长时间***(需要人工重新设置很多开关的状态和连接线)
为了提高效率,工程师们想能不能把程序和数据都放在存储器中, 数学家冯·诺依曼将这个思想以数学语言系统阐述,提出了存储程序计算机模型(这是所谓的冯·诺依曼机)
那利用数学语言如何表示计算机能够识别的通电和断电两种状态呢?
0和1更准确的是应该是高电平和低电平, 但是这个不用了解, 只需要知道计算机只能识别0和1以及存储的数据都是由0和1组成的即可。
计算机程序是为了告诉计算机"做某件事或解决某个问题"而用"***计算机语言***编写的命令集合(语句)
只要让计算机执行这个程序,计算机就会自动地、有条不紊地进行工作,计算机的一切操作都是由程序控制的,离开程序,计算机将一事无成
现实生活中你如何告诉别人如何做某件事或者解决某个问题?
10111000 00000001 00000000 00000101 00000001 00000000
MOV AX, 1 ADD AX, 1
1 + 1
“初,世间无语言,仅电路与连线。及大牛出,天地开,始有 FORTRAN、 LISP、ALGOL 随之, 乃有万种语”
当你想了解底层原理时,你才会发现后悔当初没有学习C语言
当你想学习一门新的语言时, 你才会发现后悔当初没有学习C语言
当你使用一些高级框架、甚至系统框架时发现提供的API都是C语言编写的, 你才发现后悔当初没有学习C语言
学好数理化,走遍天下都不拍
学好C语言,再多语言都不怕
学习本套课程之前 | 学习本套课程中 | 学习本套课程之后 |
---|---|---|
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gHyaoC72-1623039894713)(https://upload-images.jianshu.io/upload_images/647982-c724f6cd01191121.png?imageMogr2/auto-orient/strip)] |
集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。
切记囫囵吞枣, 不要纠结里面的东西都是什么含义, 初学者安装成功就是一种成功
下载Qt Creator离线安装包:
以管理身份运行离线安装包
下一步,下一步,下一步,等待ing…
注意安装路径中最好不要出现中文
对于初学者而言全选是最简单的方式(重点!!!)
配置Qt Creator开发环境变量
你的安装路径/5.11.0/mingw53_32/bin
你的安装路径/Tools/mingw530_32/bin
手机有很多功能, “开机”,“关机”,“打电话”,“发短信”,"拍照"等等
手机中的每一个功能就相当于C语言程序中的一个程序段(函数)
众多功能中总有一个会被先执行,不可能多个功能一起执行
想使用手机必须先执行手机的开机功能
所以C语言程序也一样,由众多功能、众多程序段组成, 众多C语言程序段中总有一个会被先执行, 这个先执行的程序段我们称之为"主函数"
一个C语言程序由多个"函数"构成,每个函数有自己的功能
一个程序***有且只有一个主函数***
如果一个程序没有主函数,则这个程序不具备运行能力
程序运行时系统会***自动调用***主函数,而其它函数需要开发者***手动调用***
主函数有固定书写的格式和范写
int main() { // insert code here... return 0;}
int call() { return 0;}
int main() { call(); return 0;}
int call(){ return 0;}int main(){ call(); printf(); return 0;}
printf("hello world/n");
#include int call(){ return 0;}int main(){ call(); printf("hello world/n"); return 0;}
int main(){ printf("hello world/n") // 如果没有分号编译时会报错 return 0;}
int main(){ // 如果没有分号,多条语句合并到一行时, 系统不知道从什么地方到什么地方是一条完整语句 printf("hello world/n") return 0;}
int main(){ printf("hello world/n"); // 这里的分号如果是中文的分号就会报错 return 0;}
int main(){ return 0;}int main(){ // 编译时会报错, 重复定义 return 0;}
int call(){ // 编译时报错, 因为只有call函数, 没有main函数 return 0;}
int mian(){ // 编译时报错, 因为main函数的名称写错了,还是相当于没有main函数 return 0;}
#include main(){ // 不会报错 printf("hello world/n"); return 0;}
#include void main(){ // 不会报错 printf("hello world/n"); return 0;}
int main(){ // 不会报错 printf("hello world/n");}
#include int main(){ printf("hello world/n"); return 0;}
Tips:
语法错误:编译器会直接报错
逻辑错误:没有语法错误,只不过运行结果不正确
*** *** ********* ******* **** **
printf(" *** *** /n");printf("*********/n");printf(" *******/n");printf(" ****/n");printf(" **/n");
printf(" *** *** /n*********/n *******/n ****/n **/n");
int i = 0;while (1) { if (i % 2 == 0) { printf(" *** *** /n"); printf("*********/n"); printf(" *******/n"); printf(" ****/n"); printf(" **/n"); }else { printf("/n"); printf(" ** ** /n"); printf(" *******/n"); printf(" *****/n"); printf(" **/n"); } sleep(1); i++; system("cls");}
_ooOoo_ o8888888o 88" . "88 (| -_- |) O/ = /O ____/`---"/____ . " //| |// `. / //||| : |||// / / _||||| -:- |||||- / | | /// - /// | | | /_| ""/---/"" | | / .-/__ `-` ___/-. / ___`. ." /--.--/ `. . __ ."" "< `.___/_<|>_/___." >""". | | : `- /`.;`/ _ /`;.`/ - ` : | | / / `-. /_ __/ /__ _/ .-` / / ======`-.____`-.___/_____/___.-`____.-"====== `=---=" ............................................. 佛祖保佑 有无BUG
━━━━━━神兽出没━━━━━━ ┏┓ ┏┓ ┏┛┻━━━━━━┛┻┓ ┃ ┃ ┃ ━ ┃ ┃ ┳┛ ┗┳ ┃ ┃ ┃ ┃ ┻ ┃ ┃ ┃ ┗━┓ ┏━┛Code is far away from bug with the animal protecting ┃ ┃ 神兽保佑,代码无bug ┃ ┃ ┃ ┗━━━┓ ┃ ┣┓ ┃ ┏━━┛┛ ┗┓┓┏━┳┓┏┛ ┃┫┫ ┃┫┫ ┗┻┛ ┗┻┛ ━━━━━━感觉萌萌哒━━━━━━
´´´´´´´´██´´´´´´´ ´´´´´´´████´´´´´´ ´´´´´████████´´´´ ´´`´███▒▒▒▒███´´´´´ ´´´███▒●▒▒●▒██´´´ ´´´███▒▒▒▒▒▒██´´´´´ ´´´███▒▒▒▒██´ 项目:第一个C语言程序 ´´██████▒▒███´´´´´ 语言: C语言 ´██████▒▒▒▒███´´ 编辑器: Qt Creator ██████▒▒▒▒▒▒███´´´´ 版本控制:git-github ´´▓▓▓▓▓▓▓▓▓▓▓▓▓▒´´ 代码风格:江哥style ´´▒▒▒▒▓▓▓▓▓▓▓▓▓▒´´´´´ ´.▒▒▒´´▓▓▓▓▓▓▓▓▒´´´´´ ´.▒▒´´´´▓▓▓▓▓▓▓▒ ..▒▒.´´´´▓▓▓▓▓▓▓▒ ´▒▒▒▒▒▒▒▒▒▒▒▒ ´´´´´´´´´███████´´´´´ ´´´´´´´´████████´´´´´´´ ´´´´´´´█████████´´´´´´ ´´´´´´██████████´´´´ 大部分人都在关注你飞的高不高,却没人在乎你飞的累不累,这就是现实! ´´´´´´██████████´´´ 我从不相信梦想,我,只,相,信,自,己! ´´´´´´´█████████´´ ´´´´´´´█████████´´´ ´´´´´´´´████████´´´´´ ________▒▒▒▒▒ _________▒▒▒▒ _________▒▒▒▒ ________▒▒_▒▒ _______▒▒__▒▒ _____ ▒▒___▒▒ _____▒▒___▒▒ ____▒▒____▒▒ ___▒▒_____▒▒ ███____ ▒▒ ████____███ █ _███_ _█_███——————————————————————————女神保佑,代码无bug——————————————————————
#includeint main() { printf("南哥带你装B带你飞"); return 0;}
#includeusing namespace std;int main() { cout << "南哥带你装B带你飞" << endl; return 0;}
#import int main() { NSLog(@"南哥带你装B带你飞"); return 0;}
class Test{ public static viod main() { system.out.println("南哥带你装B带你飞"); }}
package mainimport "fmt" //引入fmt库func main() { fmt.Println("南哥带你装B带你飞")}
void printMap(char map[6][7] , int row, int col);int main(int argc, const char * argv[]){ char map[6][7] = { {"#", "#", "#", "#", "#", "#", "#"}, {"#", " ", " ", " ", "#" ," ", " "}, {"#", "R", " ", "#", "#", " ", "#"}, {"#", " ", " ", " ", "#", " ", "#"}, {"#", "#", " ", " ", " ", " ", "#"}, {"#", "#", "#", "#", "#", "#", "#"} }; int row = sizeof(map)/sizeof(map[0]); int col = sizeof(map[0])/ sizeof(map[0][0]); printMap(map, row, col); int pRow = 2; int pCol = 1; int endRow = 1; int endCol = 6; while ("R" != map[endRow][endCol]) { printf("亲, 请输入相应的操作/n"); printf("w(向上走) s(向下走) a(向左走) d(向右走)/n"); char run; run = getchar(); switch (run) { case "s": if ("#" != map[pRow + 1][pCol]) { map[pRow][pCol] = " "; pRow++;//3 map[pRow][pCol] = "R"; } break; case "w": if ("#" != map[pRow - 1][pCol]) { map[pRow][pCol] = " "; pRow--; map[pRow][pCol] = "R"; } break; case "a": if ("#" != map[pRow][pCol - 1]) { map[pRow][pCol] = " "; pCol--; map[pRow][pCol] = "R"; } break; case "d": if ("#" != map[pRow][pCol + 1]) { map[pRow][pCol] = " "; pCol++; map[pRow][pCol] = "R"; } break; } printMap(map, row, col); } printf("你太牛X了/n"); printf("想挑战自己,请购买完整版本/n"); return 0;}void printMap(char map[6][7] , int row, int col){ system("cls"); for (int i = 0; i < row; i++) { for (int j = 0; j < col; j++) { printf("%c", map[i][j]); } printf("/n"); }}
/* R代表一个人 #代表一堵墙// 0123456 ####### // 0 # # // 1 #R ## # // 2 # # # // 3 ## # // 4 ####### // 5 分析: >1.保存地图(二维数组) >2.输出地图 >3.操作R前进(控制小人行走) 3.1.接收用户输入(scanf/getchar) w(向上走) s(向下走) a(向左走) d(向右走) 3.2.判断用户的输入,控制小人行走 3.2.1.替换二维数组中保存的数据 ( 1.判断是否可以修改(如果不是#就可以修改) 2.修改现有位置为空白 3.修改下一步为R ) 3.3.输出修改后的二维数组 4.判断用户是否走出出口*/// 声明打印地图方法void printMap(char map[6][7] , int row, int col);int main(int argc, const char * argv[]){ // 1.定义二维数组保存迷宫地图 char map[6][7] = { {"#", "#", "#", "#", "#", "#", "#"}, {"#", " ", " ", " ", "#" ," ", " "}, {"#", "R", " ", "#", "#", " ", "#"}, {"#", " ", " ", " ", "#", " ", "#"}, {"#", "#", " ", " ", " ", " ", "#"}, {"#", "#", "#", "#", "#", "#", "#"} }; // 2.计算地图行数和列数 int row = sizeof(map)/sizeof(map[0]); int col = sizeof(map[0])/ sizeof(map[0][0]); // 3.输出地图 printMap(map, row, col); // 4.定义变量记录人物位置 int pRow = 2; int pCol = 1; // 5.定义变量记录出口的位置 int endRow = 1; int endCol = 6; // 6.控制人物行走 while ("R" != map[endRow][endCol]) { // 6.1提示用户如何控制人物行走 printf("亲, 请输入相应的操作/n"); printf("w(向上走) s(向下走) a(向左走) d(向右走)/n"); char run; run = getchar(); // 6.2根据用户输入控制人物行走 switch (run) { case "s": if ("#" != map[pRow + 1][pCol]) { map[pRow][pCol] = " "; pRow++;//3 map[pRow][pCol] = "R"; } break; case "w": if ("#" != map[pRow - 1][pCol]) { map[pRow][pCol] = " "; pRow--; map[pRow][pCol] = "R"; } break; case "a": if ("#" != map[pRow][pCol - 1]) { map[pRow][pCol] = " "; pCol--; map[pRow][pCol] = "R"; } break; case "d": if ("#" != map[pRow][pCol + 1]) { map[pRow][pCol] = " "; pCol++; map[pRow][pCol] = "R"; } break; } // 6.3重新输出行走之后的地图 printMap(map, row, col); } printf("你太牛X了/n"); printf("想挑战自己,请购买完整版本/n"); return 0;}/** * @brief printMap * @param map 需要打印的二维数组 * @param row 二维数组的行数 * @param col 二维数组的列数 */void printMap(char map[6][7] , int row, int col){ // 为了保证窗口的干净整洁, 每次打印都先清空上一次的打印 system("cls"); for (int i = 0; i < row; i++) { for (int j = 0; j < col; j++) { printf("%c", map[i][j]); } printf("/n"); }}
单行注释
多行注释
// 南哥 // it666.com// /* 江哥 */// 帅哥
/*// 作者:LNJ// 描述:第一个C语言程序作用:这是一个主函数,C程序的入口点 */
/* 哈哈哈 /*嘻嘻嘻*/ 呵呵呵 */
/* R代表一个人 #代表一堵墙// 0123456 ####### // 0 # # // 1 #R ## # // 2 # # # // 3 ## # // 4 ####### // 5 分析: >1.保存地图(二维数组) >2.输出地图 >3.操作R前进(控制小人行走) 3.1.接收用户输入(scanf/getchar) w(向上走) s(向下走) a(向左走) d(向右走) 3.2.判断用户的输入,控制小人行走 3.2.1.替换二维数组中保存的数据 ( 1.判断是否可以修改(如果不是#就可以修改) 2.修改现有位置为空白 3.修改下一步为R ) 3.3.输出修改后的二维数组 4.判断用户是否走出出口*/
// 2.计算地图行数和列数int row = sizeof(map)/sizeof(map[0]);int col = sizeof(map[0])/ sizeof(map[0][0]);
/** * @brief printMap * @param map 需要打印的二维数组 * @param row 二维数组的行数 * @param col 二维数组的列数 */void printMap(char map[6][7] , int row, int col){ system("cls"); for (int i = 0; i < row; i++) { for (int j = 0; j < col; j++) { printf("%c", map[i][j]); } printf("/n"); }}
// 1.定义二维数组保存迷宫地图 char map[6][7] = { {"#", "#", "#", "#", "#", "#", "#"}, {"#", " ", " ", " ", "#" ," ", " "}, {"#", "R", " ", "#", "#", " ", "#"}, {"#", " ", " ", " ", "#", " ", "#"}, {"#", "#", " ", " ", " ", " ", "#"}, {"#", "#", "#", "#", "#", "#", "#"} }; // 2.计算地图行数和列数 int row = sizeof(map)/sizeof(map[0]); int col = sizeof(map[0])/ sizeof(map[0][0]); // 3.输出地图 printMap(map, row, col); // 4.定义变量记录人物位置 int pRow = 2; int pCol = 1; // 5.定义变量记录出口的位置 int endRow = 1; int endCol = 6; // 6.控制人物行走 while ("R" != map[endRow][endCol]) { ... ... }
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|
char | short | int | long | float | double | if | else |
return | do | while | for | switch | case | break | continue |
default | goto | sizeof | auto | register | static | extern | unsigned |
signed | typedef | struct | enum | union | void | const | volatile |
这些不用专门去记住,用多了就会了。在编译器里都是有特殊颜色的。 我们用到时候会一个一个讲解这个些关键字怎么用,现在浏览下,有个印象就OK了
fromNo22 | from#22 | my_Boolean | my-Boolean | 2ndObj | GUI | lnj |
Mike2jack | 江哥 | _test | test!32 | haha(da)tt | jack_rose | jack&rose |
生活中无时无刻都在跟数据打交道
在我们使用计算机的过程中,也会接触到各种各样的数据
静态的数据
动态的数据
既然硬盘的存储空间这么大,为何不把所有的应用程序加载到硬盘中去执行呢?
1 B(Byte字节) = 8 bit(位)// 00000000 就是一个字节// 111111111 也是一个字节// 10101010 也是一个字节// 任意8个0和1的组合都是一个字节1 KB(KByte) = 1024 B1 MB = 1024 KB1 GB = 1024 MB1 TB = 1024 GB
整型常量
实型常量
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/120967.html
摘要:正式的专栏第篇,同学站住,别错过这个从开始的文章前面学委的入门到精通专栏积累了篇文章,当然学委博客还有几十篇应用的文章。 正式的Python专栏第9篇,同学站住...
摘要:的安装下载好之后双击打开可执行安装文件选择安装目录,需要的内存较多,建议将其安装在盘或者盘,不建议放在系统盘盘。 yolov5无从下手?一篇就够的保姆级教程,202...
摘要:时间永远都过得那么快,一晃从年注册,到现在已经过去了年那些被我藏在收藏夹吃灰的文章,已经太多了,是时候把他们整理一下了。那是因为收藏夹太乱,橡皮擦给设置私密了,不收拾不好看呀。 ...
阅读 2739·2021-11-16 11:44
阅读 951·2021-10-09 09:58
阅读 4457·2021-09-24 09:48
阅读 4081·2021-09-23 11:56
阅读 2387·2021-09-22 15:48
阅读 1876·2021-09-07 10:07
阅读 3167·2021-08-31 09:46
阅读 488·2019-08-30 15:56