C语言程序设计-第2章-简单c程序设计_第1页
C语言程序设计-第2章-简单c程序设计_第2页
C语言程序设计-第2章-简单c程序设计_第3页
C语言程序设计-第2章-简单c程序设计_第4页
C语言程序设计-第2章-简单c程序设计_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言程序设计——第2章简单C程序设计

C语言标识符命名规则

C语言关键字

C语言常量与变量本章主要内容提示常用表达式与优先级

输入输出函数本章学习目标知识目标掌握C语言标识符命名规则熟记C语言关键字正确理解C语言常量与变量掌握C语言数据类型及转换掌握常用表达式与优先级熟练使用输入输出函数能力目标正确定义常量与变量能根据要求正确输入数据、输出结果分析问题并根据要求正确编写简单程序

【学习提示】第1章中,我们已经初步了解C语言程序设计的有关概念,对C语言程序的总体结构有了一定认识,同时也分析了几个简单的C语言程序。可以看出,采用程序设计语言解决实际问题时,需要考虑:使用哪些类型的数据?如何处理?2.1C语言标识符与关键字

C语言基本字符

字符是组成语言的最基本的元素。C语言字符集由字母,数字,空格,标点和特殊字符组成。在字符常量,字符串常量和注释中还可以使用汉字或其它可表示的图形符号。C语言的基本字符包括:1.字母 小写字母a~z共26个大写字母A~Z共26个2.数字0~9共10个3.空白符4.标点和特殊字符其它可打印字符,如:!#@&*%+-=等2.1.2C语言标识符

一、C语言标识符在程序中表示变量名、函数名、符号常量名、数组名、文件名等有效字符序列等统称为标识符。C语言标识符分为两类:标准标识符和用户定义标识符。二、C语言标识符命名遵守如下规则:标识符只能由字母、数字、下划线组成。标识符不能以数字开头。C语言的保留字不可作用户自定义标识符。C语言对大小写敏感,如student与Student是两个不同标识符。标识符有效长度因系统不同而异,但至少前8个字符有效2.1.3C语言关键字

在C语言中,有些字符串在系统中有特定的含义与名称,在程序中不能用于其它目的,我们将这些特殊字符串称为关键字,或称为C语言保留字。C语言关键字共32个

autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaicstructswitchtypedefunionunsignedvoidvolatitlewhile2.2C语言程序中数据类型及常量与变量

数据类型程序、算法处理的对象是数据。数据以某种特定的形式存在。数据的类型简称数据类型。例如,整型数据、实型数据、整型数组类型、字符数组类型。

不同类型数据,具有不同的精度,因此占用的计算机内存大小也不同,如整型数据占2个字节内存,单精度实型占4个字节,双精度实型占8个字节内存。正确选择数据类型非常重要,数据类型选择不当,可能造成计算中的错误,如数据溢出等。正确数据类型总是和具体的常量或变量联系在一起的。

C语言的数据类型整型字符型浮点型(实型)枚举类型单精度型双精度型数组类型结构类型共用体类型基本类型构造类型空类型指针类型数据类型C语言基本数据类型与取值范围

(不同C语言标准可能有差异)数据类型与名称类型标识符占内存字节取值范围字符型char1ASCII码表内字符(0-127)整型int2-32768~32767长整型long4-2147438648~2147438648浮点型float4±3.4E38双精度型double8±1.7E3082.2.2常量与变量

1.常量所谓常量,指程序执行中其值不变的量。C语言中,常量分为普通常量和符号常量。普通常量分为数值常量,如128,835.6;字符常量用单引号,如’a’,S’;字符串常量用双引号表示,如“Hello”,”world”;2.变量

其值可以改变的量称为变量。一个变量应该有一个名字,在内存中占据一定的存储单元。变量定义必须放在变量使用之前。一般放在函数体的开头部分。变量名和变量值是两个不同的概念。变量声明(定义):语法:变量声明变量表;

举例:intx,y,z;(多个变量用“,”号隔开,但必须以“;”结束。(在C语言程序中所有标点符号必须在英文格式下输入)变量的初始化变量定义后,就可以给变量赋值,这个过程叫变量的初始化。也可以在变量定义同时进行赋值。变量类型变量是存放常量值(数据)的,常量(数据)有类型之分,因而变量也有类型之分,变量类型是来确定其变量存储空间的长度和存储格式。原因类型说明一般格式:类型名变量名表;举例:inti,j,I,count;shorta=‘y’,b;longl1,l2;unsignedn1,n2;charc1,c2,c3;floatx1,x2;doublew,y,z1,z2;注明变量必需先定义,后使用。变量分类整形变量浮点变量字符变量例如:intx;doubley;x=68;y=132.8;或intx=68;doubley=132.8;两种初始化结果相同。

【例2-1】整型变量定义与使用#include<stdio.h>voidmain(){inta,b,c,d;/*定义变量a,b,c,d为整型*/unsigneds;/*定义变量s为无符号整型变量*/a=20;b=-28;s=10/*给变量赋值*/c=a+s;d=b+s;;/*空语句*/printf(“a+s=%d,b+s=%d\n”,c,d)/*输出计算结果*/}2.3常用运算符与表达式

C语言运算符丰富,可以把除了控制语句和输入/输出以外的几乎所有基本操作都作为运算符处理,所以C语言运算符可以看作是操作符。C语言中提供一般高级语言的算术、关系、逻辑运算符外,还提供赋值符运算符,位操作运算符、自增自减运算符等。因此,C语言运算符类型全、表达式丰富、灵活。

学习运算符应注意:运算符功能与运算量关系要求运算量个数要求运算量类型运算符优先级别结合方向结果的类型C语言常见运算与运算符运算类型运算符运算符含义结合关系算术运算+-×÷/%加、减、乘、除、整除、取余自左至右关系运算<>>=<===!=比较两个表达式的大小自左至右逻辑运算!&&||非与或自左至右自增、自减运算++--变量自加(减)1;例++i,i--自右至左赋值运算=+=-=*=/=给变量赋值;例x=8;x+=y;自右至左条件运算?:根据比较结果,选择运算表达式自右至左逗号运算,顺序求值运算自左至右指针*定义指针;例int*P;自右至左取地址运算&取变量地址运算自右至左

算术运算和算术表达式

C语言算术运算包括基本算术运算、模运算、自增、自减运算等。算术表达式:用算术运算符和括号将运算对象(也称操作数)连接起来的、符合C语法规则的式子,称为算术表达式。运算对象可以是常量、变量、函数等。C语言编写数学公式

【注意事项】(1)乘号不可省略,必须用“*”运算符表示乘法运算;(2)分子、分母必须写在同一行;(3)特殊运算,如指数、开方运算必须用C语言提供的库函数书写;(4)适当使用圆括号可以避免表达式歧义;模运算(取余运算)与除法运算比较

模运算的格式为m%n,通常我们可以读作m对n取余数。模运算的两个数都必须是整数,运算结果为去掉整数商,保留余数(余数一定小于n)。例如:3%5=3,5%3=2;8%8=0,15%6=3;而除法运算中,如果是两个整数相除,结果一定是整数。例如:7/2=3299/100=2,但是,7.0/2=3.5299.0/100.0=2.99即:m=(m/n)*n+(m%n)自增、自减运算自增、自减运算,又称为自动加“1”、自动减“1”运算。符号为++、--。该运算为单目运算(只有一个操作数),且是右结合,初学者理解容易出错。使用形式(以变量i为例,分前缀与后缀)++ii自增1后再参与其它运算。--ii自减1后再参与其它运算。i++i参与运算后,i的值再自增1。i--i参与运算后,i的值再自减1。自增、减运算符只用于变量,而不能用于常量或表达式。8++,(x+y)++,(-i)++都不合法

自增、自减运算符常用于循环语句中,使循环变量自动加1,也用于指针变量,使指针指向下一个地址。【例2-2】自增、自减运算voidmain(){inti=8;printf("%d\n",++i);printf("%d\n",--i);printf("%d\n",i++);printf("%d\n",i--);printf("%d\n",-i++);printf("%d\n",-i--);}程序举例

main(){inta,b,c;a=b=c=0;a=++b+(++c);printf("%d,%d,%d\n",a,b,c);a=(b++)+c++;printf("%d,%d,%d\n",a,b,c);a=(++b)+c++;printf("%d,%d,%d\n",a,b,c);a=(b--)+(--c);printf("%d,%d,%d\n",a,b,c);++c;a=2*(++c);printf("a=%d\n",a);}a=2;b=1;c=1a=2;b=2;c=2a=5;b=3;c=3a=5;b=2;c=2a=2;b=2;c=3a=8;b=2;c=42.3.3赋值运算符与赋值表达式

1.赋值运算符:赋值符号“=”就是赋值运算符。【注意】赋值符号“=”不同于数学的等号,它没有相等的含义,在C语言中“==”表示相等。2.赋值表达式:由赋值运算符组成的表达式称为赋值表达式。一般形式:〈变量〉〈赋值符〉〈表达式〉赋值表达式的求解过程:将赋值运算符右侧的表达式的值赋给左侧的变量3.复合赋值运算在赋值符“=”之前加上某些运算符,可以构成复合赋值运算符C语言中许多双目运算符可以与赋值运算符一起构成复合运算符,即:+=,-=,*=,/=,%=复合赋值表达式一般形式:<变量><双目运算符>=<表达式>等价于:<变量>=<变量><双目运算符><表达式>复合赋值运算符举例

分析x=y=z=3+5这个表达式。根据优先级:原式

x=y=z=(3+5);根据结合性(从右向左):

x=(y=(z=(3+5)))

x=(y=(z=3+5)复合运算符表达式等价表达式复合运算符表达式等价表达式+=y+=x+5y=y+(x=5)/=y/=x+5y=y/(x+5)-=y-=x+5y=y-(x+5)%=Y%=x+5y=y%(x+5)*=y*=x+5y=y*(x+5)2.3.4关系运算与关系表达式

“关系运算”就是“比较运算”。即将两个值进行比较,判断是否符合或满足给定的条件。如果符合或满足给定的条件,则称关系运算的结果为“真”;如果不符合或不满足给定的条件,则称关系运算的结果为“假”。

关系运算符关系运算符包括:<、<=、>、>=、==、!=关系运算符优先级:

前4种关系运算符的优先级别相同,后两种也相同。前4种高于后两种。关系运算符的优先级低于算术运算符但高于赋值运算符

例如:c>a+b等价于c>(a+b);a=b>c等价于a=(b>c关系表达式用关系运算符将两个表达式(算术、关系、逻辑、赋值表达式等)连接起来所构成的表达式,称为关系表达式。关系运算的一般形式:

表达式关系运算符表达式关系表达式的值是一个逻辑值,即“真”或“假”。举例:设a=3,b=7,c=5,d=4,判断下面各表达式值①a>b;②a+b>c+d(提示:等价与(a+b)>(c+d));③a*c<=b+d;④c!=d;关系表达式优先级与结合方向c>a+b//c>(a+b)a>b!=c//(a>b)!=ca==b<c//a==(b<c)a=b>c//a=(b>c)例inta=3,b=2,c=1,d,f;a>b(a>b)==cb+c<ad=a>bf=a>b>c//表达式值0//表达式值1//表达式值1//d=1//f=0<<=>>===!=优先级6(高)优先级7(低)结合方向:自左向右优先级别:如下2.3.5逻辑运算符和逻辑表达式

逻辑表达式:用逻辑运算符(逻辑与、逻辑或、逻辑非)将关系表达式或逻辑量连接起来构成逻辑表达式。逻辑运算符及其优先顺序

C语言提供三种逻辑运算符:(1)&&逻辑与(相当日常生活中:而且,并且,只在两条件同时成立时为“真”)(2)||逻辑或(相当日常生活中:或,两个条件只要有一个成立时即为“真”)(3)!逻辑非(条件为真,运算后为假,条件为假,运算后为真)逻辑表达式的一般形式为:

表达式逻辑运算符表达式。逻辑表达式值计算举例举例a=1b=2x=1.5y=3.5下列逻辑表达式值分别为:(a>b)&&(x>y)(逻辑表达式值为0,因为(a>b)的值为0)(a==b)||(x!=y)(逻辑表达式值为1,因为(x!=y)值为1)a>b&&x>y等价于(a>b)&&(x>y),逻辑表达式值为0【注意】如果有多个表达式进行“逻辑与”运算,只要有一个逻辑表达式为“0”,结果一定是“0”,可以不在进行后面表达式计算。反之,在“逻辑或”运算中,只要有一个表达式为“1”,结果一定是“1”。2.3.6条件运算符与条件表达式条件运算符组成条件表达式的一般形式为:条件表达式1?表达式2:表达式3求值规则为:如果表达式1的值为真,则以表达式2的值作为条件表达式的值,否则以表达式3的值作为整个条件表达式的值。

举例:x=y>7?25:50,如果y的值大于7,则x赋值25,否则x赋值50;a>b?a:c>d?c:d等价与:(a>b)?a:((c>d)?c:d)2.3.7逗号表达式用逗号连接起来的表达式称为逗号表达式。一般形式:表达式1,表达式2,…表达式n逗号表达式的求解过程是:自左向右,求解表达式1,求解表达式2,…,求解表达式n。整个逗号表达式的值是表达式n的值。

例:a=3*5,a*4整个逗号表达式值为60a=3*5,a*4,a+5整个逗号表达式值为20,a的值为152.3.8运算符优先级与结合方向

C语言中,运算符的运算优先级共分为15级。1级最高,15级最低。在表达式中,优先级较高的先于优先级较低的进行运算。而在一个运算量两侧的运算符优先级相同时,则按运算符的结合性所规定的结合方向处理,关于运算符的优先级与结合顺序,在附录中详细说明,现简单归纳如下:圆括号优先级最高;单目运算优先级高于双目运算;算术运算优先级高于比较运算;比较运算优先级高于逻辑运算;逗号运算最低,赋值运算次之;同一优先级按照结合性确定优先顺序;2.4输入、输出函数及应用

C语言本身不提供输入/输出语句,输入/输出操作由函数实现。在C标准函数库中提供了一些输入/输出函数,如printf()函数,scanf()函数关键字最后的字母f是英文单词format的首字母,表示格式的意思,指按照用户指定格式将数据输入、输出到显示器屏幕上。2.4.1数据格式化输出函数printf()

printf()函数是一个标准库函数,它的函数原型在头文件“stdio.h”中。但作为一个特例,不要求在使用printf函数之前必须包含stdio.h文件。printf函数调用的一般形式为:

printf(“格式控制字符串”,输出表列);

(“;”号不可遗漏)输出格式说明

在语句printf(“a=%d,b=%d”,a,b);中“%d”就是格式说明,表示数据按照十进制格式输出。不同类型数据用不同格式字符。printf(“a=%db=%f”,a,b);函数名格式说明输出表列普通字符格式说明:由%和格式字符构成

普通字符:需原样输出的字符,可为转义字符转义字符说明在语句printf(“%d%d\n”,a,b);“\n”称为转义符,在此表示输出后换行。转义字符以反斜线"\"开头,后跟一个或几个字符。转义字符具有特定的含义,不同于字符原有的意义,故称“转义”字符。转义字符主要用来表示那些用一般字符不便于表示的控制代码。除“\n”外,“\t”表示横向跳格(下一输出区),“\r”表示回车,“\b”表示退格。输出格式字符格式字符含义格式字符含义%d带符号十进制整数%s输出字符串%o无符号八进制整数%f输出含小数,隐含输出6位小数%x无符号十六进制整数%e以指数形式输出%u无符号十进制整数%g%f或%e中输出宽度短的一个%c输出单个字符附加格式说明字符printf函数可以指定输出数据类型外,还可以通过附加格式说明指定输出数据的字段宽度、精度、对齐方式,附加格式说明字符含义如下,在具体应用中加以领会。格式字符%±m.nh/l[开始符][标志字符][宽度指示符][精度指示符][长度修正符][格式转换符]【例2-3】输出函数应用voidmain(){inta=88,b=89;/*定义整型变量a、b并赋值*/printf("%d%d\n",a,b);/*按照整数格式输出a、b值*/printf("%d,%d\n",a,b);/*增加非格式符号“,”输出a、b值*/printf("%c,%c\n",a,b);/*按照字符格式输出*/printf("a=%d,b=%d",a,b);/*增加非格式字符,进一步说明并输出a、b值*/}运行结果888988,89X,Ya=88,b=89程序举例#include<stdio.h>main(){ floatf1=100.15799,f2=12.55,f3=1.7; intn1=123,n2=45,n3=6; printf("printfWITHOUTwidthorprecision specifications:\n"); printf("%f\n%f\n%f\n",f1,f2,f3); printf("%d\n%d\n%d\n",n1,n2,n3);

printf("printfWITHwidthandprecision specifications:\n"); printf("%5.2f\n%6.1f\n%3.0f\n",f1,f2,f3); printf("%5d\n%6d\n%3d\n\n",n1,n2,n3);}不同输出格式比较

voidmain(){inta=29;floatb=1243.2341;doublec=24212345.24232;chard='h';printf("a=%d,%5d,%o,%x\n",a,a,a,a);printf("b=%f,%lf,%5.4lf,%e\n",b,b,b,b);printf("c=%lf,%f,%8.4lf\n",c,c,c);printf("d=%c,%8c\n",d,d);}运行结果:a=29,29,35,1db=1243,234131,1243,234131,1243,2341,1.24323e+03c=242122345.242320,24212345.242320,24212345.2423d=h,h2.4.2格式化输入函数scanf()

scanf()函数是一个标准库函数,它的函数原型在头文件“stdio.h”中,与printf函数相同,作用是从输入设备读取各种格式、各种类型的数据。scanf函数的一般形式:

scanf(格式控制字符串,地址列表)其中:格式控制字符串的含义与printf类似,它指定输入数据项的类型和格式。地址列表是由若干个地址组成的列表,可以是变量的地址(&变量名)或字符串的首地址。非格式字符格式说明例如:scanf(“%d,%f”,&a,&b);地址表列

注意格式说明与输入变量之间的对应关系:个数与类型使用scanf函数还必须注意事项:使用scanf函数还必须注意以下几点:a.scanf()函数中没有精度控制,如:scanf("%5.2f",&a);是非法的。b.scanf中要求给出变量地址,如给出变量名则会出错。如scanf("%d",a);是非法的,应改为scnaf("%d",&a);才是合法的。c.在输入多个数值数据时,若格式控制串中没有非格式字符作输入数据之间的间隔则可用空格,TAB或回车作间隔。d.在输入字符数据时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。【例2-5】分析程序,正确输入数据,写出输出结果#include"stdio.h"voidmain(){inta,b,c;printf("inputa,b,c\n");scanf("a=%d,b=%d,c=%d",&a,&b,&c);printf("*****a=%d,b=%d,c=%d****",a,b,c);}运行结果inputa,b,ca=66,b=77,c=88****a=66,b=77,c=88*****

2.4.3其它输入、输出函数

1.putchar函数(字符输出函数)一般形式:putchar(字符表达式);功能:向终端(显示器)输出一个字符(可以是可显示的字符,也可以是控制字符或其它转义字符)。2.getchar函数(字符输入函数)一般形式:c=getchar();功能:从终端(键盘)输入一个字符,以回车键确认。函数的返回值就是输入的字符。

3.puts函数(字符串、字符数组中字符串输出函数)一般形式:puts(char*str);功能:将字符串或字符数组中存放的字符串输出到显示器上。例如:putstr(“China\nBeijing\n”);4.gets函数(字符串输入函数)一般形式:gets(char*str);功能:接收从键盘输入的一个字符串,存放在字符数组中。#include<stdio.h>main(){

charch;

printf("PressakeyandthenpressEnter:"); ch=getchar();

printf("Youpressed");

putchar(ch);

putchar('\n');}举例:运行程序PressakeyandthenpressEnter:A↙YoupressedA2.5简单C程序设计

编写一个求解一元二次方程根的程序问题分析:相关公式:一元二次方程为ax2+bx+c=0(假定b2-4ac>0)在b2-4ac>0条件下,方程有两个不等的实根输入量:一元二次方程的系数,方程的系数可以是整数,也可以是实数。函数使用:计算平方根的函数,输入、输出函数。输出量:方程的根。中间变量:为简化程序,将重复使用的中间结果用变量表示。提示信息:增加程序友好性,在输入输出过程中给予必要的提示信息

算法设计:定义变量a、b、c、p、q、x1、x2计算中间变量p、q的值输入a、b、c的值计算方程根显示求解结果源代码

#include<stdio.h>#include<math.h>voidmain(){floata,b,c,disc,p,q

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论