第2章 简单C程序设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
32位编译器中: short int : 16位(2个字节) 整数范围:-215 ——215-1 int: 32位(4个字节)整数范围: -231—— 231-1 long int: 32位(4个字节)
signed 与unsigned
有符号整数类型(signed) 有符号整数如果是正数或零,那么最高位(符号位)为0; 如果是负数,则符号位为1。 因此,最大的16 位整数 的二进制表示形式是0111111111111111,对应的十进制 数是32 767(即215-1)。 而最大的32位整数是01111111111111111111111111111111, 对应的十进制数是2 147 483 647(即231-1)。
/*从标准输入设备,如键盘读入一个整数,存入fahr*/
scanf("%d", &fahr);
celsius = 5 * (fahr-32) / 9;
printf("fahr=%d, celsius=%d\n", fahr, celsius); }
2.2.1 格式化输出函数printf()
格式:printf(“格式控制串”,输出参数表) printf( "%d" , ccoouunntt);
2.2 格式化输入输出
/*•程前序2面-3例:中温的度转程换序*运/ 行后只能输出华氏温度100F对应 #inc的lu摄d氏e <温s度td,io为.h提>高程序的通用性,要求程序运行 int m后a等in待(v键o盘id)输入一个华氏温度(整数),程序输出 { 其对应的摄氏温度。
int celsius, fahr;
Africa
123
9/12/2003
整型
非整型
Jackie Chan
数值
The quick brown fox 非数值 999
9数00据2属.1于2 不同类别
TRUE
为什么要设计不同的数据类型?
适合的才是最好的
比如房子,若所有商品房都设计成500平米的别墅怎么样?显 然,很多人买不起也不需要这么大的面积,所以根据需要有了 不同房型。
2.1.1 内存
内存可以理解为一排井然有序的小开关,每个开关 有两个状态:开表示1,断表示0,所以每个开关表 示一个二进制数,0或1,称为一个位(bit). 为管理方便,8个位为一组,称为一个字节(byte) 然后为所有字节编号,这个编号称为字节的地址。 每台计算机都安装了一定数量的内存,内存通常以 MB为单位。
变量
内存
37 100
程序 将100存入 fahr
计算5 * (fahr - 32) / 9
编写程序时,通常使用变量
来存储数据,方便后面使用 这个数据或者修改这个数据。
将值存入celsius 输出fahr和celsius
2.1.3 数据类型
基本数据类型
整型:int 、long int、short int 浮点型 float、double 字符型 char 2.175
存储器按其用途可分为主存(内存)和辅存(外存)。
内存是CPU能直接寻址的存储空间,由半导体器件制成。 内存的特点是存取速率快(相对于外存而言)。
我们平常使用的程序,如Windows操作系统、游戏软件 等虽然是安装在硬盘等外存上的,但必须把它们调入 内存中运行,才能真正使用其功能。(外存和内存, 就好比在书房里的书架和书桌)。
课堂练习:输出整数幂
已知m=11,n=41,输出m和n的2次方、3次方和 4次方,要求每个数据占8列,左对齐。
效果如下: 121 1331 14641 1681 68921 2825761
2.2.2 scanf() 函数
scanf 函数从标准输入(键盘)读取信息,按照格 式描述把读入的信息转换为指定数据类型的数据 ,并把这些数据赋给指定的内存区域中。
fahr = celsius
1=005;*(fahr-/3*2为)/变9量; /f执 :*ah计r行赋算值程表1达0序0式*的/的输值赋出给结ce果lsiu为s */
printf(“fahr=%d, celsius=%fadh\rn=“1,0f0ah, rc,eclesliusisu=s3);7
return 0;
long 与 short
int,long int(简写为 long),short int(简写为 short)的 宽度都可能随编译器而异。但都遵循以下原则: short int 类型 的宽度 不大于 int类型的宽度 int 类型 的宽度 不大于long int类型的宽度 short int至少应为16位(2字节) long int至少应为32位。
sum = a + b; a = 3; b = 5; printf("%d\n",sum);
sum = a + b; 实际上,执行sum=a+b时,因为a 和b中的值都不确定,是垃圾值 ,所以其和也是垃圾值,然后把 这个垃圾值赋给了sum。
retu赋rn 值0; 运算会改变赋值号左边的变量的值,既不 } 表示数学中的等量代换,也不表示相等关系
– 改变变量的值:将赋值表达式的值存入左侧的变量
分析错误程序
/*程序2-2:整数的和*/ 该程序为何得不到正确结果? #include<stdio.h>
int main(void)
错误原因是受数学思维的影响,
{ int a, b, sum;
应改为: a误之b ==以间35为的;;一su个m=a等+b量;是 关建系立sum和a+b
第2章 简单C程序设计
授课人:朱会东
2019年5月29日星期三
1
本章要点
1 C语言数据类型、运算符 2 C语言的常量和变量 3 C语言的表达式 544 格式化输入、输出函数 554 常用数学函数
2.1.1 内存
2.1 内存与变量
存储器是计算机中一个很重要的部分,用来存储程序 和数据。计算机有了存储器,才有记忆功能,才能保证 正常工作。
1B=8bit 1KB=1024B 1MB=1024KB 1GB=1024MB
温度转换
例2-1 求华氏温度100F对应的摄氏温度
/*程序2-1:温度转换*/ #include <stdio.h>
int main(void) {
int celsius, fahr; /* 定义int类型变量celsius和fahr */
printf()函数的多项输出
printf("fahr=%d , celsius=%d\n", fahr, celsius);
普通字符,原样输出
输出参数列表
%开头的是转换说明,对应与后面一个 输出参数,对应参数将被转换成指定格 式后在该位置输出
‘\n’是转义字符,用来输出一个回车
输出结果: fahr=100, celsius=37
将一些信息按照指定的格式送到标准输出(显示器) 格式字符串:指定数据的输出格式
输出参数表:待输出的数据,可以是常量、变量或表 达式
格式控制串
printf(“hello world\n");
输出结果:hello world
int a = 3, b = 5; printf(“两个数的和是%d\n“, a + b); 输出结果:两个数的和是8
2.1.5 赋值运算
• 赋值运算符 =
• 赋值表达式:用 = 将一个变量和一个表达式连接 起来的式子
变量 = 表达式 例如:
fahr = 100;
= 的左边必须是一个变量, 称为“左值”
celsius = 5 * (fahr - 32) / 9;
– 计算赋值表达式的值:赋值表达式的值由右侧表达式的 值决定
无符号整数类型(unsigned) 无符号整数表示正数或零,不带符号位,所有位全部用 来表示数值,最大16 位无符号整数是65535(即216-1)。 而最大的32 位无符号整数是4 294 967 295(即232-1)。
整数类型
2.1.4 变量的声明和使用
声明变量格式:<变量类型 > <变量名字> int celsius, fcelsius, fahr; /* 定义int类型变量celsius和fahr */ celsius = 5 * (fahr - 32) / 9; /*将表达式的值赋给celsius */
变量标识计算机里一块特定的内存,它由一个或多 个连续的字节组成。 每个变量都有一个名称,标识内存中的这个位置, 以便通过变量名读取该位置的数据或存储一个新数值。 变量的值不是固定的,随时都可以改变,且次数不 限。
整数类型
为了处理不同范围的整数,除了基本整型int 以外,
C 语言提供了扩展的整数类型——int 之前加上限定词
short、long 或unsigned。
可组合得到以下6种整数类型: 整型 int 短整型 short int 长整型 long int 无符号整型 unsigned int 无符号短整型 unsigned short int 无符号长整型 unsigned long int
printf()函数的第一项是一个有双引号括起来的字 符序列,指定数据的输出格式 ,称为格式控制串, 由普通字符和格式字符组成。
普通字符会原样输出
格式转换说明符%d
int n = 150; printf ("%d" , n);
输出结果:150 int a = 3, b = 5; printf(“两个数的和是%d\n“, a + b); 输出结果:两个数的和是8
用scanf()读入整型数据 内存
int num;
num
scanf("%d", &num);
• 在内存中分配一块 32 位存储空间 • 存储空间使用名称“num”标识
• 等待用户输入一个值 • 将输入的值按十进制整数来理解,然后内存中(因
同样道理,计算整数a+b,若和带小数的数使用同样的存储和 运算方法显然有点浪费。
抽取出事物具有的普遍性本质,忽略非本质的细节。
加C语法以言的整引方数入法a类+各b型不为系相例统同,的,不意而同义高的:级计语算言机则有把不整同数的相硬关件运系算统a,+b实、现ab1、、a不*b同等类抽型象的出数来据,的编存程储者方只式管不使同用a+b即可,不必关心最终 程 了2、序实不运现同行a+类在b进型什行的么了数机多据器少可上次以、开参在关与机操的器作运内等算部。不是同如何表示的、CPU为 3、所不以同无类论型设的计数什据么对计同算一机种语运言算,的都实会现抽方象法出不整同型,运如算整、数浮加 点法运和算实、数字加符法运算等,这是对底层操作的抽象。
%d 将对应参数转换为十进制整数形式输出, 对应参数应是int 类型
指定整数的输出宽度
%md:数据以十进制整数格式输出,宽度占m列, 数据不足m列右对齐(左补空格),超过m列按
实际位数输出。 int salary = 5500; printf ("“%%1100dd“" , salary);
输出结果:
5500
输出结果的左边显示了 6 个空格
指定整数的对齐方式
%-md:将指定数据以十进制整数格式输出,宽度 占m列,数据不足m列左对齐(右补空格) ,超
过m列按实际位数输出。 int salary = 5500; printf (""%%-1100dd"" , salary);
输出结果:5500
输出结果的右边显示了 6 个空格
• 定义时初始化变量: int celsius, fahr = 100;
• 定义后为变量赋值: fahr = 100; 。
• 给变量赋值,除了给一个直接的值以外,还可以 通过计算获得: celsius = 5*(fahr-32)/9;
变量的命名规则
–变量名可以由字母、数字和 _(下划线)组合而成; –变量名必须以字母或 _(下划线)开头; – C 语言中的某些词(例如 int 和 float 等)称为 保留字,具有特殊意义,不能用作变量名 – C 语言区分大小写,因此变量 a 与变量 A 是两个不同的变量
scanf(“%d”,&a);
变量的名称
&符号(作用在某个变量上)用于指明变量在内 存中的位置
转换字符串
scanf() 函数的格式
scanf(格式控制字符串,内存地址1,内存地址2,…,内存地址n)
scanf(“%d”,&a);
(1)%d为格式转换符,每个格式转换符对应后面 一个内存地址。 (2)scanf将读入数据,按指定格式理解该输入, 然后存入对应内存地址。
相关文档
最新文档