您的位置:首页 > 编程语言 > C语言/C++

C语言基础知识

2015-04-11 15:26 197 查看

第一讲 C语言的数据表现形式

一、常量

1.在程序中其值不能改变的量我们称之为常量,具体细分又可以有以下几种划分:
(1)整形常量——如我们常见的1、2、1000等等;
(2)实型常量——如常见的小数和指数形式的常量,其中指数形式应特别注意的是在指数表达中用e或者E代表以10为底的指数,且e或者E之前必须必须有数字,e或者E之后必须为整数。如你想表达1.24乘以10的3次方就应该写成如下形式:1.24e3。
(3)字符常量——有普通字符如'a','z','3'和转义字符两大类。主要注意一些常用的转义字符,见下表:

转义字符字符值输出结果
\'一个单撇号具有此八进制码的字符
\"一个双撇号输出这个字符
\?一个问号输出这个字符
\\一个反斜杠输出这个字符
\a警告声音或视觉信号
\b 退格当前位置后退一个字符
\f换页当前位置移到下页开头
\n换行当前位置移到下一行头
\r回车移到本行开头
\t水平制表符移到下一个tab位
\o,\oo或\oooASCII字符与该八进制码对应的字符
(4)字符串常量——如"haha","123"等等。这里应注意的是用的双引号,使用单引号是错误的,初学者务必在意。
(5)符号常量    ——这个就要用到一个#define指令,表示用一个符号名代表一个常量。如:
#define PI 3.14// 注意这句话后没有分号
经过上面的定义就可以在程序中用PI代表3.14.  
注意——不要把符号常量和变量混淆,符号常量不占内存,变量一般是占用内存的,为了区分我们一般把符号常量用大写表示。

二、数据类型

1.基本类型
(1) 整形类型:int(整形),short int(短整形), long int(长整型),long long int(双长整形),char(字符),bool(布尔) 
sizeof(short)<=sizeof(int)<=sizeof(long)<=sizeof(long long)
(2) 浮点型:float(单精度浮点型),double(双精度浮点型)
2.枚举类型(enum)
3.其他类型
(1)数组:一组有序数据的集合
(2)指针:一个变量的地址我们称为指针
(3)结构体:不同数据组成的组合型数据结构
(4)共用体:几个不同的变量共享一段内存

三、运算符和表达式

1.上面我们理解了C语言中数据的一些概念,下面就该用数据了,数据的使用离不开运算符,否则程序就没有意义了,下面我介绍一下C语言中常用的运算符
C语言中常用的算术运算符有34种包括常见的+(加) -(减) *(乘) /(除) %(求余),重点解释求余%:
示例:
#include<stdio.h>
int main()
{
int a,b;
int s;
printf("请输入两个整数用空格隔开");
scanf("%d %d",&a,&b);
s = a%b; 	//	求余数
printf("余数是%d",&s);// 打印输出余数
return 0;
}


上面程序的功能就是求余,即输入两个数如11和5,程序运行后结果为1.所以11%5 = 1.
这里应该注意的是%两侧只能是整数,别且其正负形取决于%左侧的数值。
2.自增自减运算符
在我们学习C语言的过程中我们经常能看到一些这样的符号++,--。这就是自增自减运算符,他在C程序中使用及其频繁,他的功能是是变量自己增加1或者减少1,下面就通过一段程序验证
示例:
#include<stdio.h>
int main()
{
int a,b;
a = 1;
b = 1;
printf("现在的a是%db是%d",a++,b++);// 打印输出
/*
++,--运算符只能对变量操作,如果你对一个常量使用自增自减运算符回报错。
5++;	// 这样是不正确的

*/
return 0;
}


除了上面应该注意的不要给常量使用自增自减运算符外,还应注意的是a++和++a是不一样的,a++代表先使用a的值在执行++操作,而++a代表先执行++操作在使用a的值,推荐一个方便记忆的口诀:++在前先加后用,++在后先用后加。
3.常用运算符的优先级问题
C语言中各个运算符的组合就可以构成个表达式,这就会涉及到各个运算符的优先级问题,简单来说遵循一下原则:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符,遇到复杂的可以查表,没必要死记硬背。
4.区分赋值运算和等于
简单赋值运算:int a = 10;这其中的“=”不可简单的看作是等于号,在这他是赋值操作。在C语言中如果想表达等于应该用“==”。初学者务必注意。
四、输出函数scanf的使用注意
scanf函数的使用和printf函数基本相似,但是又有一些细微的差别,主要体现在输入时的一些问题上,如:
scanf("%d",&age); // 细心的话你就会发现age前有个“&”,这个是取地址运算符。如果你输入的不是地址值,那就得在前面加“&”。但是你如果输入的本身就代表一个地址,那你就不能在加“&”了,应该注意的是数组指针结构体等的输入。另外如果输入的量不止一个就需要注意各个字符之间的间隔了。
示例:
#include<stdio.h>
int main()
{
int a ,b;
scanf("%d,%d",&a,&b);
scanf("%d %d",&a,&b);
scanf("%d-%d",&a,&b);
scanf("%da%d",&a,&b);
return 0;
}


如上面5、6、7行所写,%d之间可以使“,”(逗号)“ ”(空格)“-”(横线)甚至是字母。注意的是你中间是什么在输入的时候就加上什么,此外如果是空格,输入的时候可以输入空格、tab、和回车。

第二讲 C语言三大结构

一、顺序程序设计

各语句按照自上而下的顺序执行,执行完上一个语句就接着之下一个语句,是无条件的,补习做任何判断。

二、选择程序设计

有时候需要根据条件的成立选择执行某个操作,这时单靠顺序程序设计就达不到要求,就得使用选择程序设计了,接下来通过代码感受选择程序设计的思想
示例:
<span style="font-family:Microsoft YaHei;font-size:14px;">#include<stdio.h>
#include<math.h>

int main()
{
double a,b,c,disc,x1,x2,p,q;
scanf("%lf%lf%lf",&a,&b,&c);
disc = b*b-4*a*c;
if(disc<=0)	//若b的平方-4*a*c<0,则执行这一句,否则执行else语句
printf("方程无实根");
else	//代码能执行这一句说明if的条件不成立,接着执行else的循环体语句。
{
p= -b/(2.0*a);
q = sqrt(disc)/(2.0*a);
x1 = p+q;
x2 = p-q;
printf("x1 = %f\nx2 =%f",x1,x2);// 打印输出实根
}
return 0;
}</span>


上面通过一个球方程实根的例子引出选择程序设计的概念,如果你的disc符合if语句中的条件,就执行if的循环体语句,否则就执行else的循环体语句。体现了根据条件的不同执行的代码不同的思想,这就是选择程序设计。选择结构中常用if和switch语句。简单使用如下:
if(表达式)

语句1

else
语句2;
应当注意的是else总是与最近的没有和else配对的if结合。
switch(表达式)
{
case 数值1:break;
case 数值2:break;

case 数值3:break;

case
数值4:break;

defaut:break;
}
if和switch多数情况下可相互转化,相比较来说if更加灵活。

三、循环程序设计

常用的有for循环、while循环
1.for循环语句
for语句的一般形式是:for(表达式1;表达式2;表达式3)
语句
其中表达式1设置初始条件,只执行一次。可以为一个多个变量设置初始值。
表达式2是循环条件表达式,用来判断是否执行循环,每次执行循环体前限制性表达式,决定是否执行循环。
表达式3作为循环的调整,执行万完循环体后执行。
2.while语句
一般格式为while(表达式)语句,可记为只要当循环条件表达式为真就执行循环体。
另外for(表达式1;表达式2;表达式3)
语句
和while 表达式2

语句
表达式3

无条件等价。

四、continue和break

continue的作用是提前结束本次循环,接着执行下次循环。使用场合有循环结构和循环潜逃下的continue。
break的作用是结束整个循环不在判断执行条件是否成立。使用场合有 switch/循环结构。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: