C语言第02章
答案第二章 C语言程序设计的初步知识
第二章 C语言程序设计的初步知识一、选择题1.在C 语言中,下列类型属于构造类型的是 D 。
(0级)A)整型B)字符型C)实型D)数组类型2.在C 语言中,下列类型属于构造类型的是D 。
(0级)A)空类型B)字符型C)实型D)共用体类型3.在C 语言中,下列类型属于构造类型的是 D 。
(0级)A)整型B)指针类型C)实型D)结构体类型4.在C 语言中,下列类型属于基本类型的是 A 。
(0级)A)整型、实型、字符型B)空类型、枚举型C)结构体类型、实型D)数组类型、实型5.下列类型属于基本类型的是 C 。
(0级)A)结构体类型和整型B)结构体类型、数组、指针、空类型C)实型D)空类型和枚举类型6.下列字符串属于标识符的是 A 。
(0级)A)INT B)5_student C)2ong D)!DF7.下列字符串属于标识符的是 A 。
(0级)A)_WL B)3_3333 C)int D)LINE 38.下列字符串不属于标识符的是 D 。
(0级)A)sum B)average C).day_night D)M.D.JOHN9.下列字符串不属于标识符的是 D 。
(0级)A)total B)lutos_1_2_3 C)_night D)$ 12310.下列字符串不属于标识符的是D 。
(0级)A)_above B)all C)_end D)# dfg11.C语言中不能用来表示整常数的进制是 D 。
(0级)A)十进制B)十六进制C)八进制D)二进制12.C语言中能用来表示整常数的进制是 A 。
(0级)A)十进制、八进制、十六进制B)十二进制、十进制C)六进制、八进制D)二进制、十进制13.在C语言中,回车换行符是 A 。
(0级)A)\n B)\t C)\v D)\b14.在C语言中,退格符是 D 。
(0级)A)\n B)\t C)\v D)\b15.在C语言中,反斜杠符是 D 。
(0级)A)\n B)\t C)\v D)\ \16.在ASCII码表中可以看到每个小写字母的ASCII码比它相应的大写字母的ASCII 码 A 。
C语言chapter02
举例。 举例。若有变量定义 int a=2;
float b=1.2345;
则变量a、 在内存中的存储情况如图示 在内存中的存储情况如图示。 则变量 、b在内存中的存储情况如图示。
“& ”表示取 地址。
&a=2000H 2001H &b=2002H 2003H 2004H 2005H
2
1.2345
不允许将一个字符串常量赋给一个字符型变量。 不允许将一个字符串常量赋给一个字符型变量。
• 如:ch=‘a’;是正确的,而ch= a”;不是将字符a赋值给 ch= a ;是正确的, ch=“a ;不是将字符a 变量ch ch。 变量ch。
2.7 变量的初始化
变量赋初值
• C语言允许在定义变量时对变量进行初始化,即 对变量赋初值。 如:int 如:int a=2; 等价于int a;a=2; 等价于int a; • 对变量进行初始化,允许只对定义的变量的一部 分赋初值。 如:int 如:int a,b,c=25; char ch1=‘x’,ch2; • C语言中若有几个变量初值相同,必须分别赋值。 如: int a=2,b=2,c=2; • 对字符型变量初始化时,既可以将字符用单引号 括起来直接赋值,也可以使用该字符的ASCII码 括起来直接赋值,也可以使用该字符的ASCII码 进行赋值。 如:char ch=‘A’;等价于char 如:char ch=‘A’;等价于char ch=65;
存字节, 个含有单个字符的字符串常量需要占用2个字节。 个含有单个字符的字符串常量需要占用2个字节。
• 如:‘a’在内存中只占1个字节,“a”则需占用2个字 在内存中只占1 则需占用2 在内存中只占 个字节, 则需占用 节空间。 节空间。
第2章_数据类型、运算符和表达式《C语言程序设计(第三版)》-电子教案
2.2 标识符、常量与变量
符号常量
【例2-1】输入圆的半径,计算周长和面积。 #define PI 3.14159 void main() { float r,c,s; scanf("%f",&r); c=2*PI*r; s=PI*r*r; printf("r=%f,c=%f,s=%f\n",r,c,s); }
以下是合法的整型常量:
2.2 标识符、常量与变量
实型常量
实型常量只能用十进制形式表示 表示形式:
小数形式。由数字序列和小数点组成,如 3.1415926、-0.15、.15、2.等都是合法的实型 常量。 指数形式。由十进制数加上阶码标志“e”或 “E”及阶码组成,如3.14e-4或3.14E-4表示 3.14×10-4。
2.2 标识符、常量与变量
2.2.3 变量
在程序运行过程中,其存储的值可以被改变的量称 为变量 变量必须通过标识符进行说明,称为变量名。 变量名和内存单元地址存在映射关系,程序可以通 过变量名寻址,从而访问其存储的数据。
2.2 标识符、常量与变量
变量的定义和说明
数据类型 变量名1[,变量名2,…,变量名n];
long型转换成float型时由原来可达10位整数变成只有7位有效数字精度丢失但由于数的范围扩大了数据类型从较低级提升到较高级随着竞争日益激烈酒店嘴中的肥肉被大肆抢夺各大酒店在这场竞争中几乎溃不成军
21世纪高等学校精品规划教材
第2章 数据类型、运算符 和表达式
掌握C语言的基本数据类型 掌握标识符、关键字、常量和变量的使用 掌握运算符、表达式以及数据类型之间的转换 等 掌握简单数据的输入输出
C语言-2
2.实型变量
2127 ≈1038
0 1111111 27-1=127 名称
0 11111111111111111111111 1-2-23 ≈1 说明方法 有效位
存储字节 表示范围
单精度 4 -1038 -- 1038 float a; 7 双精度 8 -10308 -- 10308 double a; 16 长双精度 16 -104932 - 104932 long double a; 19
+, -
3.3 算术运算与赋值运算(自加自减运算)
三、自加自减运算 ++(加1) --(减1) 仅对整型、指针型变量运算. k++,--j ++5, × (4*a)-× ++i i++ --i i- i的值先加1,然后用新值参加运算 i的值先参加运算,然后i的值再加1 i的值先减1,然后用新值参加运算 i的值先参加运算,然后i的值再减1 b= 10 a= 7 b= 14 a= 7 b= 8 a= 3
指针 结构 联合 ...
…
整型 实型 字符型
5。可访问物理地址,进行位操作 6。C语言目标程序质量高,运行速度快 (比汇编低10%) 7。可移植性好,具有结构化控制语句 8。具有预处理功能 9。语法限制不严,程序设计自由度大
第二章 C语言概述
2.2 C程序的基本结构 程序1: main() /*主函数 */ {printf(“This is a C program\n”);} /*输出字串 */
3.2 基本数据类型及其表示(实型) 三、实型数据及其表示
1.实型 常量
1.小数形式 (至少有一个小数点和一个数字) 0.12,.12,12.0,12.
C语言习题答案1-7章
程序设计基础(C语言版)习题第01章绪论一.选择题1.以下叙述中正确的是________。
A)程序设计的任务就是编写程序代码并上机调试B)程序设计的任务就是确定所用数据结构C)程序设计的任务就是确定所用算法D)以上三种说法都不完整参考答案:D【解析】程序设计通常分为问题建模、算法设计、编写代码和编译调试四个阶段。
所以选项A)、B)、C)说法都不完整。
2.以下关于简单程序设计的步骤和顺序的说法中正确的是。
A)确定算法后,整理并写出文档,最后进行编码和上机调试B)首先确定数据结构,然后确定算法,再编码,并上机调试,最后整理文档C)先编码和上机调试,在编码过程中确定算法和数据结构,最后整理文档D)先写好文档,再根据文档进行编码和上机调试,最后确定算法和数据结构参考答案:B【解析】设计一个能解决实际问题的计算机程序需要经过以下几个过程:①建立模型。
②算法设计:给出解决问题的步骤,即算法。
③算法表达:选择一种表达算法的工具,对算法进行清晰的表达。
④编写程序:选择一种程序设计语言,把以上算法程序化,这称为编写程序。
⑤程序调试:对编写好的程序进行调试,修改程序中的错误。
⑥程序文档编写与程序维护。
综上所述,B)选项是符合上述描述的,其他选项不恰当。
3.以下叙述中正确的是________。
A)C程序的基本组成单位是语句B)C程序中的每一行只能写一条语句C)简单C语句必须以分号结束D)C语句必须在一行内写完参考答案:C【解析】函数是C程序的基本组成单位;C语言书写风格很自由,不但一行可以写多个语句,还可以将一个语句写在多行中。
故本题答案为C)。
4.以下叙述中正确的是。
A)C程序中的注释只能出现在程序的开始位置和语句的后面B)C程序书写格式严格,要求一行内只能写一个语句C)C程序书写格式自由,一个语句可以写在多行上D)用C语言编写的程序只能放在一个程序文件中参考答案:C【解析】在C语言中,注释可以加在程序中的任何位置,选项A)错误。
C第二章
Ch2_02
说明:整型数据的“溢出”
int范围为-32768~32767。 unsignde int范围为0~65535。
超出后发生“溢出”,但运行时不报错。 [例2.3] P31例 2.9
main() { int a,b; unsigned i,j; a = 32767; b = a+1; i = 65535; j = i+1; printf(" %d,%d, %u , %u ", a, b,i, j); }
运行结果:32767,-32768,65535,0
Ch2_03
2.4.2 实型变量P32
2.混合运算时,先转换成同一种类型,然后进行运算。 转换规则: 例:
横向为自右向左强制转换, int i; 纵向从低到高可多次或 float f; 一次转换成功。
高
double
float
double d; long e; 10 + 'a' + i*f - d/e
long
unsigned
低 int
char,short
说明: C语言标准没有规定整型变量在计算机内存中所 占的字节数,它与具体的机器和操作系统有关,但一般 是2字节。
二、整型变量的定义P30
[例2.2] P30例 2.7
main()
{ int a=1; c=a ;
int b=-1; d=b;
a, c, c, b, d, d);
unsigned c,d; printf(" %d, %d, %u , %d, %d, %u ",
C语言——第02章数据类型1
例2.2 整型变量的定义与使用
#include <stdio.h> void main() { int a,b,c,d; unsigned u; a=12;b=-24;u=10; c=a+u;d=b+u; printf(“a+u=%d,b+u=%d\n”,c,d);
}
(4) 整型数据的溢出 例2.3 数据的溢出 #include <stdio.h> 2 void main() 3 { 4 short a,b; 5 a=32767; 6 b=a+1; 7 printf("%d,%d\n",a,b); 8 }
区分变量名和变量值是两个不同的概念
练习:为变量a和b分别赋一个实数,求
a-b
a+b
的结果.
#include<stdio.h> void main() { float a,b; scanf(“%f%f”,&a,&b); printf("%f\n",(a-b)/(a+b)); }
§2.4 整型数据
练习:
编写:定义2个单精度变量a和b,求其和存入变量sum中; 定义2个双精度变量c和d,求其积存入变量tim中,a、b、 c、d的值任意给。
#include <stdio.h> void main() { float a,b,sum; double c,d,tim; scanf(“%f%f%f%f”,&a,&b,&c,&d); sum=a-b; tim=c*d; printf(“sum=%f tim=%f\n”,sum,tim); }
“规范化的指数形式‛,即在字母e(或E)之前 的小数部分中,小数点左边应有一位(且只能有 一位)非零的数字。 一个实数在用指数形式输出时,是按规范化的指 数形式输出的。 例如: 123.456可以表示为: 123.456e0, 12.3456e1, 1.23456e2, 0.123456e3, 0.0123456e4, 0.00123456e5 其中的1.23456e2称为“规范化的指数形式”。
C语言第02章 数据类型、运算符与表达式
回到 首页
运算符和结合性 P325,附录3
2.8 算术运算符和算术表达式
3、自增、自减运算符
自增运算符++和自减运算符--均是单目运算符, 功能是使变量的值增1或减1。其优先级高于所有 双目运算符,结合性为右结合性(自右至左)。
回到 首页
例如:++i或i++ 等价于i=i+1; --i或i-- 等价于i=i-1;
2.7数值型数据之间的混合运算
回到 首页
1、整型、实型、字符型数据之间可以混合运 算
整型(包括int,short,long)和实型(包括float,double)数据可 以混合运算,另外字符型数据和整型数据可以通用,因此,整 型、实型、字符型数据之间可以混合运算。 例如,表达式10+'a'+1.5-8765.1234*'b'是合法的。
2.9赋值运算符和赋值表达式
1、赋值运算符和赋值表达式
赋值运算符:“=”为双目运算符,右结合性。 赋值表达式:由赋值运算符组成的表达式称为赋值表达 式。 赋值表达式一般形式: 变量 赋值符 表达式 如 a=5 类型转换:将高精度的数据类型赋值给低精度的数据类 型,可能出错。
回到 首页
2.9赋值运算符和赋值表达式
2.8 算术运算符和算术表达式
3、自增、自减运算符
回到 首页
y=++x;等价于先计算x=x+1(结果x=6),再执行y=x,结果y=6。 y=x++;等价于先执行y=x,再计算x=x+1,结果y=5,x=6。 y=x++*x++;结果y=25,x=7。x++为后缀形式,先取x的值进行“*” 运算,再进行两次x++。 y=++x*++x;结果y=49,x=7。
C语言2基本语法规则练习题2
C语言2基本语法规则练习题2第二章基本语法规则2.1数据类型、运算符、表达式一、选择题1.C语言中确定数据存储的格式、范围与有效位数的依据是A.数据正负B.数据范围C.数据类型D.数据大小2.一般说在C语言中字符型数据、整型数据、单精度浮点型及双精度浮点型数据的存储长度分别为A.2、4、8、1B.4、2、1、8D.1、4、2、8B.竖向跳格D.换行C.1、2、4、83.转义字符“\\t”表示A.横向跳格,即跳到下一个输出区C.退格4.以下叙述不正确的是A.C语言中的常量分别为整型常量、浮点常量、字符常量、符号常量B.整型常量在C语言中有十进制、八进制和十六进制等3种不同形式C.C语言中,变量必须先定义后使用D.变量被定义后,变量名是固定的,变量的值在程序运行过程中是不可以随时被改变的5.以下叙述不正确的是A.C语言中的字符常量是用一对单引号('')括起来的单个字符B.字符串常量是用一对双引号(““)括起来的字符序列C.字符型数据与整型数据之间不可以通用。
D.为了便于判断字符串是否结束,系统会自动在最后一个字符后面加上一个转义字符(\\0)6.在赋值语句中用来将运算表达式的值赋给变量的“=”称为A.等号B.赋值运算符C.关系运算符D.逻辑运算符7.设a=12,n=3,则执行表达式a%=n+3后a的值为A.3B.0C.6D.12D.3D.4D.1198.设,A=0,B=1表达式!A&&B的值是A.1B.0C.29.在16位PC机环境下,字符串“A”应占的字节数为A.2B.1C.010.采用十进制数为表示方法,则077是A.77B.112C.6311.设某为float型变量,y为double型变量,a为int型变量,b 为long型变量,c为char型变量,则表达式某+y某a/某+b/y+c计算结果的类型为A.intB.longC.doubleD.char12.设a,c为int型变量,进行a=(c=5,c+5,c/2)运算后的结果为A.2B.5C.2.5D.013.在C语言中,表示逻辑“真”和“假”的值分别是A.0、1B.1、2C.1、014.C语言中表示a小于b或小于c的表达式为A.ac&&b>cB.a>c||b>cC.a>b||b>cD.a>b&&b>c16.a和b中有一个小于c的表达式为A.aB.aD.0和3D.1和1D.2D.35D.2、117.若有a=2,b=3,c=4,则表达式a==3和a=3的值分别为A.0和0B.1和3C.3和318.表达式!(1<3)||(2>5)和!(4<=8)&&(7>=3)的值分别为A.1和0B.0和0C.0和1某19.设a=4,计算表达式a=1,a+5,a++的值为A.1B.5C.1020.设某=4,y=8,计算表达式y=(某++)某(--y)的值为A.28B.32C.4021.设有语句chara=`\\72`;则变量包含的字符数为A.3B.2个C.1D.422.设有说明语句:chara='\\123abc';则变量a包含的字符数为A.4B.6C.5D.723.下列叙述正确的是A.赋值语句中的“=”是表示左边变量等于右边表达式B.赋值语句中左边的变量值不一定等于右边表达式的值C.赋值语句是由赋值表达式加上分号构成的D.某+=y;不是赋值语句24.下列选项中,可以作为C语言标识符的是A.3tuB.#tuC.tu3D.tu.3D.tudent3D.13.8eD.chard;25.下列选项中,不可以作为C语言标识符的是A.numB.turbo_cC.print26.下列选项中,不可以作为C语言常量的是A.”abc”B.1/2C.M27.下列选项中,正确的一组语句是A.chara;B.charb;C.charc;a=M;b=55;c=”M”;d=”55”;28.已知字母b的ASCII码值为98,如ch为字符型变量,则表达式ch=b+5-2的值为A.eB.dC.102D.10029.下列不是字符串常量的是A.“1818\B.“aad”C._abdcD.“a”30.在C语言中,int、char和hort三种类型数据所占用的内存是A.均为2个字节B.由用户定义C.是任意的D.由所用机器的机器字长决定31.设int类型的数据长度为2个字节,则unignedint类型数据的取值范围是A.0至255C.-32768至3276732.以下是不正确的转义字符是A.\\\\B.\\B.0至65535D.-256至255C.\\081D.\\0D.反码33.在C语言中,char型数据在内存中的存储形式是A.原码B.补码C.ASCII码某34.若某为unignedint变量,则执行以下语句后的某值为。
C语言02 数据类型及输入输出
– 注意在不同系统中长度可能不同,可用sizeof查看(举例),int 类型在VC中是4B, 而在TurboC中为2B
• • • • •
声明一个变量,类型名 后跟变量名
– 如 char a;
声明多个变量时,变量之间用逗号隔开
– 如:int a,b,c;
用signed修饰符说明有符号数,signed可以省略
适用
输出 输入和输出 输入和输出 输入和输出 输出 输出 输入 输入和输出 输入和输出 输入和输出
ቤተ መጻሕፍቲ ባይዱ
误差来源: 尾数是有限的,有些十进制数变成二进制存储时,长度 超过容纳范围丢失产生误差 在运算中,对阶移位而使部分尾数移出容纳范围而产生 误差
整型常量的表示
• • • • 十进制表示和数学中相同,如35,-36 八进制数用零做前缀,如023,-012, -079(错) 十六进制数用零加x做前缀表示,如0x2a,-0x1f 用L做后缀表示长整数常量,U后缀表示无符号数常量,如 123456789ul • 示例: – #include "stdio.h" – void main(){ – int a,b,c; – a=23;b=023;c=0x23; – printf("%d,%d,%d\n",a,b,c); – }
• 字符串常量用双引号做定界符表示, 如:”a”, ”sdhjfdshjfhjsd”,“”(空串),“ ”(由一个空 格组成的字符串)
实数输出举例
• • • • • • • #include "stdio.h" void main(){ float a=34.5678; printf("%f,%d\n",a,a); } 输出结果:34.567799,-1610612736 说明前面存储时产生误差,后者格式错误输出 完全错误
第二章 顺序结构程序设计
printf("c1+200=%c\n",c1+200);
printf("c1+256=%d\n",c1+256);
printf("c1+256=%c\n",c1+256);
}
11
2.2.2 各种类型数据的输出设计
4.字符串的输出
字符串可以用格式说明符%s输出。
【例2-7】字符串的输出。 #include <stdio.h>
2.2.2 各种类型数据的输出设计
3)对不同类型的数据,要用不同的格式字符提供输出格式。
常用的格式说明,见表2-1。
格式说明
功能
%d 以带符号的十进制形式输出整数(正数不输出符号) %f 以小数形式输出单、双精度数,隐含输出6位小数 %e 按指数格式输出浮点数(规格化表示) %c 以字符形式输出,只输出一个字符 %s 输出字符串
}
%d,按整数的实际长度进行输出,整数有几位就输出几位。
%md,m为指定的输出宽度。如果整数的位数小于m,则左补空格, 如果整数的位数大于m,则按实际的位数输出。
%ld,输出长整型。长整型的输出也可以指定宽度,即%mld。
14
2.2.2 各种类型数据的输出设计
【程例 序2运-行9】结f果格如式下符:使用修饰符 #1d2=i31n.2c43l54u6506d07e18,9<0□s12□t3d1.i42o43..4h45>6001,□□□□123.46,123.46□□□□,123.46 main( )
{ float f=123.456;
double d=1234567890123.11111,d=%f\n",f,d);
C语言程序设计 – 第 02 章课后习题
C语言程序设计– 第二章课后习题电子13-02班王双喜一、选择题1. 下面四个选项中,均是合法整型常量的选项是(A)A. 160,-0xffff,011B. -0xcdf,01a,0xeC. -01,986,012,0668D. -0x48a,2e5,0x2. 设C语言中,一个short int型数据在内存中占2个字节,则unsigned short int型数据的取值范围为(C)A. 0~255B. 0~32767C. 0~65535D. 0~2147483647(解释:unsigned 类型是无符号数,其最小值是0;两个字节能表示216 = 65536种状态,因此其范围便是0~65535)3. 下面四个选项中,均是合法的浮点数的选项是(C)A. 160,0.12,e3B. 123,2e4.2,.e5C. -.18,123e4,0.00D. –e3,.234,1e34. 在C语言中,char型数据在内存中存储的是字符的(D)A. 补码B. 反码C. 原码D. ASCII码5. 若有定义“char c = ‘\72’”(A)A. 包含1个字符B. 包含2个字符C. 包含3个字符D. 不合法,c的值不确定(解释:C程序中,反斜杠“\”是转义字符,按照规定“72”表示的应当是一个八进制数,因此c中存放的是二进制代码为01110010的ASCII(美国标准信息交换码))6. 若有以下定义,则能使其值为3的表达式是(D)int k = 7, x = 12;A. x %= (k %= 5)B. x %= (k - k % 5)C. x %= k - k % 5D. (x %= k) – (k %= 5)7. 执行逗号表达式a = 3, b = 5, a -=a+b,b = a-b之后,a和b的值分别为(D)A. 3和5B. -5和-2C. 8和3D. -5和-10(解释:逗号运算符的计算顺序是从左往右的,且每个表达式的运算完毕后相关变量立即生效)8. 设有定义:char x = 3, y = 6, z;,则执行语句z = x ^ y<<2;后,z的二进制值是(B)A. 00010100B. 00011011C. 00011100D. 00011000(解释:移位运算符优先级高于按位或运算符,因此z = 00011 xor 11000)9. 设变量n为float类型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是(B)A. n = (n*100 + 0.5)/100.0B. m = n*100 + 0.5, n = m/100.0C. n=n*100+0.5/100.0D. n = (n/100+0.5)*100.0(解释:要想保留小数点后两位应现将其第三位变成十分位然后再加0.5使其转换成整型变量后能实现四舍五入,而后再除以100.0而不是100是为了防止整个表达式沦为整型表达式而导致小数被舍弃)10. 下列程序执行后的输出结果是(小数点后只写一位)(A)A. 6 6 6.0 6.0B. 6 6 6.7 6.7C. 6 6 6.0 6.7D. 6 6 6.7 6.0# include <stdio.h>main(){double d; float f; long l; int i;i = f = l = d = 20 / 3;printf(“%d %d %f %f \n”, i, l, f, d);}(解释:由于“20 / 3”是操作数都是整型,小数部分将被舍去)11. 若变量已正确定义并赋值,下面符合C语言语法的是(B)A. a := b + 1B. a = b = c + 2C. int 18.5 % 3D. a = a + 7 = c + b(解释:A、C均不合法,D中赋值运算符的左值必须是一个变量)12. 若变量a、i已正确定义,且i已正确赋值,合法的语句是(B)A. a==1B. ++i;C. a = a++ = 5;D. a = int(i);(解释:A没有分号)13. 若有定义:int a = 7; float x = 2.5, y = 4.7;,则表达式x + a % 3 * (int)(x + y) % 2 / 4的值是(A)A. 2.5B. 2.75C. 3.5D. 0.0(解释:按照运算符的优先级不难得出结果;注意当运算符的操作数都是整型时,其结果也是整型)14. 设变量a是整型,f是单精度型,i是双精度型,则表达式10 + ’a’ + i * f值的数据类型为(C)A. intB. floatC. doubleD. 不确定(解释:i是双精度类型,因此整个表达式的类型就是双精度型。
第2章 C语言基本数据类型与常用库函数
结束, (1)字符串以结束标志 ( ‘\0’ ) 结束, 字符串以 如 "CHINA" 在内存中为 C H I N A \0 (2)空串 ""存放形式为 \0
是字符串常量。 (3)注意:'a' 是字符常量, "a" 是字符串常量。 注意: 是字符常量,
2.3.2 符号常量 符号常量: 给常量所起的名字。 符号常量: 给常量所起的名字。 例如: 例如: #define PI 3.14159 则 PI 即 3.14159
1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1
2011-6-5
7
(2)其他类型如表2-1所示: 其他类型如表2 所示:
表 2 -1 有符号 占字节数 2 2 4 2 无符号 2 4 类型标识符 int short long unsigned int unsigned short unsigned long 数值范围 -32768~32767 32768~ -32768~32767 32768~ -2147483648~2147483647 2147483648~ 0~65535 0~65535 0~4294967295
2011-6-5
13
3.字符常量 3.字符常量 (1)用单引号括起来的一个字符。 用单引号括起来的一个字符。 一个字符 如 'a' 'A' '?'
(2)字符常量的值:该字符的ASCII码值 字符常量的值 该字符的ASCII码 ASCII 'A'——65, —— ——65 ——97 如 'A'——65, ' a ''——97 (3)字符数据可以参加运算, 字符数据可以参加运算, 例如‘ 的值为67 67, ASCII码 例如‘A’+2 的值为67,即 'C ' 的ASCII码
《数据结构C语言版》----第02章
p size=0
head
a0
a1
(a)
...
a n 1 ∧
3.顺序表操作的效率分析
时间效率分析: 算法时间主要耗费在移动元素的操作上,因此计算时间复 杂度的基本操作(最深层语句频度) T(n)= O(移动元素次数) 而移动元素的个数取决于插入或删除元素的位置i. 若i=size,则根本无需移动(特别快); 若i=0,则表中元素全部要后移(特别慢); 应当考虑在各种位置插入(共n+1种可能)的平均移动次 数才合理。
(3)带头结点单链表和不带头结点单链表的比较
1).在带头结点单链表第一个数据元素前插入结点
p head s p head data next a0 x
∧
a1
…
an-1
∧
(a) 插入前
data next a0
∧
a1
…
an-1
∧
s
x
(b) 插入后
2).删除带头结点单链表第一个数据元素结点
p data next head
(5)取数据元素ListGet(L,
i, x)
int ListGet(SeqList L, int i, DataType *x) { if(i < 0 || i > L.size-1) { printf("参数i不合法! \n"); return 0; } else { *x = L.list[i]; return 1; } }
何钦铭著 C语言教材_第02章 用C语言编写程序
第三节 计算分段函数
第三节 计算分段函数
◆以e为底的对数函数 log(x)——ln x
y = 4 * x / 3; else
y = 2.5 * x - 10.5; printf("y = f(%f) = %.2f\n", x, y); return 0; }
Enter x (x>=0): 9.5 y=f(9.500000)=12.67
Enter x (x>=0): 15 y=f(15.000000)=20.00
%引导的格式控制符,按从左到右的顺序,与输出项表中的每个数据 一一对应,且须与输出项的数据类型一致,输出项的值在对应格式控制 符的位置上输出。
printf(“%d+%d=%d”,a,b,a+b);
说明:标准函数库中定义了一些输入输出函数,要调用这些库函数时, 须在源文件首用“包含命令”包含头文件。
大于、小于、大于等于、小于等于、不等于、等于
等于(= =)和不等于(!=)的优先级低于另外四种运算符的优先级。
第三节 计算分段函数
2、关系表达式 用关系运算符将两个表达式连接起来的式子称为关系表达式。
关系运算结果:为真,以整数“1”表示(运算关系成立); 为假,以整数“0”表示(运算关系不成立)。
Enter x (x>=0): 15 f(15.000000)=20.00
Enter x (x>=0): 21.3 f(21.300000)=42.75
第三节 计算分段函数
四、格式化输入函数scanf()
给程序提供数据,可以使用: (1)赋值语句 只能赋一个固定的值,解决1个特定的问题。 如华氏温度与摄氏温度的转换。 F=100 C=? 执行程序只能求出一个特定值。 F=120呢? (2)输入函数scanf()。 能解决1类特定的问题,每次执行可以输入不同的值。 采用scanf( )函数,使得程序具有更好的通用性。
第2章基本数据类型及运算符原始解读
在C语言中,大小写字母有不同的含义,例如:num, Num,NUM为三个不同的标识符。 在构造标识符时,应注意做到“见名知意”,即选择 有含义的英文单词(或汉语拼音)作标识符,以增加程 序的可读性。如表示年可以用year,表示长度可用 length,表示和可以用sum等。 C语言中有一些标识符被称为关键字,在系统中具有 特殊用途,不能作为一般标识符使用,如用于整型变量 定义的int关键字,就不能再用作变量名。 有些标识符虽不是关键字,但C语言总是以固定的形 式用于专门的地方,因此,用户也不要把它们当做一般 标识符使用,以免造成混乱。这些常用的标识符有: define,include,ifdef,ifndef,endif,elif。
2. 实型(浮点型)常量
实型常量是由整数部分和小数部分组成的,它只有十 进制的两种表示形式。 (1)定点数形式。它由数字和小数点组成。整数和小 数部分可以省去一个,但不可两者都省,而且小数点不 能省。如:1.234,.123,123.,0.0等。 (2)指数形式(或称科学表示法)。它是在定点数形 式表示法后加e(或E)和数字来表示指数。指数部分可 正可负,但须为整数,且应注意字母e(或E)之前必须 有数字。如:1.234e3,12.34e2均合法地代表了 1.234×103;而e3,1e2.3,.e3,e均不合法。 另外,实型常量的后缀用F(或f)表示单精度型,而 后缀用L(或l)表示长双精度型。如:0.5e2f表示单精 度数,3.6e5L表示长双精度数。
变量
在程序运行过程中,其值可以被改变的量称为变量。变量有两个要素: 变量名。每个变量都必须有一个名字,即变量名。变量命名应遵循标识符的命名规 则。 变量值。在程序运行过程中,变量值存储在内存中;不同类型的变量,占用的内存 单元(字节)数不同。在程序中,通过变量名来引用变量的值。 【程序2-3】用来输出两个整数相加、相减和相乘的结果,代码如下。 /* 文件名:chap02_3.cpp */ #include <stdio.h> void main(){ int x,y; printf("请输入两个整数,中间用空格隔开:"); scanf("%d%d",&x,&y); printf("%d+%d=%d\n",x,y,x+y); printf("%d-%d=%d\n",x,y,x-y); printf("%d*10%d=%d\n",x,y,x*y); } 程序运行结果: 请输入两个整数,中间用空格隔开:10 5↙ 10+5=15 10-5=5 10*5=50 本程序中,x和y定义成整型变量,用于接受用户输入的值。
黄建的C语言PPT课件,C_02_选择结构
22
分支结构
值不能是小数
不能出现变量 值不能相同
一定要加空格
可以是常量表达式 default是可选项
分支结构
分支结构
本章内容
逻辑 等式
switch
分支结构
if-else if
2
if 语句
分支结构
if
if ( 表达式 ) 语句;
表达式
T
F
语句
3
if 语句
分支结构
if ( 表达式 ) { 语句1; 语句2; }
表达式
T
F
语句1 语句2
4
if 语句
分支结构
if ( 表达式 ) 语句1; 语句2;
--a
T
F
b++
a==0
F
b+=2
b+=3
17
if - else 语句嵌套
3
分支结构
a=1, b=0
T
[2010.9.18][2011.3.27]程 序运行后,b的值是 int a = 1, b = 0; if (!a) b++; else if (a == 0) if (a) b += 2; 0 else b += 3;
语句1 语句2
default
语句3
20
break 语句
switch ( 表达式 ) { case 常量1: 语句1; break; case 常量2: 语句2; break; default: 语句3; }
《新概念C语言能力教程》第2章基本数据类型
• 其中的l(long)和h(short)称为长度修饰符,是附加的格式说明符。
格式字符串与数据类型
• unsigned short a = -1u; • 语句printf("%hu", a);中格式字符串hu(无符号短整型)准确地匹配了变量a
printf函数的输出结果不会是22亿。这条语句有逻辑错误。
分析下面语句的输出结果。
• printf("%lu", 2200000000); • printf("%ld", -1); • printf("%lu", -1u); • printf("%hd", -1); • printf("%hu", -1u); • printf("%hu", -2);
编码和解码
• 现实世界中的数据转换成由0和1组成的二进制串,计算机才能存储和处理。 由数据得到01串称为编码;由01串得到数据称为解码。
• 每类数据都各有特点,只用一种编码规则统一编码是不现实的。不同类型的 数据如整数和小数,采用了不同的编码规则。
• 多种编码规则导致不同数据的编码结果可能相同,因此,只有确定了编码规 则,才能正确解码。
功的识别的16。 • 当用户输入32789↙时,全部识别成功,但短整型变量m的实际值不会是
的类型,printf函数正确地输出变量a的实际值65535。 • 语句printf("%hd", a);中格式字符串hd(短整型)与变量a的类型不匹配,
第2章_C语言快速入门-1数据类型(1.5)
2.3.3字符常量
采用’ ‘括住的单个字符为字符型常量。 例如:‘4’ ‘c’ 字符常量在计算机内是采用该字符的ASCII编 码值来表示的,其数据类型为char。
2018/5/13
21
2.3.3字符常量
字符数据: C语言中字符数据存储时实际上是存储的
ASCII码,因此可以参与各种数学运算。
– 例如: ’a’+ ’5’=97+53
– 注意:’5’和整数5的区别
’5’是字符数据,其ASCII
码值是53 ,’a’的ASCII码
97
2018/5/13
22
2.3.3字符常量
转义字符 – 一些特殊字符(无法从键盘输入或者另有它用)用
转义字符表示
2018/5/13
23
2.3.4字符串常量
缺省为double – 字符型(e.g. 'z' '3' '$' '\n' ) 用\开头的字符为转义字符, 代表1个字符
2018/5/13
– 字符串(e.g. "UKM" "1" "5a" ) – 宏常量(e.g. #define PI 3.141592)
14
2.3.1整型常量
(由若干个数字组成) 整型常量的几种表示形式:
–Windows自启动时刻起,有一个计数器,记录系统已经 运行了多少毫秒。此计数器是个unsigned long 类型的变 量 –unsigned long的最大值是:4294967295 –一天有 24*60*60*1000 = 86400000毫秒 –4294967295 / 86400000 = 49.71026961805…… –当49.7天的时候,此计数器会溢出,引起死机
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
S4:若i≤50,返回S2;否则算法结束。
C语言程序设计
第二章
算法
例2.3 判断2000~2500间的闰年
多次判断, 多次判断,逐步缩小范围
算法表示如下: N-S图表示见教材P27图2.32 S1:2000→year S2:若year不能被4整除,则输出year不是闰年,转S6 S3:year能被4整除,不能被100整除,则输出year是闰年,转S6 S4: year能被100整除,又能被400整除,则输出year是闰年; 否则输出不是闰年。然后转S6 ① year不能被4 S5:输出year不是闰年 整除,N S6:year+1→year year能被100整除, year 能 被 4 整 除 , 又能被400整除,Y S7:若year≤2500,转S2;否则算法停止。 但不能被100整除 ,Y ② 注意: 注意:有的问题对判断的先后次序无关; ③ ④ 其它,N 但有的问题不能任意颠倒判断的先后顺序。
数据:表示数据的名称、类型和用途等。 数据:表示数据的名称、类型和用途等。
T
N 当〈条件〉满足 条件〉
(3)PAD图 PAD图 是近年来在软件开发中被广泛 一种算法的图形表示法。 使用的 一种算法的图形表示法。 特点:可展现算法的层次结构, 特点:可展现算法的层次结构, 直观易懂。 直观易懂。
(10)
THE C PROGRAMMING LANGUAGE
CH2 算法
C语言程序设计
第二章
算法
C程序的基本结构
C程序是由函数组成的 函数由说明部分和函数体组成 C程序总是从main函数开始执行的 C程序书写格式自由 每个语句和数据定义后必须有一个分号 C语言本身没有输入输出语句(利用函数实现) 可以用/*...*/做注释
(1)流程图: 流程图: 用一些图框表示各种操作的算法。 用一些图框表示各种操作的算法。 特点:直观、形象、易于理解。 特点:直观、形象、易于理解。
美国I.Nassi B.Shneiderman提出 提出) (2)N-S图(美国I.Nassi and B.Shneiderman提出) 全部算法写在一个大的矩形框中, 全部算法写在一个大的矩形框中, 没有指向箭头。 没有指向箭头。 特点: 特点:由基本结构按顺序组成 易读、易画。 易读、易画。
(25) 25)
C语言程序设计
第二章
算法
例2.5
判断一个大于等于3的正整数是否 S1:输入n的值 S2:i=2(i作为除数) S3:n被i除,得余数r S5:i+1→i S6:若i≤n-1,返回S3;否则是素数,结束。 实际上只需判断n能否被2~ n 以S6可改为: 之间的整数整除即可。所 流程图表示见教材P23图2.12 N-S图表示见教材P28图2.35
(11)
C语言程序设计
第二章
算法
结构化的算法描述: 结构化的算法描述:
条件: 条件 (1)程序清晰、可读性强; (2)程序设计者必须按一定的规范编写程序; (3)规定了几种具有良好特性的基本结构 基本结构, 用它们作为构成程序的基本单元。
(12)
C语言程序设计
第二章
算法
2.2 三种基本算法结构
顺序结构 选择结构(分支结构) 循环结构(重复结构)
当p为“真”
Y a p
当p为“假”
N
A
B
b
(15)
C语言程序设计
第二章
算法
选择结构
真 P A B 假 结构化流程图 真 A P B
假
只能执行A或B之一,两条路径汇合在一起然后出口。
(16) 16)
C语言程序设计
第二章
算法
K
K=k1 K=k2 K=ki K=kn
A1
A2
Ai
An
由选择结构派生的多分支选择结构
S4:若r=0,不是素数,算法结束;否则执行S5
S6:若i≤ n ,返回S3;否则是素数,结束。
3)有零个或多个输入—— 有零个或多个输入——
在执行算法时需要从外界获取必要的信息。 在执行算法时需要从外界获取必要的信息。
4)有一个或多个输出—— 有一个或多个输出——
算法执行的目的就是为了求解, 算法执行的目的就是为了求解,“解”就是输出的信息。 就是输出的信息。 没有输出的算法是没有意义的。 没有输出的算法是没有意义的。
(5)
C语言程序设计
第二章
算法
在计算机能执行的算法就是计算机算法。 在计算机能执行的算法就是计算机算法。 计算机算法 计算机算法可以分成两大类: 计算机算法可以分成两大类:
数值运算算法(求解,应用于专业领域) 和非 数值运算算法(管理,应用最广)。
注意: 注意: 为了有效地利用计算机解决实际问题,在设计算 法时不仅要保证计算机执行算法的正确性,还要考虑 算法的质量,选择适合于具体问题的算法。
(8)
C语言程序设计
第二章
算法
算法的特性:
1)有穷性—— 有穷性——
应含有有限的操作步骤,不能是无限的。 应含有有限的操作步骤,不能是无限的。有穷性指在 合理的限度之内” “合理的限度之内” 。
唯一性—— 2)唯一性——
每一个步骤都是确定的,只有一个涵义,不可以为二义性。 每一个步骤都是确定的,只有一个涵义,不可以为二义性。
例2的算法描述: 开始 输入A,B,C
T
A>B?
N
MAX=A
C>MAX?
a0=2*(a1+1) a1=a0 i=i-1
MAX=B
N
A1=1 i=9 While i>=1 输出a0
MAX=C 输出A,B,C
结束 (22)
T
C语言程序设计
第二章
算法
简单算法举例 例2.1 求1×2 ×3 ×4 ×5。 S1:1→p,2→i S2:p ×i →p S3:i+1→i
(6)
C语言程序设计
第二章
算法
猴子吃桃问题。有一堆桃子不知数目, 例1: 猴子吃桃问题。有一堆桃子不知数目,猴子第一天吃掉 一半并多吃了一个,第二天照此方法,吃掉剩下桃子的一半加一个, 一半并多吃了一个,第二天照此方法,吃掉剩下桃子的一半加一个, 天天如此,到第十天早上,猴子发现只剩一只桃子了, 天天如此,到第十天早上,猴子发现只剩一只桃子了,问这堆桃子原 来有多少个? 来有多少个?
用循环算法时, 用循环算法时, 注意结束条件。 注意结束条件。
流程图表示见教材P20图2.6、2.7 N-S图表示见教材P26图2.29
S4:若i>5,算法结束;否则转S2。 例2.2 打印50个学生中成绩大于80的学生。 S1:1→i 流程图表示见教材P20图2.8、2.9
S2:若gi≥80,则打印ni和gi;否则不打印 S3:i+1→i N-S图表示见教材P27图2.30、图2.31
5)正确性—— 正确性——
每一个步骤应当被有效的执行,并得到确定的结果。 每一个步骤应当被有效的执行,并得到确定的结果。
(9)
C语言程序设计
第二章
算法
算法的表示: 采用描述算法的工具) 算法的表示:(采用描述算法的工具)
处理: 处理:操作的功能 判断:单入口,多出口, 判断:单入口,多出口, 表明判断的条件 端点: 端点:表示程序的转 向,常用来表示程序 的开始和结束。 的开始和结束。 流线: 流线:表示程序 的执行方向和顺序。 的执行方向和顺序。
第二章
算法
程序=数据结构+ 程序=数据结构+算法
在编写一个程序中,需要对两个方面进行描述: 在编写一个程序中,需要对两个方面进行描述: (1)对数据的描述(数据流): 数据的描述(数据流): 的描述 指定数据的类型和数据的结构。 (不同的语言对数据的定义不同,我们将学习C语言的 数据类型和数据结构) (2)对操作的描述(控制流): 操作的描述(控制流): 的描述 要指定操作的步骤,即算法。 (算法具有通用性,脱离于语言之外,是程序设计的灵魂)
当型循环(While型循环) 直到型循环(Until型循环)
顺序结构、选择结构、循环结构是符合上述 特点的基本结构,已经证明由这三种基本结构所 构成的程序可以解决任何复杂的问题。
(13)
C语言程序设计
第二章
算法
顺序结构
a
A B
结构化流程图
A
B
A b B
(14) 14)
C语言程序设计
第二章
算法
选择结构
(7)
C语言程序设计
第二章
算法
例2:输入三个数,然后输出最大的数。 输入三个数,然后输出最大的数。 算法可以写成: (1)输入A,B,C; (2)若A>B,则A->MAX;若A<B,则B->MAX。 (3)若C>MAX,则C->MAX。 (4)输出MAX,MAX既是最大数。 具体的方法是: 具体的方法是: (1)弄清由人工完成所应该采取的步骤; 弄清由人工完成所应该采取的步骤; 对这些步骤进行归纳整理,抽象出数学模型; (2)对这些步骤进行归纳整理,抽象出数学模型; 对其中的重复步骤, (3)对其中的重复步骤,通过使用相同变量等方式求得形 式上的统一,然后简练地采用循环的方法加以解决。 式上的统一,然后简练地采用循环的方法加以解决。
数学模型: 数学模型:ai+1=ai / 2-1; i=1,2,3,…9; ; ; 或 ai=2*(ai+1+1); i=9,8,7,…1; ; ;
算法写成: (1)a1=1{第10天的桃子数,a1的初始值}; 可用数组的方法 i=9{计数器的初值为9}; (2)a0=2*(a1+1){计算当天的桃子数}; (3)a1=a0;{将当天的桃子数作为下一次计算的初值}; (4)i=i-1; (5)若i>=1,继续循环执行(2); (6)输出a0的值。 其中(2)~(5)是反复的循环执行。