第三章 顺序程序设计

3.2 数据的表现形式及其运算

常量和变量

1.常量

  1. 整型常量
  2. 实型常量
    ①十进制小数形式,由数字和小数点组成。
    ②指数形式,如12.34e3(代表12.34×10³),-34.56e-25(代表-34.56×10⁻²⁵)注意:e或E之前必须有数字,且e或E后面必须为整数。
  3. 字符常量
    ①普通字符,用单撇号括起来的一个字符,如:‘a’,‘Z’,‘3’,’?’,’#’。注意:字符常量只能是一个字符,不包括单撇号。
    ②转义字符,以字符“\”开头的字符序列。例如,’\n’表示换行。
  4. 字符串常量
    如"boy","123"等。单撇号内只能包含一个字符,双撇号内可以包含一个字符串。
  5. 符号常量。用#define指令,指定用一个符号名称代表一个常量。如:
#define PI 3.1416  //注意行末没有分号

使用符号常量的好处:
①含义清楚。看程序时从PI就可大致知道它代表圆周率。在定义符号常量时应考虑“见名知义”。
②在需要改变程序中多处用到的同一个常量时,能做到“一改全改”。

注意:要区分符号常量和变量,不要把符号常量误认为变量。==符号常量不占内存,==只是一个临时符号,代表一个值,在预编译后这个符号就不存在了,故不能对符号常量赋新值。为与变量名相区别,习惯上符号常量用大写表示,如PI,PRICE等。

2.变量
变量必须先定义,后使用。 在定义时指定该变量的名字和类型。变量名实际上是以一个名字代表的一个存储地址。变量值是存放在变量名的内存单元中的数据。如:

int a=3;  //a是变量名,3是变量值

3.常变量
C99允许使用常变量,方法是在定义变量时,前面加一个关键字const,如:

const int a=3;
//定义a为一个整型变量,其值为3
//且在变量存在期间其值不能改变

常变量与常量的异同是:常变量具有常量的基本属性:有类型,占存储单元,只是不允许改变其值。 可以说,常变量是有名字的不变量,而常量是没有名字的不变量。有名字就便于在程序中被引用。

4.标识符
C语言规定标识符只能由字母、数字和下划线3种字符组成,且第一个字符不能是数字。

数据类型
在这里插入图片描述
整型数据

整型数据的分类
⑴基本整型(int 型)
编译系统分配给int型数据2个字节或4个字节(由具体的C编译系统自行决定)。在存储单元中的存储方式是:用整型的补码形式存放。一个正数的补码是此数的二进制形式。求负数的补码的方式是:先将此数的绝对值写成二进制形式,然后对其所有二进制位按位取反,再加1。在存放整数的存储单元中,最左面一位是用来表示符号的。0正1负。
⑵短整型(short int 或 short)
Visual C++编译系统分配给int数据4个字节,短整型2个字节。存储方式与int型相同。
⑶长整型(long int 或 long)
Visual C++分配给long型数据4个字节。
⑷双长整型(long long int 或 long long)
一般分配8个字节。这是C99新增的类型,但许多C编译系统尚未实现。

说明:C标准没有具体规定各种类型数据所占用存储单元的长度,这是由个各编译系统自行决定的。C标准只要求long型数据长度不短于int型,short型不长于int型。

整型变量的符号属性

有符号基本整型  [signed]int
无符号基本整型  unsigned int
有符号短整型  [signed] short [int]
无符号短整型  unsigned short [int]
有符号长整型  [signed] long [int]
无符号长整型  unsigned long[int]
有符号双长整型  [signed] long long [int]
无符号双长整型  unsigned long long [int]
//以上有"*"的是C99增加的,方括号表示其中的内容可有可无。
//如果既未指定为signed也未指定为unsigned的,默认为"有符号类型”。

有符号整型数据存储单元中最高位代表数值的符号(0为正,1为负)。无符号型变量只能存放不带符号的整数,而不能存放负数。由于左面最高位不再用来表示符号而用来表示数值,因此无符号整型变量中可以存放的正数的范围比一般整型变量中正数的范围扩大一倍。

说明:
⑴只有整型(包括字符型)数据可以加signed或unsigned修饰符,实型数据不能加。
⑵对无符号整型数据用“%u”格式输出。

字符型数据
由于字符是按其代码(整数)形式存储的,因此C99把字符型数据作为整数类型的一种。

  1. 字符与字符代码
    ASCII字符集包括了127个字符。在C语言中,指定用一个字节(8位)存储一个字符(所有系统都不例外)。此时字节中的第1位置为0。

注意:字符’1’和数字1是不同的概念。字符’1’只是代表一个形状为’1’的符号,在需要时按原样输出,在内存中以ASCII码形式存储,占1个字节;而整数1是以整数存储方式(二进制补码方式)存储的,占2个或4个字节。

  1. 字符变量
char c='?';
//可以把0~127之间的整数赋给一个字符变量c

在输出字符变量的值时,可以选择以十进制整数形式输出,或以字符形式输出。如:

printf("%d %c\n",c,c);
//输出结果是
63 ?

浮点型数据
浮点型数据是用来表示具有小数点的实数的。在C语言中,实数是以指数形式存放在存储单元中的。
⑴float型(单精度浮点型)
编译系统为每一个float型变量分配4个字节,可以得到6位有效数字。
⑵double型(双精度浮点型)
用8个字节存储一个double型数据,可以得到15位有效数字。为了提高运算精度,在C语言中进行浮点数的算术运算时,将float型数据都自动转换为double型,然后进行运算。
⑶long double型(长双精度)
Visual C++对long double型和double型一样处理,分配8个字节。Turbo C对long double型分配16个字节,可以得到19位有效数字。

怎样确定常数的类型

  1. 字符常量:单撇号括起来的单个字符或转译字符。
  2. 整型常量:不带小数点的数值。
  3. 浮点型常量:凡以小数形式或指数形式出现的实数均是浮点型常量,在内存中都以指数形式存储。C编译系统把浮点型常量都按双经度处理,分配8个字节。

3.3 运算符和表达式

算术运算符

  1. 单目运算符:正号运算符+ 负号运算符-
  2. 常用运算符:+ - * / %
    %运算符要求参加运算的运算对象(即操作数)为整数,结果也是整数。 除%以外的运算符的操作数都可以是任何算术类型。
  3. 自增(++)自减(- -)运算符
int i=3;
printf("%d",i);  //i=3
printf("%d",i++);  //i++=3,i=4
printf("%d",i);  //i=4
printf("%d",++i);  //++i=5,i=5

运算符的优先性与结合性 (见书)
在这里插入图片描述

不同类型数据间的混合运算
⑴凡有float或double型都转换成double型,然后进行运算,结果是double型。
⑵字符(char)型数据与整型数据进行运算,就是把字符的ASCII代码与整型数据进行运算。

强制类型转换运算符

(double)a  //将a转换成double型
(int)(x+y)   //将x+y的值转换成int型
(float)(5%3)  //将5%3的值转换成float型

注意:表达式应该用括号括起来

(int)x+y  //将x转换成整型,然后与y相加

说明:在强制类型转换时,得到一个所需类型的中间数据,而原来变量的类型未发生变化。

(int)x%3  //强制类型转换运算优先于%运算
/*因此先进行(int)x的运算,
得到一个整型的中间变量,
然后再对3求余。*/

3.4 C语句

C语句的分类(5类)

  1. 控制语句(C语言只有9种控制语句)
    ①if( )…else… (条件语句)
    ②for( )… (循环语句)
    ③while( )… (循环语句)
    ④do…while( ) (循环语句)
    ⑤continue (结束本次循环语句)
    ⑥break (中止执行switch或循环语句)
    ⑦switch (多分支选择语句)
    ⑧return (从函数返回语句)
    ⑨goto (转向语句,结构化程序基本不用)
  2. 函数调用语句:一个函数调用+一个分号
  3. 表达式语句:一个表达式+一个分号
  4. 空语句:只有一个分号
  5. 复合语句:用{ }把一些语句和声明括起来成为复合语句(又称语句块)。复合语句常用在if语句或循环中。

最基本的语句——赋值语句

1.赋值运算符
“=”的作用是将一个数据或表达式的值赋给一个变量。
2.复合的赋值运算符 +=,-=,*=,/=,%=
a+=b等价于a=a+b
注意:如果b是包含若干项的表达式,则相当于它有括号。
3.赋值表达式
其作用是将一个表达式的值赋给一个变量。
变量可以作为左值,凡是左值都可作为右值。
4.赋值表达式和赋值语句
赋值表达式的末尾没有分号,赋值语句的末尾必须有分号。在一个表达式中可以包含一个或多个赋值表达式,但绝不能包含赋值语句。
5.变量赋初值
①用赋值语句对变量赋值
②在定义变量时对变量赋初值
③对被定义的变量的一部分赋初值

int a,b,c=5;

④对几个变量赋予同一个初值

int a=3,b=3,c=3;
//不能写成int a=b=c=3;

3.5 数据的输入输出

有关数据输入输出的概念

  1. 输入输出是以计算机主机为主体而言的。
  2. C语言本身不提供输入输出语句,输入和输出操作是由C标准函数库中的函数来实现的。 C语言函数库中有一批标准输入输出函数,其中有putchar(输出字符)、getchar(输入字符)、printf(格式输出)、scanf(格式输入)、puts(输出字符串)和gets(输入字符串)。
  3. 要在程序文件的开头用预处理指令#include把有关头文件放在本程序中。如:#include <stdio.h>

用printf函数输出数据

1.printf函数的一般格式为
printf(格式控制,输出表列)
括号内包含两部分:
⑴"格式控制"是用双撇号括起来的一个字符串,称为格式控制字符串,简称格式字符串。它包括两个信息:
①格式声明。格式声明由“%”和格式字符组成,如%d、%f等。它的作用是将输出的数据转换为指定的格式后输出。
②普通字符。普通字符即需要在输出时原样输出的字符,例如printf函数中双撇号内的逗号空格和换号符,也可以包括其他字符。
⑵输出表列是程序需要输出的一些数据,可以是常量、变量或表达式

2.格式字符

  1. d格式符。用来输出一个有符号的十进制整数,正数的符号不输出。可以在格式声明中指定输出数据的域宽(所占的列数),如用"%5d"指定输出数据占5列,输出的数据显示在此5列区域的右侧。"%ld"输出long(长整型)数据,"%lld"输出long long(双长整型)。
  2. c格式符。用来输出一个字符,也可以指定域宽,例如"%5c"。一个整数也可用"%c"按字符形式输出,如果整数较大,则把它的最后一个字节的信息以字符形式输出。
  3. s格式符。用来输出一个字符串。
  4. f格式符。用来输出实数(包括单、双精度、长双精度),以小数形式输出。
    ①基本型,用%f。系统处理方法一般是:实数中的整数部分全部输出,小数部分输出6位。
    指定数据宽度和小数位数,用%m.nf。
    ③输出的数据向左对齐,用%-m.nf。
    注意:**在用%f输出时要注意数据本身能提供的有效数字,**如float型数据的存储单元只能保证6位有效数字。double型数据能保证15位有效数据。不要以为计算机输出的所有数字都是绝对精确的。
  5. e/E格式符。用格式声明%e指定以指数形式输出实数。可用"%m.ne"指定输出数据所占的宽度和数字部分的小数位数。不指定的话,许多C编译系统会自动给出数字部分的小数位数为6位,指数部分占5列(如e+002,e占1列,指数符号占1列,指数占3列)。数值按标准化指数形式输出即小数点前必须有而且只有1位非零数字。例如:
printf("%e",123.456);
//输出如下:
1.234560e+002
  1. 其他格式符。
    ①i格式符。作用与d格式符相同,少用。
    ②o格式符。以八进制整数形式输出,输出的数值不带符号。
    ③x格式符。以16进制数形式输出整数。同样可以用"%lx"输出长整型数,也可指定输出字段的宽度,如"%12x"。
    ④u格式符。用来输出无符号(unsigned)型数据,以十进制整数形式输出。
    ⑤g格式符。用来输出浮点数,系统自动选f格式或e格式输出,选择其中长度较短的格式,不输出无意义的0。
    在这里插入图片描述
    说明:
    ⑴除了X,E,G外,其他格式字符必须用小写字母。
    ⑵如果想输出字符"%",用连续两个"%"表示。
printf("%f%%\n",1.0/3);
//输出:
0.333333%

用scanf函数输入数据

1.scanf函数的一般形式
scanf(格式控制,地址表列)
"格式控制"的含义同printf函数。"地址表列"是由若干个地址组成的表列,可以是变量的地址,或字符串的首地址。

2.scanf函数中的格式声明
在这里插入图片描述
在这里插入图片描述
3.使用scanf函数时应注意的问题
⑴变量地址要有取地址符"&"
⑵严格按" "内的格式输入字符。
在用"%c"格式声明输入字符时,空格字符和"转义字符"中的字符都作为有效字符输入。 例如:

scanf("%c%c%c",&c1,&c2,&c3);
//应该连续输入3个字符,中间不要有空格。如:
abc

在这里插入图片描述

字符输入输出函数

1.用putchar函数输出一个字符
函数是输出字符的函数,它输出的是字符而不能输出整数。
说明:putchar©中的c可以是字符常量、整型常量、字符变量或整型变量(其值在字符的ASCII代码范围内)。putchar函数可以输出转义字符。

2.用getchar函数输入一个字符
getchar函数只能接收一个字符,如果想输入多个字符就要用多个getchar函数。
注意:连续输入字符后按Enter键,否则会把回车也作为一个字符输入。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 头歌c语言顺序结构程序设计第一关涉及到使用C语言进行编程,其要求我们设计一个程序,让用户输入两个整,然后计算它们的和并输出结果。这个题目看上去非常简单,但是对于刚接触编程的人来说也是一个不错的练手题目。 为了完成这个题目,我们需要先学会C语言的基本输入输出函。在本题,我们可以使用scanf函来获取用户输入的两个整使用printf函计算出的结果打印出来。同时,我们需要了解如何进行基本的加法运算。 但是,为了让程序更具结构化和可读性,我们还需要考虑一些细节,比如如何给变量取名、如何采用恰当的缩进和注释等等。我们还可以使用一些简单的技巧,比如在代码前面添加头文件、定义常量等等,来让整个程序看起来更规范、更好维护。 当我们完成这个程序时,我们会发现它在功能上非常简洁明了,但是它也让我们对C语言基础语法有了更深入的理解和实践。实际上,这种从简单入手的方法也是学习编程最好的方式之一,因为它可以帮助我们尽快开始编程,增强自己的自信心和兴趣,从而更好地掌握编程技能。 ### 回答2: 头歌c语言顺序结构程序设计第一关,主要考察学生对C语言编程基础和顺序结构的掌握能力,让学生能够编写出简单的C语言程序。 在这个关卡,要求学生按照题目要求,通过C语言顺序结构编写程序实现两个的加减乘除运算。学生需要定义两个变量用于存储输入的两个值,然后根据运算符的不同,分别进行加减乘除的运算,最终输出运算结果。此过程,学生需要注意数据类型转换的问题,以及需要对除为0的情况进行特殊处理。 此关卡虽然简单,但对于学生来说也是一个很好的练手机会,通过编写简单的程序,提高了学生编程的思维能力和代码的实现能力,为以后更高深的程序设计打下基础。同时,此关卡也鼓励学生探索更多丰富多彩的程序设计内容,将所学知识发挥到极致,提高自身的综合素质。 ### 回答3: 头歌C语言顺序结构程序设计第一关是一道通过编写C语言程序实现简单输出功能的练习。在开始编程之前,首先需要了解C语言的基本语法以及顺序结构。 C语言是一种广泛应用的编程语言,具有灵活、高效、可移植等优点。在编写C语言程序时,需要使用各种数据类型、运算符、控制结构等基本概念。其顺序结构是一种简单的程序控制结构,指代码会按照事先确定的顺序依次执行。 在头歌C语言顺序结构程序设计第一关,我们需要按照要求定义所需输出的变量类型、名称,并利用C语言的printf函将变量的值输出到控制台上。具体步骤如下: 首先,我们需要在程序的开始部分定义所需输出的变量类型,使用C语言的关键字“int”“char”等来定义。例如,定义一个输出整的变量可以使用“int num”的形式。 其次,我们需要为所需输出的变量赋值,使用“=”赋值符号将具体值赋给定义好的变量。例如,“num = 123”。 然后,我们需要使用printf函来将变量的值输出到控制台上。该函的语法形式为:“printf(“输出格式字符串”, 参1, 参2, …)”。其,输出格式字符串是指输出的格式,如“%d”表示输出整,“%s”表示输出字符串等。其余的参即为需要输出的变量名,需要与格式字符串对应。 最后,在程序的结尾部分我们需要加上return 0语句来结束程序。这条语句通常在main函的最后面,函返回值为0表示程序正常结束。 总之,头歌C语言顺序结构程序设计第一关是一项简单的程序练习,需要我们掌握C语言的基本语法和顺序结构的使用,通过编写程序实现简单的输出功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值