C语言基本语法Word格式.docx

上传人:b****5 文档编号:20799745 上传时间:2023-01-25 格式:DOCX 页数:115 大小:369.86KB
下载 相关 举报
C语言基本语法Word格式.docx_第1页
第1页 / 共115页
C语言基本语法Word格式.docx_第2页
第2页 / 共115页
C语言基本语法Word格式.docx_第3页
第3页 / 共115页
C语言基本语法Word格式.docx_第4页
第4页 / 共115页
C语言基本语法Word格式.docx_第5页
第5页 / 共115页
点击查看更多>>
下载资源
资源描述

C语言基本语法Word格式.docx

《C语言基本语法Word格式.docx》由会员分享,可在线阅读,更多相关《C语言基本语法Word格式.docx(115页珍藏版)》请在冰豆网上搜索。

C语言基本语法Word格式.docx

VisualC++

ASCII:

1B

Unicode:

2B

unsigned:

无符号,也就是没有负数,全部是正数。

如unsignedint

所以,如果对于int来说,1111111111111111=-1,而对于unsignedint来说,1111111111111111=216-1

另外还有一个关键字:

signed,代表有符号,如signedint实际上就是int。

longint可以简写为long,而shortint可简写为short

3、浮点数:

float、double,

float称为单精度浮点数,由4B表示,它只有6个有效数字。

能表示的数据范围:

0及1.2X10-38~3.4X1038

double称为双精度浮点数,由8B表示,它有15个有效数字。

能表示:

0及2.3X10-308~3.4X10308

longdouble长双精度浮点数,一般不太使用,它一般可以有有16B。

注意一个细节:

不准确,可能有些数明明是有限小数,但在计算机中无法表示,将表示成无限的近似的数,如0.1,所以,我们有两点要注意的:

1)不要用浮点数来控制循环次数。

floatf;

for(f=0;

f<

1;

f+=0.1)

{……}

2)不要直接比较两个浮点数是否相等。

如:

doublea=0.1,b=0.11

if(a==b)

真正要做的比较应该为:

if(fabs(a-b)<

=1e-7)

4、字符:

char,包括:

(可参照ASCII码表进行)

1)字母:

大写、小写

2)数字:

0~9

3)专门符号:

29个,!

@#$

4)空格符:

空格、水平制表符

5)不能显示出来的字符:

null,可以以'

\八进制代码'

表示出来,如回车换行符'

\007'

,还可以以'

\代号'

表示,如'

\n'

\n:

回车换行

\f:

换页

\b:

退一格

\r:

回车,不换行,就是回到这一行的最前面开始

\0:

空字符,

\\:

反斜杠本身

字符必须包含在一对单引号中,如:

'

a'

,'

\035'

5、字符串:

包含在一对双引号中的任意个(1个或多个)字符,但是一个字符串中至少有一个字符\0,如:

"

China"

charstr[]="

\123abc\n\\"

可以使用strlen(str)来求字符串str中有多少个字符,此处得到6.

可以使用sizeof(str)来求字符串str占了多少个字节的空间,此处得到7.

注意:

1)双引号本身应该在英文状态下

2)字符串中可以有中文,一个中文点两个字节

0.3.2运算符

+-*/%

除:

规定如果参加运算的两个数都是整数的话,则结果也是整数;

而如果只有有任意一个数据为float或double,则结果为double,如:

doublec;

inta=-10,b=4;

//方法一:

强制转换某个数为double或float

c=(double)a/b;

//c=2.5

c=a/(double)b;

printf("

c=%lf\n"

c);

//方法二:

将数字前面乘以1.0,从而该数变为double

c=1.0*a/b;

//c=2.5;

陷阱:

floatc=2.5,d=5.2;

doublee;

e=c*d+a/b;

取余%:

规定参加运算的两个数必须是整型(包括int、short、long、char),不得为浮点数,其结果为被除数除以除数所得到的余数,其符号与被除数相同。

inta=-20,b=3;

intc=a%b;

//c=-2

intd=a/b;

//d=-6

如果

inta=20,b=-3;

//c=2

0.3.3赋值

在C中,赋值运算符包括:

=、+=、-=、*=、/=、%=及后面的位运算的&

=、|=、^=等。

注意问题:

1、复合赋值:

+=、-=、*=、/=、%=,如:

intb=5;

b+=7;

//相当于b=b+7;

其计算顺序为从右向左计算,如:

inta=10;

a+=a-=a*=a/=2;

//结果a=0

可以分解为:

a/=2;

a*=a;

a-=a;

a+=a;

2、括号的问题:

inta=10,b,c;

a+=(b=3*4);

//b=12,a=22

3、逗号表达式的问题,规定,取最后一个数的值,如:

inta=10,b;

a+=(b=3*4,c=(5,10,15));

//b=12,c=15,a=25

4、混合运算类型的转换问题:

1)有些转换是自动完成的,其一般原则为:

char->

int->

long->

double如:

doublef;

inta,b;

floatt;

charc;

f=(t=a+c);

2)如果不满意,可以强制类型转换

a=(int)(f+t);

由doube或float强制向int转换方式,是直接将小数点后面的所有的数据摸掉,不会自动进行四舍五入。

doubled=12.89;

inta;

a=(int)d;

//a=12

如果我们想要四舍五入,得用技巧,加0.5后再取整。

doublee=12.89,f=34.46;

inta=(int)(e+0.5);

//a=13

intb=(int)(f+0.5);

//b=34;

这个小技巧可以扩展:

精确到小数点后几位,如:

doubled=12.345678;

现在,要想精确到小数点后3位,应该得到:

12.346,方法为先乘以1000,再加0.5,再取整,再除以1000.0:

d=(int)(d*1000+0.5)/1000.0;

0.3.4自增和自减

++、――,形式有两种:

a++,++a,

a++规定,先取a的值在本表达式中进行计算应用,再将a加一,只影响后面的语句,如:

inta=4;

intb=a++;

//b=4,a=5

intc=++a;

//a=5,c=5

a=4;

intd=(a++)+(a++)+(a++);

在VC中,相当于四条语句:

d=a+a+a;

a++;

其结果,a=7,d=12;

++a规定:

先将a的值加一,再应用a的值,并影响这条语句。

intb=++a;

//a=b=5;

intc=(++a)+(++a)+(++a);

在TurboC中,相当于四条语句:

++a;

c=a+a+a;

其结果,a=7,c=21;

0.3.5数据的输入与输出

1、输出:

printf、putchar、puts等

1)特殊字符的输出:

\n、\b

2)输出各种字符的方式:

整型%d,字符%c,字符串%s,小数形式的浮点数%f,指数形式的浮点数:

%e,长整型%ld,double型%lf,后面的指针类型(地址)%lp

3)对于整型宽度问题:

%5d,这个数字点5个位置,多出的位置用前置空格被齐,被在数字的前面。

如果%-5d,空格被在数字的后面。

如果这个数字的长度大于5,则将该数字完整的打印出来。

4)对于浮点数,用%f打印小数,用%e打印指数。

5)可以指定小数点后几位,如%.3f,或%10.3f,意思是说,小数点后占3位,一共占10位(包括小数点位,因此,只有9位数字)

6)对于整数,输出八进制数:

%o,输出十六进制数:

%x或%X

7)输出无符号整数:

%u,如果该数实际上已经是有符号的数,按%u输出后,负数会变成正数。

8)输出长整型数:

%l(注:

字母l),在VC中完全不需要。

9)如果想输出特殊的字符如\、%本身,可\\,%%输出

10)输出地址:

%lp,

11)输出单个字符可用putchar()进行。

2、输入:

scanf、getchar、gets等

可接收的输入数据包括:

整数、浮点数、字符、字符串,且均以回车键结束输入。

格式与输出相同。

1)可以指定宽度:

scanf("

%3d%4d%d"

&

a,&

b,&

c);

//如果输入123456789,则a=123,b=4567,c=89,但是,如果用户输入的是:

123456789,则a=12,b=3456,c=78,9多余舍弃掉。

2)常见错误:

(1)后面的变量必须用地址,如果不用地址,会出错。

a,b,c);

//错误,a、b、c必须用地址表示

(2)如果变量本身就是地址(指针),那么不能再用地址,如:

int*p=&

a;

%d"

p);

//正确,因为p就是a的地址,就是输入到a中去了。

p);

//错误,变成将整数输入到p中去,可是,p又是指针。

(3)在scanf中,除了格式符外,不要出现多余的文字,如:

scnaf("

a=%d,b=%d"

b);

//用户在输入数据时,必须a=5,b=10才能正确输入。

3)输入字符:

可用%c,如果混合输入,非常麻烦:

4)还可以使用getchar()输入字符,方式为:

c=getchar();

5)还可以使用getch()输入字符,方式为:

c=getch();

该函数应该包括头文件<

conio.h>

,且用户不需要按回车键就输入,在制作游戏中比较有用。

6)还可以使用getc(stdin)输入字符,其中参数stdin就是标准输入设备,由VC定义好的。

c=getc(stdin);

这种方法在文件操作中比较有用,其中的参数stdin可以换成是我们已经通过fopen打开的文件指针,就能够从该文件中输入一个字符。

0.4C语言中的选择结构程序设计

0.4.1关系运算符和关系表达式

关系运算符有6种:

<

、<

=、>

、>

=、==、!

=

其中:

=的优先级相同,==、!

=优先级相同,且前者的优先级高于后者。

关系表达式:

就是用关系运算符将若干个数值、数值表达式连接起来的式。

a>

b,(a=3)>

b+(c==4)

在C中,并不存在“真”和“假”,只有非0和0,规定:

凡是结果为0的,认为“假”(不成立),凡是结果为非0的,都认为是“真”(成立),哪怕结构为0.000001、'

A'

,也是真。

且在C语言中,没有所谓的BOOL型。

因此,有时我们会看到类似这样的式子:

if(a=b+c)//判断a是0还是非0,如果为非0,则说明“真”

{

}

注意与:

if(a==b+c)

的区别。

在编程的时候,有时可以用C的检查机制来检查我们的错误。

可以写为:

if(b+c==a)

因为如果你写错成:

if(b+c=a)

C语言能够查找出这个错误:

赋值运算符规定左边必须是一个变量。

同样地,如果要写判断一个变量是否与某个常数相等:

if(a==12)

可写成:

if(12==a),因为如果写错成:

if(12=a),则C语言能发现这个错误。

再次强调:

通过关系运算的结果只有两种:

1表示真,0表示假。

所以:

inta=3,b=4,c=5,d=0;

表达式c>

b>

a在数学上的结果为“真”,但是在C语言中,这个表达式的结构为0(假),其计算过程为先计算:

c>

b,为真得到1,再计算1>

a为假,得到0.也正因为如此,如果我们就是要表达数学上的c>

a的真实含义,则需要使用逻辑运算符来连接起来:

b&

&

b>

a

 

0.4.2逻辑运算符和逻辑表达式

逻辑运算符:

与、||或、!

逻辑表达式:

用逻辑运算符将若干个表达式连接起来的式子。

a+b>

c&

c<

d||a

逻辑表达式的结果也用0或1来表示假或真。

逻辑运算符的真值表:

b

!

a&

a||b

非0

1

优先级:

最高→&

→||

与关系运算符的比较:

高于算术运算符,&

和||低于关系运算符,算术运算符高于关系运算符。

→算术运算符(+、-、*、/、%)→关系运算符(<

=)→&

和||→赋值运算符=

如果有式子:

(a>

b)&

(x>

y)可以写成a>

x>

y

a+!

!

c<

d*e||f

使用逻辑运算和关系运算可以进行复杂的计算、判断。

如判断闰年,满足以下条件的年份都是闰年:

1)如果年份能够被400整除,则一定是闰年,如2000;

2)如果年份能被4整除,但又不能被100整除的,也是闰年,如1996、2004是,而2100年不是闰年。

3)其它的不是闰年

假设年份为y,请写出判断闰年的表达式:

y%400==0||(y%4==0&

y%100!

=0)

或写成:

(y%400)||!

(y%4)&

y%100

判断一个变量是否为0,至少有两个方法:

if(a==0)

或:

if(!

a)

而判断一个变量是否为非0,也有两种方法:

if(a!

if(a)

在C++或VisualC++中,有一种称为BOOL类型的数据,实质就是int型。

实际上BOOL就是通过typedef这个关键字来定义出来的新的类型:

typedefBOOLint;

这样,用BOOL来定义变量,实质就是用int来定义的。

而TRUE和FALSE实际上是用#define定义出来的两个宏:

#defineTRUE1

#defineFALSE0

BOOLb;

//intb;

b=TRUE;

//b=1,TRUE是一个宏定义为1:

b=FALSE;

//b=0,#defineFALSE0

在Java中,有真实的BOOL型数据,用true和false表示真、假。

因此,在Java中,如果inta=5;

if(a)是错误的。

0.4.3条件运算符和条件表达式

表达式1?

表达式2:

表达式3

它的计算过程是,如果表达式1的值为非0,则取表达式2的值,如果表达式1的值是0,则取表达式3的值。

inta=5,b=-2,c,d=7,e=-6,f=11,g=-9,h=-1;

c=(a>

b)?

10:

-7;

//c=10

((a>

d)?

d:

((d<

e)?

f:

g)):

h;

//c=-9

有一个经典的考题:

如何用条件表达式来求出a、b、c三个变量中最大值。

intgetMax(inta,intb,intc)

Return______________________________;

#include<

stdio.h>

intmax(intx,inty,intu);

//加引用说明

voidmain()

{inta,b,c,d;

%d%d%d"

d=max(a,b,c);

printf("

max=%d"

d);

}

intmax(intx,inty,intu)

{

intz;

intq;

if(x>

y)q=x;

elseq=y;

if(q>

u)z=q;

elsez=u;

return(z);

0.4.4if-else语句

基本语法:

if(表达式)

路径1

else

路径2

其程序流程图:

0.4.5嵌套的if-else语句

1、第一种嵌套的形式有:

if(表达式1)

路径1;

}elseif(表达式2)

路径2;

}else

路径3;

例如:

判断成绩s:

0~59

60~69

70~79

80~89

90~100

及格

可以编程:

假设s一定在0~100之间,则:

if(s>

=0&

s<

=59)

差;

}elseif(s>

=60&

=69)

及格;

elseif(s>

=70&

=79)

中;

=80&

=09)

良;

=90&

=100)

优;

if(s<

}elseif(s<

elseif(s<

=89)

}else

其它语句;

2、第2种嵌套的形式:

if(表达式2)

if(表达式3)

{

}else

}

}else

if(表达式4)

if(s<

if(s<

差;

及格;

=89)

良;

优;

或者写成:

else

及格

3、几种特殊的if-else语句及其嵌套形式:

有些程序判断中,if比else要多,在这种情况下,必须准确地判断else与哪个if配对。

inta=5,b=3,c=-10,d=-7,e=100;

if(a>

b)

if(c>

d)

e++;

e――;

需要强调的是,用分号;

来表示一个语句的结束,如:

b);

e++;

e――;

0.4.6switch-case语句

switch语句又称为多分支选择语句,它可以提供多条路进行选择,它完全可用if语句来取代。

其一般格式:

switch(表达式)//表达式是可以计算出的结果,建议应该是int型或char型,不要是float或者double

case值1:

……

break;

case值2:

……

……

default:

如判断成绩:

switch(s/10)

case0:

case1:

case2:

case3:

case4:

case5:

差\n"

);

case6:

及格\n"

关于switch-case的注意事项:

1)应该具有必要的break语句来跳出switch,否则结果可能会出错,如:

inta=3,b=10;

switch(a)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1