版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第一章 C语言基本语法元素,1.1 数据类型 1.1.1 整数类型 1.1.2 浮点数类型 1.1.3 字符类型 1.1.3 字符串类型 1.2 量与表达式 1.3 语句 1.4 基本输入输出函数 1.5 程序设计风格,第一章 C语言基本语法元素,C程序离不开对数据进行操作,而数据总是以特定形式存储和表示,C语言提供的数据类型很多,本章只介绍三种基本数据类型。,数据类型,数据类型的概念,整数类型用于描述通常的整数。包括: int short int或short long int或long “short int”的范围 “int”的范围 “long int”的范围 unsigned int或un
2、signed unsigned short int或unsigned short unsigned long int或unsigned long unsigned(无符号)整数类型只能表示正整数,它们所占的内存大小与相应的有符号整数类型相同,但所表示的最大正整数比相应的有符号整数类型所表示的最大正整数要大(大约一倍)。,整数类型,数据类型,整数类型数据在计算机内部通常用补码表示: 正整数的补码为它的二进制原码表示; 负整数的补码为把相应正整数的二进制表示中各个二进制位取反后得到的整数加1。 例如: 如果用一个字节存储整数类型数据,则12和-12的补码分别为:00001100和11110100。
3、,整数类型的内部表示,数据类型,编写程序,计算用户输入的两个整数之和,#include int main() int a, b, sum; printf( The program adds two integers.n ); printf( “Input the first number: ); scanf( %d, ,整型数据的输入输出格式码为“%d”,数据类型,实数类型,实数类型又称浮点型,它用于描述通常的实数。包括: float (单精度型) double (双精度型) long double(长双精度型),数据类型,在计算机内部,实数表示成: a2b, a:尾数;b:指数 在实数的内存
4、空间中存储的是尾数和指数两部分,它们均采用二进制表示。 有些十进制小数是不能精确表示成二进制小数的。 例如,十进制小数0.1就无法精确地用二进制表示。,数据类型,实数类型的内部表示,编写程序,计算用户输入的两个浮点数之和,float型数据的输入输出格式码为“%f”,#include int main() float a, b, sum; printf( The program adds two real numbers.n ); printf( The first real number: ); scanf( %f, ,数据类型,编写程序,计算用户输入的两个浮点数之和,double型数据的输入
5、输出格式码为“%lf”,#include int main() double a, b, sum; printf( The program adds two real numbers.n ); printf( The first real number: ); scanf( %lf, ,数据类型,字符类型是用于描述文字类型的数据。包括: char signed char unsigned char wchar_t 字符在计算机中存储的是它的编码。 较常采用的是ASCII编码,标准 ASCII 码使用 7 位二进制数来表示所有的大写和小写字母,数字 0 到 9、标点符号,以及在美式英语中使用的特
6、殊控制字符。,数据类型,字符类型,接受用户输入的字符,输出其ASCII码。,字符类型,#include int main() char c; printf(Input the character:); scanf(%s, ,数据类型,计算机处理文本信息时,将多个字符组织成一个整体才有意义,这种将多个字符当作一个整体来对待的数据类型就称为字符串。 C标准库没有显式定义字符串类型,教材作者自定义了一个函数库“zylib.h”,里面定义了一个字符串类型STRING,以及相应的字符串处理函数。,字符串类型,数据类型,数据类型,字符串类型,接受用户输入的用户名,向用户问好,#include #inclu
7、de zylib.h / 使用双引号而不是尖括号包含配套库 int main() STRING name; printf( The program reads users name, and prints a greeting.n ); printf( Your name: ); name = GetStringFromKeyboard(); /* 配套库已实现的函数,获取用户输入的字符串,以用户输入的文本行为单位 */ printf( Hello, %s.n, name ); / 使用 s 输出字符串 return 0; ,基本步骤 首先将头文件“zylib.h”与源文件“zylib.c”拷
8、贝到工程文件夹。 在工程项目中分别添加头文件和源文件。 在源程序中包含头文件 “zylib.h”。,数据类型,在工程项目中添加已有的程序文件,数据类型,第一章 C语言基本语法元素,1.1 数据类型 1.2 量与表达式 1.2.1 表达式 1.2.2 常量 1.2.3 变量 1.2.4 操作符 1.2.5 混合运算与类型转换 1.3 语句 1.4 基本输入输出函数 1.5 程序设计风格,量与表达式是C程序中最基本的概念。 量是C语言的数据处理对象,可以是常量也可以是变量; 表达式是处理数据对象的方法和步骤; 量和表达式构成一条条语句; 一条条语句构成最终的程序。,量与表达式,量与表达式,定义 表
9、达式是由操作符、操作数以及圆括号所组成的运算式。其中,操作数可以是常量、变量或函数调用,也可以是用圆括号括起来的表达式。例如: (a+b)*c/12-sin(a) 程序运行时,计算表达式值的过程称为表达式求值。,表达式,表达式,常量是指在程序执行过程中值永远不变的数据对象。 在C程序中,常量可以用两种形式表示: 字面常量(文字):在程序中直接通过数字或字符串来表示的常量,通常又称为直接量(literal)。 符号常量(常量):用指定名字代表的常量。,常量,常量与变量,常量 变量,常量与变量,常量 变量,#include const double PRICE1=20; const double
10、PRICE2=15; int main() double weight,sum_money; printf(请输入牛肉的重量:); scanf(%lf, ,#include int main() double weight,sum_money; printf(请输入牛肉的重量:); scanf(%lf, ,字面常量,符号常量,常量定义,C语言的字面常量有: 整数类型常量 实数类型常量 字符类型常量 字符串常量,常量与变量,字面常量,常量 变量,十进制整数:以非零数字开始 125 /signed int 125u /unsigned int 125L/signed long int 八进制整数:
11、以零开始 0125=85 011L=9,常量与变量,常量 变量,整型常量,十六进制整数:以0 x或0X开始 0 x125=293 0 x3B=59,在C程序中,实数类型常量采用十进制形式书写(在计算机内部采用二进制存储)。 实数类型常量有两种表示法:小数表示法和科学表示法。 小数表示法:如:456.78, -0.0057,5.,.5。 科学表示法:如:4.5678E2, -5.7e-3等。 实型常量默认为double型, 实型常量后面加F(f) 表示float型,如:5.6F, 实型常量后面加L(l)表示long double型,如5.6L。,常量与变量,常量 变量,实型常量,字符常量是由两个
12、单引号()括起来的一个字符构成,如: A, 9. 字符串常量是由两个双引号(“)括起来的字符序列构成,字符序列不仅可以包含可打印字符,也可以包含表示特殊活动的特殊字符。 可打印字符串,如“hello” 转义序列,如“n”,常量与变量,常量 变量,字符串常量,符号常量:用指定的名字代表的常数。 符号常量的定义格式为: const =; 例如: const double PI=3.1415926;,常量与变量,常量 变量,符号常量,在程序中,其值可以改变的量称为变量。变量可以用来表示可变的数据。 例如:在计算圆周长的表达式2*PI*r中,半径r就是一个可变的数据,它可能是通过用户输入得到,也可能由
13、程序的其它部分计算得到。,常量与变量,变量,常量 变量,在程序中,一个变量有四个基本特征(VANT) : 值(value) 变量所表示的数据 内存地址(address) 在程序运行时,程序中的每个变量都有一个内存地址 变量名(name) 用于在程序中标识和访问(使用)变量,具有唯一性,由用户自定义 类型(type) 变量所属的数据类型,变量的基本特性,常量与变量,常量 变量,内存的存储空间可看作是若干个从0开始编号的盒子。例如,若内存为128MB,则有12810241024个盒子(每个盒子可以存储一个8位的二进制数)。,存储单元,504,每个变量都有三个属性:名字,值和类型。变量名是一个存储单
14、元的符号名,变量的值存储在存储单元中。,inches,变量名,变量值,常量与变量,常量 变量,变量的基本特性,常量与变量,常量 变量,变量的定义,C语言规定:程序中使用到的每个变量都要有定义。变量定义指出变量的类型和变量名,还可以为变量提供一个初值。,变量定义的格式为: ; 或者 =; 例如: int a=0; int b=a+1; double x=0.5; 或: int a=0,b=a+1; double x=0.5;,操作符,操作符用于描述对数据的运算。这里的数据称为操作数,它们可以是: 常量 变量 其它操作符的运算结果 操作符分类 一元操作符:只有单个操作数,例如负号 二元操作符:带有
15、两个操作数,例如加减乘除等 三元操作符:带有三个操作数,例如条件表达式(仅在 C 语言中存在惟一一种),操作符(运算符),算术操作符(运算符),二元操作符。包括: +(加) -(减) *(乘) /(除) %(取余,比如3%2 = 1) 操作符 / 的两种含义: 整数除法 如5/2 = 2 (而不是2.5) 实数除法 如5.0/2 = 2.5 5/2.0 = 2.5,操作符,操作符,算术操作符(运算符),一元操作符。包括: +(取正,如+5,一般不用) -(取负,如-3) +(自增) -(自减) 操作符“-”和“+”是两个带副作用的操作符 int x=1,y; y = (+x) /x的值是2,y
16、的值是2 (先加后用) y = (x+) /x的值是2,y的值是1(先用后加),简单赋值操作符(=) 如:a = b * 3; a = b = c = 3; c = (a = 1) + (b = 2); 复合赋值操作符 +=,-=,*=,/=,%= a #= b 功能上等价于:a = a # b 如:a += a -= a * a 等价于a = a + (a = a a * a),赋值操作符,操作符,操作符,操作符的优先级与结合性,一个表达式中可以包含多个操作符的运算,先执行哪一个操作符所指定的运算? 对相邻的两个操作符,按下面规则确定: 圆括号:圆括号内的先运算 优先级:优先级高的先运算 结
17、合性:相同优先级按左结合或右结合,例如:m a + b * (c - d)计算次序为:-,*,-,+,混合运算与类型转换,操作数的类型转换,在C程序中,进行算术运算前,对两个类型不同的操作数进行类型转换,要把它们转换成相同类型。 C语言的类型转换方式有两种:隐式转换和显式转换。 隐式转换是指由编译程序按照某种预定的规则进行自动转换,基本原则:精度低精度高; 显式转换是指人为的通过类型转换操作符进行强制转换。,总原则:不丢失精度信息。 短的向长的靠拢,有符号向无符号靠拢 整型向实型靠拢,低精度向高精度靠拢 例如: 4 + 23L 5.1 4L + 23L 5.1 27L 5.1 27.0 5.1
18、 21.9,常规算术转换规则,混合运算与类型转换,隐式转换的问题,隐式转换有时不能满足要求。,例如:int i=2147483647; /int类型中最大的正整数 int j=10; i+j将得到错误的结果:-2147483639 最大正整数的机内补码表示如下:,混合运算与类型转换,其格式为: (类型名) 操作数 例如: int i=2147483647; /int类型中最大的正整数 int j=10; (double)i+j将得到正确的结果:2147483657.0,显式转换(强制类型转换),混合运算与类型转换,第一章 C语言基本语法元素,1.1 数据类型 1.2 量与表达式 1.3 语句
19、1.4 基本输入输出函数 1.5 程序设计风格,简单语句 格式:表达式后跟分号 例一:sum n + d; 例二:n = GetIntegerFromKeyboard(); 例三:printf( %d + %lf = %lfn, n, d, sum ); 复合语句 格式:花括号对括起来的语句序列 例: a = 1; b = a + 1; 空语句 格式:单独出现的分号 目的:满足程序特定语法规则的要求;作为未来添加程序代码的占位标记,语句,第一章 C语言基本语法元素,1.1 数据类型 1.2 量与表达式 1.3 语句 1.4 基本输入输出函数 1.3.1 格式化输出函数 1.3.2 格式化输入函
20、数 1.5 程序设计风格,基本事实 输入输出是语言与算法必须具备的功能 C 语言本身没有输入输出语句或命令,输入输出需使用标准库函数 输入输出函数原型位于头文件“stdio.h”中 典型输入输出函数 格式化输出函数 printf 格式化输入函数 scanf,基本输入输出函数,格式化输出函数 printf 调用格式 格式: printf( 输出格式规约字符串, 输出项列表 ); 例一:printf( The program prints a greeting.n ); 例二:printf( Hello, %s.n, name ); 例三:printf( %f + %f = %fn, a, b,
21、sum ); 例四:printf( %d + %lf = %lfn, n, d, sum ); %y:格式描述符 %d:十进制整数 %f:float类型浮点数; %lf:double类型浮点数 %c:单个字符 %s:字符串 %u:无符号整数,格式化输出函数 printf,编写程序,按照下列格式输出截止2005年底的部分省市统计数据。所有数据均来自各地政府官方网站,面积仅包括陆域(单位:平方公里),人口仅包括户籍人口(单位:万人),其中部分数据为约数。,左右对齐,printf 函数示例,格式化输出函数,输出格式 %对齐标志场宽.精度格式描述符 对齐标志:确定每列左侧还是右侧对齐 缺省右对齐,左对
22、齐使用减号 例:%-d 表示按照左对齐格式输出整数 场宽:确定每列占用多少字符宽度,数据输出一般不会截断 确定输出最小宽度,超出部分照常输出 例:%3d 表示按照右对齐、占三位格式输出整数,若整数长度超出三位,则照常输出数据,场宽、精度与对齐,格式化输出函数,精度:确定输出多少位数据以保证其精度 精度数字前有小数点标志,在场宽中占用一位! 例:%-5.2f 表示按照左对齐、整体占五位且小数点后两位格式输出浮点数 数据的截断 例一:按 %-5.2f 格式输出 12.3456,结果为12.35,注意四舍五入 例二:按 %-5.2f 格式输出 123.456,结果为123.46,注意截断后的数据仍然
23、超出了场宽,照常输出 字符串截断输出特例:%13.13s 表示按照整体占 13 位且多余部分截断的方式输出字符串,场宽、精度与对齐,格式化输出函数,#include #include zylib.h int main() STRING province1, province2, province3, province4, province5; double area1, area2, area3, area4, area5; double pop1, pop2, pop3, pop4, pop5; province1 = Anhui; area1 = 139600; pop1 = 6461;
24、province2 = Beijing; area2 = 16410.54; pop2 = 1180.70; province3 = Chongqing; area3 = 82400; pop3 = 3144.23; province4 = Shanghai; area4 = 6340.50; pop4 = 1360.26; province5 = Zhejiang; area5 = 101800; pop5 = 4894; printf(-n); printf(Province Area(km2) Population(10K)n); printf(-n); printf(%-13.13s
25、%9.2lf %-.2lfn, province1, area1, pop1); printf(%-13.13s %9.2lf %-.2lfn, province2, area2, pop2); printf(%-13.13s %9.2lf %-.2lfn, province3, area3, pop3); printf(%-13.13s %9.2lf %-.2lfn, province4, area4, pop4); printf(%-13.13s %9.2lf %-.2lfn, province5, area5, pop5); printf(-n); return 0; ,程序代码,格式化
26、输出函数,格式化输入函数 scanf 调用格式 格式:scanf( 输入格式规约字符串, 输入项列表 ); 例: scanf( %d,%d, 特别说明 输入格式码与输出格式码基本相同 用户在终端输入的数据逐一存放到输入项列表中变量所在的地址空间;对于普通变量,变量名前需添加取址操作符“ 格式二:“/”,注释从此字符序列开始直至本文本行结束 例二: int a; / 此处内容为注释 特别说明 同一种注释标记不可以嵌套 “/”不跨行,“/*”与“*/”对可跨行,注 释,程序设计风格,字符集 构成语言的基本符号称为语言的字符集。 C语言的字符集由下列符号构成: 大小写英文字母:az, AZ 数字:09 特殊字符: ! # % ? ( ) 空格 横向制表 纵向制表 换页 换行,命名规范,程序设计风格,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 机构研究报告-Brand KPIs for health insurance Bradesco Saúde in Brazil-外文版培训课件
- 牵引理疗设备操作规范指引
- 内分泌指标解读规范指引
- 羊羔早期补饲技术操作手册
- 新房开荒保洁验收执行流程
- 蔬菜生产基地环境监测数据上报制度
- 苹果树蚜虫绿色综合防控指南
- 设备设施维护操作指引
- 心理健康测评实施指引
- 排毒养颜营养干预方案
- 2026年湖北省武汉市辅警协警笔试真题及答案
- GB/T 47417-2026蜂蜜中水不溶物的测定
- 管道拆除安全措施方案
- 成人2型糖尿病口服降糖药联合治疗专家共识(2025版)课件
- 110kV变电站电气设备吊装专项施工方案
- 便利店工作制度详细流程
- 2026年云南省初中学业水平考试数学仿真卷(一)(含答案)
- 2025年中级注册安全工程师《建筑施工安全》真题及答案
- 输血不良事件案例分析
- 5.1图形王国(课件)-2025-2026学年二年级下册数学北师大版
- 申论写作高效提升全规划:从基础到高分实战指南【课件文档】
评论
0/150
提交评论