1. 经典入门:hello world
#include<stdo.h>
int main()
{
printf("hello world!\n"); //打印hello world!
}
1.1 概念
源文件:源文件即源代码文件,C语言源文件后缀名是.c。
头文件:头文件后缀名为.h(head,头),C语言代码由源文件和头文件组成。
关键字:关键字是C语言征用了的一些字,这些字在C语言中代表特殊含义,已经被C语言定义好了。每个关键字都有自己特定的含义,我们必须搞懂每个关键字的所有含义和用法,否则就看不懂C语言程序。
注释:C语言中注释以//开头,或者/* */,注释是给程序员看的,不是给机器看的。也
就是说,程序员写注释给其他人看,以让人明白自己为什么要这么写。但是编译器编译程序的时候是忽略注释内容的,所以机器根本看不见注释,也不理注释。
符号:C语言程序中包含很多符号,如; : , + () { } * 等等,各种符号都有自己的含义,必须搞明白各种符号的含义,才能看懂C语言程序。
变量:会变化的量。C语言程序中用变量来进行计算。
函数:函数是C语言的一个基本组成单位,一个C语言程序其实就是由很多函数组成的,每个函数用来完成一定的功能,函数可以调用别的函数来完成功能。函数的标志是().
C语言中有一个特殊的函数叫main,这个函数是整个程序的内定的入口,也就是说整个C语言程序是从main函数开始执行的,其他的函数都是直接或者间接被main调用。
1.2 C语言写代码步骤
第一步:编辑源代码(使用vi或者其他编辑器)
第二步:编译。编译就是用编译器把源程序转化成可执行程序的过程,编译要用到编译器。我们在linux中使用编译器一般是gcc。
譬如:gcc hello.c 把当前目录下hello.c文件编译,得到的可执行文件名字叫a.out
也可以自己指定编译后生成的可执行程序的名字,使用gcc hello.c -o hello
第三步:执行编译生成的可执行程序,执行方式是./hello
第四步:调试。当你执行后发现程序结果不对,不是自己想要的,这时候就是返回来看源代码哪里不对。然后修改,再编译执行,再看结果。如此循环直接结果正确。
1.3 C语言关键字
include(包含) 头文件包含
int(integer,整数) 用来表示一个整数的类型叫整形。
float(浮点型) 用来表示小数的类型
char(character,字符) 字符型数据类型
return(返回) 函数返回
1.4 习题
1.4.1 打印下面图形
* *** ***** *** *
程序代码
#include <stdio.h>
int main ()
{
printf("\n * \
\n *** \
\n***** \
\n *** \
\n * \n");
return 0;
}
1.4.2 打印下面的图形
***********************
*****Hello, world!*****
******************Donke
程序代码
#include <stdio.h>
int main ()
{
printf("***********************\
\n*****Hello, world!*****\
\n******************Donke\n");
return 0;
}
总结:
1、使用到的技术主要是printf中\n换行和\接续符。
2、题目目的主要是为了熟悉C语言程序的编辑、编译、执行、调试过程。
3、C语言中的注释,短的用//,多行的用/* */。
2. VMWare共享文件夹使用
2.1 为什么使用共享文件夹
当我们裸机安装了Windows,并且在Windows中安装了虚拟机软件VMWare,并且在虚拟机中安装了ubuntu后。我们一般在Windows中编辑源代码,而在linux中编译、执行源代码。这时候就需要在Windows和linux之间进行交互。
之前通过smb服务器,现在通过VMWare的共享文件夹就可以轻松实现。
2.2 怎么建立Windows的共享文件夹
第一步:先在Windows中创建一个文件夹,主要要使用英文名称。
第二步: VMWare中,菜单栏 VM -> Settings -> Options -> Shared Folders选项卡,右边上侧选择Always Enabled,下面点击Add,next,在打开的选项卡中Host Path项目中浏览选择刚才第一步中创建的文件夹,下面Name中会自动弹出一个相同的名字,这个名字是将来Windows中的文件夹在linux虚拟机中的映射文件夹,名字可以改也可以不改。然后一直OK,完成即可。
第三步:在linux中,直接到 /mnt/hgfs目录下,即可找到刚才第二步中Name相同的名字的
文件夹,这个目录即是第一步中Windows中目录在linux下的映射。
3. C语言数据类型
3.1 整形
C语言中的整形对应数学中的整数,整形变量是用来描述一个整数值的,整形变量经过计算
后也只能是整数(整型),不可能出现小数(浮点型).
要求:要学会整形变量的定义,赋值,计算。要学会使用printf函数打印出一些整形变量的值,作为输出和调试。
C语言中整形有三种:
(1)int 整形
(2)short int,又叫做short,短整形(<=整形)
(3)long int,又叫做long,长整型(>=整形)
3.2 浮点型
C语言中浮点型对应数学中的小数。浮点型有float和double两种。使用方式相同,不同在于表示范围和精度。
float表示的范围小,精度低(小数点后6位);
double表示范围大,精度高。(小数点后16位)
范围是说表示的数有多大,精度是指这个数的分辨率有多细
注意:printf中打印float或double类型,要是用%f,不能用%d。
3.3 字符型
字符型对应ASCII字符。ASCII字符是一种编码,就是用数字编码来表示一个符号的一种方法
本质上说,字符型其实也是整形,只是这些整形数被用来表示一些字符的ASCII编码值,所以叫做字符型。
字符型一般用8位二进制表示,无符号字符型范围是0~255.
字符型其实是一种比short还短的整形,所以它可以和int相运算。
3.4 有符号数和无符号数
数学中数是有符号的,有整数和负数之分。所以计算机中的数据类型也有符号,分为有符号数和无符号数。
有符号数:
整形:signed int(简写为 int)
signed long,也写作signed long int,(简写为long)
signed short,也写作signed short int(简写为short)
signed(表示signed int)
浮点型:
signed float(简写为float)
signed double(简写为double)
字符型:
signed char(简写为char)
无符号数:
整形:整形有无符号数,用来表示一些编码编号之类的东西。譬如身份证号,房间号
unsigned int(没有简写)
unsigned long int(简写unsigned long)
unsigned short int(简写为unsigned short)
浮点数:没有无符号浮点数。也就是说,小数一般只用在数学概念中,都是有符号的。
字符型:字符型有无符号数
unsigned char(没有简写)
注意:对于整形和字符型来说,有符号数和无符号数表示的范围是不同的。
譬如字符型,有符号数范围是-128~ 127,无符号数的范围是0~255.
4. C语言常用运算符
4.1 数学运算符号
4.1.1 常见数学运算符号,跟数学中理解相同
+加号
-减号
*乘号
/ 除号,相除以后的商
% 取余符号,相除以后余数是几
4.1.2 跟数学中意义不同的运算符
= 赋值运算符,与数学中的等号完全不同。赋值运算符作用是经过运算后符号左边的部分(
左值,一般是一个变量),的值就等于右边部分(右值,一般是常数或变量)了。
+= a = a + b; 等同于 a += b;
-= a = a - b; 等同于 a -= b;
*= a = a * b; 等同于 a *= b;
/= a = a / b; 等同于 a /= b;
%= a = a % b; 等同于 a %= b;
eg:
bianliang1 = bianliang1 + bianliang2;
bianliang1 += bianliang2;
4.2 判断运算符
== 等于
!= 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于
4.3 逗号运算符
, 逗号运算符的主要作用是用来分割
4.4 ++与- -
++ a++; 等同于 ++a; 等同于 a = a + 1; 等同于 a += 1;
-- a--; 等同于 --a; 等同于 a = a - 1; 等同于 a -= 1;
4.5 作业
1、自己查找资料或写代码测试,总结++放在前面和后面的区别(a++和++a区别)
#include <stdio.h>
int main(void)
{
int a;
a = 12;
printf("a = %d\n", a++);
printf("a = %d\n", a);
printf("a = %d\n", ++a);
return 0;
}
执行结果
a = 12
a = 13
a = 14
注意:强调程序风格。
所谓程序风格,主要是指写代码的格式,譬如空格,空行,缩进,注释,文件头,函数头等。
越是大公司,越看重程序风格。软件界公认的准则:程序风格不良好的程序是垃圾代码,是废品;写出程序风格不良好的代码的人,是垃圾程序员。
5. 程序结构
在C语言程序里,一共有三种程序结构:顺序结构、选择结构(分支结构)、循环结构
5.1 顺序结构
顺序结构:按照实物本身特性,必须一个接着一个来完成。
对于顺序结构来说,不需判断,因为下一句指令就是你要执行的。对与循环与选择结构来说,都需要进行判断。然后根据判断结果来决定怎么办。
逻辑上有一种类型,叫bool类型(又写作boolean类型,中文叫布尔类型)。布尔类型只有两个值,真和假。
5.2 选择结构
选择结构:到某个节点后,会根据一次判断结果来决定之后走哪一个分支。
C语言中有以下一些判断运算符
== 等于
!= 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于
使用这些判断运算符,可以写出一个判断表达式,这个判断表达式最终的值就是一个bool类型。这个判断表达式的bool值就决定了选择结构如何选择,循环结构如何循环。
C语言中选择结构一共有两种
第一种:if else
引入关键字:if else else if
if (bool值) // 如果bool值为真,则执行代码段1,否则执行代码段2
{
代码段1
}
else
{
代码段2
}
if (bool值1) // 如果bool值1为真,则执行代码段1
{
// 否则则判断bool值2是否为真,若为真则执行代码段2
代码段1 // 否则直接执行代码段3
}
else if (bool值2) // 开头的if和结尾的else都只能有一个,但是中间的
{
// else if可以有好多个。
代码段2
}
else