C语言学习第二弹

工欲善其事必先利其器
编写 C 语言程序用什么工具 ?
记事本 ( 开发效率低 )
Vim( 初学者入门门槛高 )
VSCode( 不喜欢 )
eclipse( 不喜欢 )
CLion( 深爱 , 但收费 )
Xcode( 逼格高 , 但得有苹果电脑 )
Qt Creator( 开源免费 , 跨平台安装和运行 )
什么是 Qt Creator ?
Qt Creator 是一款新的轻量级 集成开发环境 IDE )。它能够跨平台运行,支持的系统包括
Windows Linux 32 位及 64 位)以及 Mac OS X
Qt Creator 的设计目标是使开发人员能够利用 Qt 这个应用程序框架更加快速及轻易的完成开发任
开源免费 , 简单易用 , 能够满足学习需求
代码情缘 集成开发环境( IDE Integrated Development Environment )是用于提供程序开发环境的应用
程序,一般包括代码 编辑器 编译器 调试 器和 图形用户界面 等工具。集成了代码编写功能、分析
功能、 编译 功能、调试功能等一体化的开发软件服务套。
Qt Creator 安装
切记囫囵吞枣 , 不要纠结里面的东西都是什么含义 , 初学者安装成功就是一种成功
下载 Qt Creator 离线安装包 :
版本和代码编辑器任意选择都可以
qt 软件下载链接 https://pan.baidu.com/s/1gx0hNDBJkA2gx5wF1Jx34w 提取码: 0fg9
http://download.qt.io/
以管理身份运行离线安装包
代码情缘 下一步 , 下一步 , 下一步 , 等待 ing...
代码情缘 代码情缘 代码情缘 注意安装路径中最好不要出现中文
代码情缘 对于初学者而言全选是最简单的方式 ( 重点 !!!)
代码情缘 代码情缘 代码情缘 代码情缘 代码情缘 代码情缘 配置 Qt Creator 开发环境变量
代码情缘 代码情缘 代码情缘 你的安装路径 \5.11.0\mingw53_32\bin
你的安装路径 \Tools\mingw530_32\bin
启动安装好的 Qt Creator
非全选安装到此为止 , 全选安装继续往下看
出现这个错误 , 忽略这个错误即可
代码情缘 等待安装完毕之后解决刚才的错误
找到安装目录下的 strawberry.msi, 双击运行
代码情缘 代码情缘 什么是环境变量 ?
打开我们添加环境变量的两个目录 , 不难发现里面大部分都是 .exe 的可执行程序
如果我们不配置环境变量 , 那么每次我们想要使用这些 " 可执行程序 " 都必须 " 先找到这些应用程序对
应的文件夹 " 才能使用
代码情缘 为了方便我们在电脑上 " 任何地方 " 都能够使用这些 " 可执行程序 ", 那么我们就必须添加环境变量 ,
Windows 执行某个程序的时候 , 会先到 " 环境变量中 Path 指定的路径中 " 去查找
为什么要配置系统变量 , 不配置用户变量
用户变量只针对使用这台计算机指定用户
一个计算机可以设置多个用户 , 不同的用户用不同的用户名和密码
当给计算机设置了多个用户的时候 , 启动计算机的时候就会让你选择哪个用户登录
系统变量针对使用这台计算机的所有用户
也就是说设置了系统变量 , 无论哪个用户登录这台计算机都可以使用你配置好的工具
Qt Creator 快捷键
Qt Creator Keyboard Shortcuts(Documentation)
Qt Creator Keyboard Shortcuts(Wiki)
如何创建 C 语言程序
这个世界上 , 几乎所有程序员入门的第一段代码都是 Hello World.
原因是当年 C 语言的作者 Dennis Ritchie( 丹尼斯 里奇 ) 在他的名著中第一次引入 , 传为后世经典 , 其它
语言亦争相效仿 , 以示敬意
如何创建 C 语言文件
代码情缘 代码情缘 代码情缘 C 语言程序组成
手机有很多功能 , " 开机 "," 关机 "," 打电话 "," 发短信 "," 拍照 " 等等
手机中的每一个功能就相当于 C 语言程序中的一个程序段 ( 函数 )
众多功能中总有一个会被先执行 , 不可能多个功能一起执行
想使用手机必须先执行手机的开机功能
所以 C 语言程序也一样 , 由众多功能、众多程序段组成 , 众多 C 语言程序段中总有一个会被先执行 ,
个先执行的程序段我们称之为 " 主函数 "
代码情缘 一个 C 语言程序由多个 " 函数 " 构成 , 每个函数有自己的功能
一个程序 有且只有一个主函数
如果一个程序没有主函数 , 则这个程序不具备运行能力
程序运行时系统会 自动调用 主函数 , 而其它函数需要开发者 手动调用
主函数有固定书写的格式和范写
函数定义格式
主函数定义的格式 :
int 代表函数执行之后会返回一个整数类型的值
main 代表这个函数的名字叫做 main
() 代表这是一个函数
{} 代表这个程序段的范围
代码
函数定义格式
主函数定义的格式 :
int 代表函数执行之后会返回一个整数类型的值
main 代表这个函数的名字叫做 main
() 代表这是一个函数
{} 代表这个程序段的范围
代码情缘 return 0; 代表函数执行完之后返回整数 0
其它函数定义的格式
int 代表函数执行之后会返回一个整数类型的值
call 代表这个函数的名字叫做 call
() 代表这是一个函数
{} 代表这个程序段的范围
return 0; 代表函数执行完之后返回整数 0
如何执行定义好的函数
主函数 (main) 会由系统自动调用 , 但其它函数不会 , 所以想要执行其它函数就必须在 main 函数中手动
调用
call 代表找到名称叫做 call 的某个东西
() 代表要找到的名称叫 call 的某个东西是一个函数
; 代表调用函数的语句已经编写完成
所以 call(); 代表找到 call 函数 , 并执行 call 函数
如何往屏幕上输出内容
输出内容是一个比较复杂的操作 , 所以系统提前定义好了一个专门用于输出内容的函数叫做
printf 函数 , 我们只需要执行系统定义好的 printf 函数就可以往屏幕上输出内容
但凡需要执行一个函数 , 都是通过函数名称 + 圆括号的形式来执行
如下代码的含义是 : 当程序运行时系统会自动执行 main 函数 , 在系统自动执行 main 函数时我们
手动执行了 call 函数和 printf 函数
经过对代码的观察 , 我们发现两个问题
并没有告诉 printf 函数 , 我们要往屏幕上输出什么内容
找不到 printf 函数的实现代码
int main () {
// insert code here...
return 0 ;
}
int call () {
return 0 ;
}
int main () {
call ();
return 0 ;
}
#include <stdio.h>
int call (){
return 0 ;
}
int main (){
call ();
printf ( "hello world\n" );
return 0 ;
}
代码情缘 方式 2
直接点击 Qt 开发工具运行按钮
main 函数注意点及其它写法
C 语言中 , 每条完整的语句后面都必须以分号结尾
代码情缘 C 语言中除了注释和双引号引起来的地方以外都不能出现中文
一个 C 语言程序只能有一个 main 函数
一个 C 语言程序不能没有 main 函数
main 函数前面的 int 可以不写或者换成 void
main 函数中的 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 <stdio.h>
main (){ // 不会报错
printf ( "hello world\n" );
return 0 ;
}
#include <stdio.h>
void main (){ // 不会报错
printf ( "hello world\n" );
return 0 ;
}
代码情缘 多种写法不报错的原因
C 语言最早的时候只是一种规范和标准 ( 例如 C89, C11 )
标准的推行需要各大厂商的支持和实施
而在支持的实施的时候由于各大厂商利益、理解等问题 , 导致了实施的标准不同 , 发生了变化
Turbo C
Visual C(VC)
GNU C(GCC)
所以大家才会看到不同的书上书写的格式有所不同 , 有的返回 int, 有的返回 void, 有的甚至没有
返回值
所以大家只需要记住最标准的写法即可 , no zuo no die
Tips:
语法错误:编译器会直接报错
逻辑错误:没有语法错误,只不过运行结果不正确
C 语言程序练习
编写一个 C 语言程序 , 用至少 2 种方式在屏幕上输出以下内容
普通青年实现
2B 青年实现
文艺青年实现 ( 装逼的 , 先不用理解 )
int main (){ // 不会报错
printf ( "hello world\n" );
}
#include <stdio.h>
int main (){
printf ( "hello world\n" );
return 0 ;
}
*** ***
*********
*******
****
**
printf ( " *** *** \n" );
printf ( "*********\n" );
printf ( " *******\n" );
printf ( " ****\n" );
printf ( " **\n" );
printf ( " *** *** \n*********\n *******\n ****\n **\n" );
代码情缘 初学者如何避免程序出现 BUG
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
代码情缘 多语言对比
C 语言
┃ ┃ 神兽保佑 , 代码无 bug
┃ ┃
┃ ┗━━━┓
┃ ┣┓
┃ ┏━━┛┛
┗┓┓┏━┳┓┏┛
┃┫┫ ┃┫┫
┗┻┛ ┗┻┛
━━━━━━ 感觉萌萌哒 ━━━━━━
´´´´´´´´██´´´´´´´
´´´´´´´████´´´´´´
´´´´´████████´´´´
´´`´███▒▒▒▒███´´´´´
´´´███▒ ▒▒ ▒██´´´
´´´███▒▒▒▒▒▒██´´´´´
´´´███▒▒▒▒██´ 项目:第一个 C 语言程序
´´██████▒▒███´´´´´ 语言: C 语言
´██████▒▒▒▒███´´ 编辑器: Qt Creator
██████▒▒▒▒▒▒███´´´´ 版本控制: git - github
´´▓▓▓▓▓▓▓▓▓▓▓▓▓▒´´ 代码风格:江哥 style
´´▒▒▒▒▓▓▓▓▓▓▓▓▓▒´´´´´
´ . ▒▒▒´´▓▓▓▓▓▓▓▓▒´´´´´
´ . ▒▒´´´´▓▓▓▓▓▓▓▒
.. ▒▒ . ´´´´▓▓▓▓▓▓▓▒
´▒▒▒▒▒▒▒▒▒▒▒▒
´´´´´´´´´███████´´´´´
´´´´´´´´████████´´´´´´´
´´´´´´´█████████´´´´´´
´´´´´´██████████´´´´ 大部分人都在关注你飞的高不高,却没人在乎你飞的累
不累,这就是现实!
´´´´´´██████████´´´ 我从不相信梦想,我,只,相,信,自,
己!
´´´´´´´█████████´´
´´´´´´´█████████´´´
´´´´´´´´████████´´´´´
________▒▒▒▒▒
_________▒▒▒▒
_________▒▒▒▒
________▒▒_▒▒
_______▒▒__▒▒
_____ ▒▒___▒▒
_____▒▒___▒▒
____▒▒____▒▒
___▒▒_____▒▒
███____ ▒▒
████____███
█ _███_ _█_███
—————————————————————————— 女神保佑,代码无 bug——————————————————————
代码情缘 C++ 语言
OC 语言
Java 语言
Go 语言
什么是注释 ?
注释是在所有计算机语言中都非常重要的一个概念,从字面上看,就是注解、解释的意思
注释可以用来解释某一段程序或者某一行代码是什么意思,方便程序员之间的交流沟通
注释可以是任何文字,也就是说可以写中文
被注释的内容在开发工具中会有特殊的颜色
为什么要使用注释 ?
没有编写任何注释的程序
#include<stdio.h>
int main () {
printf ( " 南哥带你装 B 带你飞 " );
return 0 ;
}
#include<iostream>
using namespace std ;
int main () {
cout << " 南哥带你装 B 带你飞 " << endl ;
return 0 ;
}
#import <Foundation/Foundation.h>
int main () {
NSLog ( @ " 南哥带你装 B 带你飞 " );
return 0 ;
}
class Test
{
public static viod main ()
{
system . out . println ( " 南哥带你装 B 带你飞 " );
}
}
package main
import "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 ;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值