初始C语言
#include<stdio.h>
int main()
{
/*在双引号中间输入Hello World*/
printf(“Hello World”);
return 0;
}
C程序结构
一个C程序就是由若干头文件和函数组成。
#include<stdio.h>-----------------------------------------------包含头文件
int main() /这里没有主函数名称的/I
{
I
printf (“I love imooc!”); I--------------主函数
/看一下这里的打印语句是否正确/
I
return 0; I
} I
#include <stdio.h>就是一条预处理命令,它的作用是通知C语言编译系统在对C程序进行正式编译之前需
做一些预处理工作。
函数就是实现代码逻辑的一个小的单元。
注:在最新的C标准中,main函数前的类型为int而不是void
必不可少之主函数
一个C程序有且只有一个主函数,即main函数。
int main()-----主函数
这个道理就好比每个电梯只有一扇门,要想乘坐电梯的话就必须从这扇门进入;而main前面的int就是主函
数的类型,好比乘坐的这个电梯是什么材料做的。
printf()是格式输出函数,这里就记住它的功能就是在屏幕上输出指定的信息。
return是函数的返回值,根据函数类型的不同,返回的值也是不同的。
\n是转义字符,在WIKI中可以查看转义字符。
注意:C程序一定是从主函数开始执行的。
良好习惯之规范
在写C语言程序的时候为了书写清晰、便于阅读、便于理解、便于维护,在编写程序时应遵循以下规则:
1、一个说明或一个语句占一行,例如:包含头文件、一个可执行语句结束都需要换行;
2、函数体内的语句要有明显缩进,通常以按一下Tab键为一个缩进;
3、括号要成对写,如果需要删除的话也要成对删除;
4、当一句可执行语句结束的时候末尾需要有分号;
5、代码中所有符号均为英文半角符号。
程序解释——注释
注释是为了使别人能看懂你写的程序,也为了使你在若干年后还能看得懂你曾经写的程序而设定的。注释是
写给程序员看的,不是写给电脑看的。所以注释的内容,C语言编译器在编译时会被自动忽略。
C语言注释方法有两种:
多行注释: /* 注释内容 */
单行注释: //注释一行
#include <stdio.h>
int main()
{
//这是一首思念家乡的诗
printf("床前明月光,");
printf("疑是地上霜。");
printf("举头望明月,");
printf("低头思故乡。");
/*短短四句诗,写得清新朴素,明白如话。它的内容是单纯的,但同时却又是丰富的。
它是容易理解的,却又是体味不尽的。诗人所没有说的比他已经说出来的要多得多。
它的构思是细致而深曲的,但却又是脱口吟成、浑然无迹的。从这里,我们不难领
会到李白绝句的“自然”、“无意于工而无不工”的妙境。*/
return 0;
}
C中数据类型-标识符
编程时给变量或者函数起的名字就是标识符,C语言的标识符是不可以随便起名字的,必须遵守一定的规则。
C 语言规定,标识符可以是字母(A~Z,a~z)、数字(0~9)、下划线_组成的字符串,并且第一个字符必须
是字母或下划线。在使用标识符时还有注意以下几点:
(1)标识符的长度最好不要超过8位,因为在某些版本的C中规定标识符前8位有效,当两个标识符前8位相同
时,则被认为是同一个标识符。
(2)标识符是严格区分大小写的。例如Imooc和imooc 是两个不同的标识符。
(3)标识符最好选择有意义的英文单词组成做到"见名知意",不要使用中文。
(4)标识符不能是C语言的关键字。想了解更多C语言关键字的知识,请查阅WIKI。
变量及赋值
变量就是可以变化的量,而每个变量都会有一个名字(标识符)。变量占据内存中一定的存储单元。使用变
量之前必须先定义变量,要区分变量名和变量值是两个不同的概念。就好比:住在房间里的客人与房间号是
两个不同的概念。
变量定义的一般形式为:数据类型 变量名;
多个类型相同的变量:数据类型 变量名, 变量名, 变量名…;
变量名和标识符的命名规范完全相同。
注意:在定义中不允许连续赋值,如int a=b=c=5;是不合法的。
变量的赋值分为两种方式:1.先声明再赋值 2.声明的同时赋值,例如:
//先声明,再赋值
int num;
num = 100;
//声明的同时赋值
int x = 10;
基本数据类型
在我们玩游戏的时候,游戏中的角色是有类型的,有敏捷型、力量型、法术型等等。同样C语言中的数据也是
有类型的,C语言中,数据类型可分为:基本数据类型,构造数据类型,指针类型,空类型四大类。如图所示:
|整型
|基本类型|字符型 |单精度型
| |实型(浮点型)|双精度型
|
|
| |枚举类型
| |数组类型
数据类型|构造类型|结构体类型
| |共用体类型
|指针类型
|空类型
这里我们先给大家讲解基本数据类型中最简单也是最常用的整型、实型与字符型。
数据类型 说明 字节 应用 示列
char 字符型 1 用于储存单个字符 char sex = ‘M’;
int 整型 2 用于储存整数 int height = 18;
float 单精度浮点型 4 用于储存小数 float price = 11.1;
double 双精度浮点型 8 用于储存位数更多的小数 double pi = 3.1415926;
整型数据是指不带小数的数字。生活中有很多信息适合使用整型数据来表示,比如:人的年龄、班级的人数、
书的总页数等等。因此整型的类型比较多:
数据类型 说明 字节 取值范围
int 整型 2 (-32768~32767)-2^15 ~ 2^15-1
short int 短整型(int可以省略) 2 (-32768~32767)-2^15 ~ 2^15-1
long int 长整型(int可以省略) 4 (-2147483648~2147483647)-2^31 ~ 2^31-1
unsigned int 无符号整型 2 (065535)02^16-1
unsigned short int 无符号短整型(int可以省略)2 (065535)02^16-1
unsigned long int 无符号长整型(int可以省略)4 (04294967295)02^32-1
注:int、short int、long int是根据编译环境的不同,所取范围不同。而其中short int和long int至少是表中
所写范围,但是int在表中是以16位编译环境写的取值范围。另外 c语言int的取值范围在于他占用的字节数 ,
不同的编译器,规定是不一样。ANSI标准定义int是占2个字节,TC是按ANSI标准的,它的int是占2个字节的。
但是在VC里,一个int是占4个字节的。
浮点数据是指带小数的数字。生活中有很多信息适合使用浮点型数据来表示,比如:人的体重(单位:公斤)、
商品价格、圆周率等等。因为精度的不同又分为3种:
数据类型 说明 字节 取值范围
float 单精度型 4 -3.410-38~3.4*1038
double 双精度型 8 -1.710-308~1.7*10308
long double 长双精度型 16 -1.2*10-4932~1.7*104932
注:C语言中不存在字符串变量,字符串只能存在字符数组中,这个后面会讲。
#include <stdio.h>
int main()
{ int age = 15, height = 162;
float weight = 82.5;
char isfat = 'y';
printf("年龄:%d 岁\n", age);
printf("身高:%d CM\n", height);
printf("体重:%f KG\n", weight);
printf("是否属于肥胖儿童:%c\n", isfat);
/*%d,%f,%c此类符号在后面会有讲解*/
return 0;
}
格式化输出语句
格式化输出语句,也可以说是占位输出,是将各种类型的数据按照格式化后的类型及指定的位置从计算机上
显示。这样做的好处,是有利于计算机能够准确的将我们所要类型数据给我们。
其格式为:printf(“输出格式符”,输出项);
C语言中的常用格式化符:
格式符 说明 举例
%d 带符号十进制整数 int a=10;print ("%d",a);输出结果为10
%c 单个字符 char x=‘a’;print ("%c",x);输出结果为a
%s 字符串 printf("%s",“mooc”);输出结果为mooc
%f 6位小数 float a=1.23;print("%f",a);输出结果为1.23
当输出语句中包含普通字符时,可以采用以下格式:
printf(“普通字符输出格式符”, 输出项);
如:
int age = 18;
printf(“小明今年%d岁\n”, age);
如果要输出多个变量的并指定变量的位置时候,格式符还可以连用,变量之间需要用逗号隔开,如:
int a = 10;
float b = 7.56;
char x = ‘c’;
printf("整数:%d,小数:%f,字符:%c,a,b,x);
输出结果为: 整数:10,小数:7.560000,字符:c
注意:格式符的个数要与变量、常量或者表达式的个数一一对应
#include <stdio.h>
int main()
{
int age = 18;
float height = 1.85;
char unit = 'm';
printf("小明今年%d岁\n", age);
printf("小明身高%F%c\n", height,unit);
printf("小明现在在慕课网上学习IT技术");
return 0;
}
不可改变的常量
在程序执行过程中,值不发生改变的量称为常量。C语言的常量可以分为直接常量和符号常量。
直接常量也称为字面量,是可以直接拿来使用,无需说明的量,比如:
整型常量:13,0,-13;
实型常量:13.33,-24.4;
字符常量:‘a’,‘m’
字符串常量:“i mooc!”
下面的代码分别打印这四种直接常量:
printf("%d\n",100); //整型常量
printf("%f\n",3.14); //实型常量
printf("%c\n",‘A’); //字符常量
printf(“i mooc!”); //字符串常量
在C语言中,可以用一个标识符来表示一个常量,称之为符号常量。符号常量在使用之前必须先定义,其一般
形式为:
#define 标识符 常量值
符号常量的标示符一般习惯使用大写字母,变量的标示符一般习惯使用小写字母,加以区分。下面是一个使
用符号常量的小例子:
注意:常量是不可改变的,主函数中不能出现赋值即使赋的值与本身一样
#include <stdio.h>
#define POCKETMONEY 10 //定义常量及常量值
int main()
{
printf("小明今天又得到%d元零花钱\n", POCKETMONEY);
return 0;
}
自动类型转换
数据类型存在自动转换的情况,比如:
char c=‘a’;
int x;
double d;
x=c; //字符类型可以自动转换为整型
d=x; //整型可以自动转换为浮点类型
自动转换发生在不同数据类型运算时,在编译的时候自动完成。自动转换遵循的规则就好比小盒子可以放进
大盒子里面一样,下图表示了类型自动转换的规则。
char—>int—>double
|________>|
char类型数据转换为int类型数据遵循ASCII码中的对应值,ASCII码请查看WIKI。
注:字节小的可以向字节大的自动转换,但字节大的不能向字节小的自动转换
#include <stdio.h>
int main()
{
char c = 'a';
int n = c ; //将c赋值给n
float f = c; //将c赋值给f
double d = c; //将c赋值给d
printf("%d\n",n);
printf("%f\n",f);
printf("%lf\n",d);
return 0;
}
强制类型转换
强制类型转换是通过定义类型转换运算来实现的。其一般形式为:
(数据类型) (表达式)
其作用是把表达式的运算结果强制转换成类型说明符所表示的类型,例如:
double tempone=6.777;
int temptwo=(int)tempone;//强制转换为int类型
printf("%f\n",tempone);
printf("%d\n",temptwo);
结果:
6.777000
6
在使用强制转换时应注意以下问题:
1、数据类型和表达式都必须加括号,如把(int)(x/2+y)写成(int)x/2+y则成了把x转换成int型之后再除2再与y
相加了。
2、转换后不会改变原数据的类型及变量值,只在本次运算中临时性转换。
3、强制转换后的运算结果不遵循四舍五入原则。
#include <stdio.h>
int main()
{
double num = 2.5;
int a= (int)num; //定义浮点型变量num并赋值为2.5
printf("num的整数部分是%d\n", a);
return 0;
}
或
#include <stdio.h>
int main()
{
double num = 2.5;
num= (int)num; //定义浮点型变量num并赋值为2.5
printf("num的整数部分是%f\n", num);
return 0;
}
运算符号
我们上小学的时候都学过各种运算,如:加法运算、乘法运算、混合运算等,而运算就要用到运算符,如:+、
-、×、÷等等。
在C语言中同样有运算符,只是写法可能有所不同。先说一下C语言中的运算是什么?C语言中的运算就是对
数据进行操作、处理的过程。那么运算符又干什么的呢?运算符就是指定该运算的处理方式。
那么C语言中又有哪些运算符呢?
如下所示:
※ 算术运算符
※ 赋值运算符
※ 关系运算符
※ 逻辑运算符
※ 三目运算符
算术运算符
C语言基本算术运算符如下表:
名称 运算符号 举例
加法运算符 + 2+10=12
减法运算符 - 10-3=7
乘法运算符 * 2*10=20
除法运算符 / 30/10=3
求余运算符(模运算符) % 23%7=2
自增运算符 ++ int a=1;a++
自减运算符 – int a=1;a–
除法运算中注意:
如果相除的两个数都是整数的话,则结果也为整数,小数部分省略,如8/3 = 2;而两数中有一个为小数,结
果则为小数,如:9.0/2 = 4.500000。
取余运算中注意:
该运算只适合用两个整数进行取余运算,如:10%3 = 1;而10.0%3则是错误的;运算后的符号取决于被模
数的符号,如(-10)%3 = -1;而10%(-3) = 1。
注:C语言中没有乘方这个运算符,也不能用×,÷等算术符号。
#include <stdio.h>
int main()
{
int x,y;
x = 10;
y = -3;
printf("x+y=%d\n",x+y );
printf(“x-y=%d\n”,x-y );
printf("x*y=%d\n",x*y );
printf("x/y=%d\n",x/y );
printf("x%%y=%d\n",x%y );
return 0;
}
注意:%在输出串中是用来做转义用的,输出的内容取决于它后面的字符,比如%d代表输出的是一个整数,
%s输出一个字符串,因此要想输出%,就必须在%后再加一个%。
自增与自减运算符
自增运算符为“++”,其功能是使变量的值自增1;自减运算符为“–”,其功能是使变量值自减1。它们经
常使用在循环中。自增自减运算符有以下几种形式:
运算表达式 说明 运算规则
++a a自增1后,再取值。 ||
–a a自减1后,再取值。 || 先运算,再取值
a++ a取值后,a的值再自增1。 ||
a-- a取值后,a的值再自减1。 ||先取值,再运算
注意:无论是a++还是++a都等同于a=a+1,在表达式执行完毕后a的值都自增了1,无论是a–还是–a都等同于
a=a-1,在表达式执行完毕后a的值都自减少1。
#include <stdio.h>
int main()
{