完整word版专插本C语言简便总结复习.docx

上传人:b****7 文档编号:9832321 上传时间:2023-02-06 格式:DOCX 页数:40 大小:173.19KB
下载 相关 举报
完整word版专插本C语言简便总结复习.docx_第1页
第1页 / 共40页
完整word版专插本C语言简便总结复习.docx_第2页
第2页 / 共40页
完整word版专插本C语言简便总结复习.docx_第3页
第3页 / 共40页
完整word版专插本C语言简便总结复习.docx_第4页
第4页 / 共40页
完整word版专插本C语言简便总结复习.docx_第5页
第5页 / 共40页
点击查看更多>>
下载资源
资源描述

完整word版专插本C语言简便总结复习.docx

《完整word版专插本C语言简便总结复习.docx》由会员分享,可在线阅读,更多相关《完整word版专插本C语言简便总结复习.docx(40页珍藏版)》请在冰豆网上搜索。

完整word版专插本C语言简便总结复习.docx

完整word版专插本C语言简便总结复习

C语言笔记

注意:

在C语言中,关键字都是小写的。

C语言简洁、紧凑,使用方便、灵活。

ANSIC一共只有32个关键字:

autobreakcasedefaultcharconstcontinue

dowhile

double

else

enumexternfloat

for

gotoif

int

long

registerreturnshort

signed

static

sizof

structswitchtypedef

union

unsigned

void

volatile

9种控制语句,

程序书写自由,

主要用小写字母表示,压缩了一切不必要的成分。

TurboC扩充了

'11个关键字

asm_cs_ds

_es_ss

cdeclfar

hugeinterruptnearpascal

#define

八进制以0开头,如0123,即(123)8

十六进制以0x开头,如0123,即(123)16

整型:

一个正数的补码和其原码形式相同,如10得0000000000001010

一个负数的补码是取-10的绝对值10,对10的二进制形式取反加

1,111111*********1+1=111111*********0

Signedintunsignedintshortlongchar

float单精度

double双精度,longdouble

%d,%o,%x,%c,%s,—个整常量后面加一个字母I或L,则认为是longint

main()//main是主函数的函数名,表示这是一个主函数。

{

printf(”世界,您好!

\n");//printf函数的功能是把要输出的内容送到显示器去显示

}

#include//include称为文件包含命令

#include

main()

{

doublex,s;〃定义两个实数变量,以被后面程序使用

printf("inputnumber:

\n");〃显示提示信息

scanf("%lf",&x);//从键盘获得一个实数x

s=sin(x);〃求x的正弦,并把它赋给变量s

printf("sineof%lfis%lf\n",x,s);//显示程序运算结果

}

在本例中,使用了三个库函数:

输入函数scanf,正弦函数sin,输出函数printf。

sin函数是数学函数,其头文件为math.h文件

scanf和printf是标准输入输出函数,其头文件为stdio.h

C语言规定,源程序中所有用到的变量都必须先说明,后使用

C语言规定对scanf和printf这两个函数可以省去对其头文件的包含命令

由于sin函数要求这两个量必须是双精度浮点型,故用类型说明符double来说明这两个变量

scanf和printf这两个函数都由以下两部分组成:

格式控制串”,参数表

格式控制串是一个字符串,必须用双引号括起来,它表示了输入输出量的数据类型

printf("sineof%lfis%lf\n",x,s);

其中%lf为格式字符,表示按双精度浮点数处理。

它在格式串中两次现,对应了x和s两个

变量。

其余字符为非格式字符则照原样输出在屏幕上。

在程序的每行后用/*和*/括起来的内容为注释部分,程序不执行注释部分。

printf("inputtwonumbers:

\n");

scanf("%d%d",&x,&y);/*输入x,y值*/

z=max(x,y);/*调用max函数*/

printf("maxmum=%d",z);/*输出*/

}

intmax(inta,intb)/*定义max函数*/

{

if(a>b)returna;

elsereturnb;/*把结果返回主调函数*/}

从书写清晰,便于阅读,理解,维护的角度出发,在书写程序时应遵循以下规则:

1•一个说明或一个语句占一行。

2•用{}括起来的部分,通常表示了程序的某一层次结构。

{}一般与该结构语句的第一个

字母对齐,并单独占一行。

3•低一层次的语句或说明可比高一层次的语句或说明缩进若干格后书写。

以便看起来更加清晰,增加程序的可读性。

空白符:

空格符、制表符、换行符等统称为空白符

在C语言中使用的词汇分为六类:

标识符,关键字,运算符,分隔符,常量,注释符等。

1•标识符(在程序中使用的变量名、函数名、标号等统称为标识符)

C规定,标识符只能是字母(A〜Z,a〜z)、数字(0〜9)、下划线(_)组成的字符串,并且其第一个字符必须是字母或下划线。

⑴标准C不限制标识符的长度,但它受各种版本的C语言编译系统限制,同时也受到

具体机器的限制。

(2)在标识符中,大小写是有区别的。

(3)标识符虽然可由程序员随意定义,但标识符是用于标识某个量的符号。

因此,命名应

尽量有相应的意义,以便于阅读理解,作到顾名思义”。

2•关键字(关键字是由C语言规定的具有特定意义的字符串,通常也称为保留字。

用户定

义的标识符不应与关键字相同)

(1)类型说明符:

如前面例题中用到的int,double等

(2)语句定义符:

ifelse就是条件语句的语句定义符

(3)预处理命令字:

inelude

3•运算符:

4•分隔符:

在C语言中采用的分隔符有逗号和空格两种

5•常量:

C语言中使用的常量可分为数字常量、字符常量、字符串常量、符号常量、转义字符等多种。

6•注释符:

C语言的注释符是以“/*开头并以“*/结尾的串

#definePRICE30/*#define定义PRICE代表常量30*/PRICE是符号常量

习惯上符号常量用大写,变量用写小写]

例如:

整型变量a和b,可以进行求余运算:

a%b(%是求余符号)若指定a和b为实型

变量,则不允许进行”求余”运算•

整型

八进制以0开头的数是八进制•如0123表示八进制123,即(123)8,其值为1X82+2X81+3X8°十六进制以0x开头的数是十六进制•如0x123表示十六进制123,即(123)16,其值为

1X162+2X161+3X160

在C编译系统,每一个整型变量在内存中占2个字节•

实际上,数值是以补码表示的•一个正数的补码和其原码的形式是相同•而负数的补码是将

该值的绝对值的二进制形式,按位取反再加1.

例如:

求-10的补码,取-10的绝对值为10,然后10的二进制为1010,

对1010(0000000000001010)取反,1111111111110101一共占16个字节,

再加1为1111111111110110

整数的16位中,最左面的一位是表示符号,该位为0表示数值为正,该位为1则数值为负

Signedint有符号-32768-32767

unsignedint无符号0-65535

shortint短整型longint长整型.不一样的微机,位数是不一样的.

整型int

%d,%0,%x

实型floatdouble

%f

字符型char一个字符变量在内存中占一个字节

%c

Printf(“%f,%d,%c\n”,a,b,c);

\ddd:

1到3位8进制数所代表的字符

如:

\101(八进制)为65(二进制)的字符”A”

注意:

”\0或”\000是代表ASCII码为0的控制字符,即”空操作”字符•它将用在字符串中•\xhh:

1到2位16进制数所代表的字符

\n:

换行,将当前位置移到下一行开头,ASCII代码为10(十进制)

\t冰平制表(跳到下一个tab位置),制表区占8列,ASCII代码为9(十进制)

\b:

退格,将当前位置移到前一列,ASCII代码为8(十进制)

\r:

回车,将当前位置移到本行开头,ASCII代码为13(十进制)

\f:

换页,将当前位置移到下页开头,ASCII代码为12(十进制)

\\仮斜杠字符”\”,AS代码为92(十进制)

\'单:

引号(撇号)字符,ASCII代码为39(十进制)

\”双引号字符,ASCII代码为34(十进制)

字符串常量

‘是字符常量(是用一对单引号括起来的),”是字符串常量(是用一对双引号括起来的)C规定在每一个字符串的结尾加一个”字符串结束标志”是以字符’\作为字符结束标志

从ASCII代码表中可以看到ASCII码为0的字符是”空操作字符”

各类数值型数据间的混合运算

如字符数据必定先转换为整数,short型转换为int型float型数据在运算时一律先转换

成双精度型,即是二个全是float型也要先转换成double型•

Charshortl宀int宀unsignedlongdoubleJfloat

运算符优先级和结合性

级别

类另S

含义

运算符

结合方向

1

强制转换、数组、

结构、联合

圆括号

()

下标运算符

[]

指向结构成员运算符或结构体成员运算符

->

自左至右

2

逻辑

逻辑非

!

自右至左

(单目运算符)

字位

按位取反

增量

自增(加一)

++

减量

自减(减一)

--

指针

地址与运算符(取地址)

&

指针运算符(取内容)

*

算术

负号运算符(单目减)

-

长度计算

长度计算

sizeof

3

算术

*

自左至右

(双目运算符)

/

求余(取模)

%

4

算术和指针运算

+

-

5

字位

左移

<<

右移

>>

6

关系

大于等于

>=

大于

二>

小于等于

<=

小于

<

7

等于(恒等于)

==

不等于

!

=

8

字位

按位与

&

9

按位异或

A

10

按位或

|

11

逻辑

逻辑与

&&

左结合双目运算符

12

逻辑或

II

13

条件

条件运算

?

:

14

赋值

赋值

=

复合赋值

+=

*=

/=

%=

》=

<<=

&=A=

1=

15

逗号

逗号运算

J

右结合

强制类型转换运算符

(double)a将a转换成double类型

(int)(x+y)将x+y的值转换成整形,如果写成(int)x+y贝U只将x转换成int型,然后与y相加

(float)(5%3)将5%3的值转换成float型

说明:

在强制转换时,得到一个所需的类型的中间变量,原来变量的类型未发生变化.

求余“%'运算符要求其两侧均为整型量,floatx,则x%3是不合法,必须(int)x%3

自增自减运算符(只能用于变量,不能用于常理和表达式)

++i是在使用之前先使i的值加(减)1若j=++i;i=3;printf(“%d\n”,++j)为4

i++是在使用之后使i的值加(减)1若j=i++;i=3;printf(“%d\n”,j++)为3

-i++中,其中-为负号运算和++为同优先级,而结合方向是自右至左,所以相当于-(i++)

(1)控制语句

C语言9种控制语句:

1、if()else(条件语句)

2、for()(循环语句)

3、

while()

循环语句)

4、

do'—while()

(循环语句)

5、

continue

结束本次循环语句)

6、

break

中止执行switch或循环语句)

7、

switch

多分支选择语句)

8、

goto

转向语句)

9、

return

从函数返回语句)

上述括号()表示其中是

个条件,~表示内嵌的语句

例:

if(x>y)z=x;elsez=y;

⑵函数调用语句:

printf(“ThisisaCstatement.\n”);

(3)表达式语句:

a=3;(一个赋值表达式)

(4)空语句:

;(即只有一个分号语句)

⑸复合语句{}:

{z=x+y;t=z/100;printf(“%f\n”,t);}

输入输出函数

#include或"stdio.h”/*头文件stdio.h*/

Scanf()输入函数printf()输出函数是系统提供的标准函数

#include(预编译命令)

c语言中include后用引号与尖括号的区别

使用尖括号的话,编译时会先在系统include目录里搜索,如果找不到才会在源代码所在目录搜索;使用双引号则相反,会先在源代码目录里搜索。

这就意味着,当系统里(如/usr/include/里)有一个叫做math.h的头文件,而你的源代码目录里也有一个你自己写的math.h头文件,那么使用尖括号时用的就是系统里的;而使用双引号的话则会使用你自己写的那个。

所以建议:

使用系统里提供的头文件时使用尖括号使用自己编写的头文件时使用双引号输出单个字符:

#include

Main()

{chara,b,c;

a=‘B';b=‘Oc=‘Y';

putchar(a);putchar(b);putchar(c);

}

也可以输出转义字符如:

putchar(‘\101');putchar(‘’’);

输入单个字符:

getchar()函数没有参数,其一般形式为getchar()字符输入函数

#include

main()

{charc;

c=getchar();

putchar(c);

}

格式输入输出函数

Printf(“%d\n”,x);

%dN按整型数据的实际长度输出

%mc么m为指定的输出字段的宽度,如果数据的位数小于m,则左端补以空格,若大于m,

则按实际位数输出•Printf(“%4d,%4d\n”,a,b);若a=123,b=12345

则a输出结果为:

空格123则b输出结果为:

12345

%ld么输出长整型数据若longa=1356739;printf(“%9ld”,a);贝Ua输出结果为:

空格空格1356739

%0是以八进制形式输出整数.

%x是以十六进制形式输出整数.

%u用来输出unsigned型数据,即无符号数,以十进制形式输出.

%c用来输出一个字符.chara='w;printf(“%C,w);

%s用来输出一个字符串.printf(“%S',”CHINA');

%mS俞出的字符占m列,如字符串本身长度大于m则突破m的限制,全部输出字符串,若

串长小于m,则左补空格.

%-ms如果串长小于m则在m列范围内,字符串向左靠,右补空格.

%m.ns输出占m列,但只取字符串左端n个字符.这n个字符输出在m列的右端,左补空

格.

%-m.ns输出占m列,但只取字符串左端n个字符.这n个字符输出在m列的左端,右补空格.n>m,则m自动取n值,即保证n个字符正常输出.

%f用来输出实数(单精度和双精度),以小数形式输出.

%e以指数形式输出实数,输出数据所占的宽度和数字部分小数位数由系统自动指定给

出6位小数,指数部分占5列(如e+002),其中e占一位,指数符号占一位,指数占3位

%g用来输出实数,它根据数值大小自动选f格式或e格式.

Scanf输入函数scanf(“%d,%d,%d',&a,&b,&c)

#include

main()

{inta,b,c;

scanf("%d,%d,%d",&a,&b,&c);/*输入这三个数的时候”,”逗号也要输的.*/

printf("%d,%d,%d\n",a,b,c);

getch();

}

若:

scanf("%d%d%d",&a,&b,&c);输入a,b,c三个数时,12空格13空格88

Scanf(“%3d%3d,&a,&b);

输入:

123456,系统自动把123赋给a,456赋给b

Scanf(“%3c”,&ch);

输入:

abc,由于ch只能容纳一个字符,系统就把第一个字符’a'赋给ch

变量.然后再读入2位整数67赋给b.第二组数据345被跳过.

在输入数据进,遇以下情况时数据认为结束:

1、遇空格,或按回车或跳格(Tab)键;

2、按指定的宽度结束,如“%3d”,只取3列;

3、遇非法输入;

例:

输入三角形的三边长,求三角形面积s=1/2(a+b+c)area=根号s(s-a)(s-b)

(s-c)

Floata,b,c,area,s;scanf(“%f,%f,%f”,&a,&b,&c);s=1.0/2*(a+b+c);

Area=sqrt(s*(s-a)*(s-b)*(s-c));

Printf(“a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f\n”,a,b,c,s);printf(“area=%7.2f\n”,area);

If语句

If与else的配对关系:

else总是与它上面的最近的if配对.

If与else的数目一样时,采用

If()

main()

{intx,y;

scanf("%d‘,&x);

if(x<0)y=-1;

elseif(x==0)y=0;elsey=1;

printf(“x=%d,y=%d\n”,x,y);

If()

Else

Else

If()

Else

语句1

语句2

语句3

语句4

If与else的数目不一样时

采用加花括号来确定getch();/*能显示输出*/

If()

}

{if()

语句1}

Else语句2

判断某一年是否闰年其中一种方法

main()

{

intyear,leap;

printf("inputyear:

");

scanf("%d",&year);

if(year%4==0)

if(year%100==0)if(year%400==0)leap=1;

elseleap=0;

elseleap=1;

elseleap=0;

if(leap)printf("%dyes\n",year);elseprintf("%dnoyear\n",year);getch();

}

/*判断某一年是否闰年另一种方法*/

#include

voidmain()

{

intyear;

printf("inputyear:

");

scanf("%d",&year);

if(((year%4==0)&&(year%100!

=0))||(year%400==0))printf("%dyes\n",year);

elseprintf("%dnoyear\n",year);getch();

}

条件运算符(三目运算符,自右至左)

main()

{intx,y,max;

scanf("%d,%d",&x,&y);

max=(x>y)?

x:

y;/*如果(a>b)条件为真,则条件表达式取值a,否则取值b*/

printf("%d\n",max);

getch();/*能显示输出*/

}

/*输入一个字符,判断大小写,如果是大写,转换成小写,并输岀最后得到的字符*/

Main()

 

case‘A:

case‘B':

elsedisc=b*b-4*a*c;/*

case‘C':

case‘D':

printf(“>60\n”);break;

/*求方程的解*/

#include/*

输入输岀函数要调用

也可以不写*/

#include/*

用到绝对值函数和开根号函数,所以要调用*/

main()

1

floata,b,c,disc,x1,x2,realpart,imagpart;/*

定义类型*/

scanf("%f,%f,%f",&a,&b,&c);

/*

输入方程的三个数*/

printf("theequation");

/*

显示theequation,

意思是方程*/

if(fabs(a)<=pow(10,-6))

printf("is

notaquadratic");/*

对a求绝对值,判断

a=0(fabs(a)<=le-6))就不是二次方程*/

计算b*b-4*a*c的值是等于还是小于还是大于0*/

if(fabs(disc)v=pow(10,-6))printf("hastwoequalroots:

%8.4f\n",-b/(2*a));/*hastwo

equalroots是有两个相等的根的意思,这个判断是等于0后有两个相等实根*/

elseif(disc>pow(10,-6))/*大于0后有两个不等实根*/

{x1=(-b+sqrt(disc))/(2*a);

x2=(-b-sqrt(disc))/(2*a);

printf("hastwoequalroots:

%8.4fand%8.4f\n",x1,x2);

}

else

{realpart=-b/(2*a);/*小于0后有两个共轭复根的实部*/

imagpart=sqrt(-disc)/(2*a);

printf("hascomplexroots:

\n");/*hascomplexroots是有复杂的根源的意思*/

printf("%8.4f+%8.4fi\n",realpart,imagpart);

printf("%8.4f-%8.4fi\n",realpart,imagpart);

}

getch();

}

说明:

le-6:

是科学计数法,表示10的-6次方,用函数是pow(10,-6))不用0来判断,用一个

很小的数就认为disc是0,是为了产生误差,因为实数在计算和存储时会有一些微小的误差。

/*算运费*/

#include

main()

{

intc,s;

floatf,d,p,w;/*总运费f(freight货物),基本运费p(price价格),货物重w(weight重

量),距离s,折扣d(discount)*/

printf("inputnumberin'');

scanf("%f,%f,%d",&p,&w,&s);

if(s>=3000)c=12;

elsec=s/250;

switch(

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

当前位置:首页 > IT计算机 > 互联网

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

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