三、C语言顺序结构程序设计

一、对C语言的初步认识
二、C语言基本数据类型、操作符和表达式
三、C语言顺序结构程序设计
四、C语言选择结构程序设计
五、C语言循环结构程序设计
六、C语言位运算
七、C语言数组与字符串
八、C语言指针
九、C语言中的函数
十、C语言中数据和存储类型
十一、C语言中的用户定义数据类型
十二、C语言中编译预处理命令

一、算术运算符

1、基本的算术运算符:
(1)+ (加法运算符,或正值运算符)
如:3+5+3

(2)- (减法运算符,或负值运算符)
如:5-2-3

(3)* (乘法运算符)
如:3*5

(4)/ (除法运算符)
如:5/3

(5)% (模运算符,或称求余运算符,%两侧均应为整型数据)
如:7%4的值为3

需要说明,两个整数相除的结果为整数
—— 例如:5/3 的结果值为1,舍去小数部分

如果除数或被除数中有一个为负值,则舍入的方向是不固定的
——例如:-5/3在有的机器上得到结果-1,有的机器则给出结果-2

多数C编译器采取“向零取整”的方法
——例如:5/3=1-5/3=-1

用算术运算符和括号将运算对象(也称操作数)连接起来的、符合C语法规则的式子,称C算术表达式。

运算对象包括常量、变量、函数等。
——例如:a*b/c-1.5+'a'

在算术运算符中除了“%”要求整数外,其余可以是任意数据类型

自增、自减运算符

  • 作用是使变量的值增1或减1,即:
    ++j; 等效于:j=j+1;
    j++; 等效于:j=j+1;
    --j;等效于:j=j-1;
    j--; 等效于:j=j-1;

  • ++jj++--jj--的区别:
    ++j:在使用j之前,先使j的值加(减)1;
    j++:在使用j之后,使j的值加(减)1

例如:int i=3;	/* i:3 */
	a=i++;		/* i:4	a:3 */
	b=++i;		/* i:5	b:5 */
运算结果:
a=3
b=5
i=5

使用自增、自减运算符注意事项

(1)自增运算符(++)和自减运算符(–),只能用于变量,而不能用于常量或表达式。
例如:5++;(a+b)++; 都是不合法的

(2)++和–的结合方向是“自右至左”

例如:
	int i=3;
	a=-i++;
结果:	a=-3
  • 为了避免错误,易阅读,最好把上面的表达式这样写:
a = -(i++);

(3)ANSI C并没有具体规定表达式中的子表达式的求值顺序。允许各编译系统自己安排。

例如:设i的初值为3,有表达式:
	(i++)+(i++)+(i++)
  • 有的系统按照自左而右顺序求解括弧内的运算,结果为3+4+5,即12。
  • 而另一些系统(如turbo c和MS C)设i的原值为3,那么作为表达式中所有i的值,因此3个i相加,得9。然后再实现自家3次,i的值变为6。
  • 如果编程者的原意是想得到12,可以写成下列语句:
i=3;	a=i++;	b=i++;	c=i++;	d=a+b+c;

(4)C语言中有的运算符为一个字符,有的运算符由两个字符组成,在表达式中如何组合呢?

例如:
i+++j
是理解为(i++)+j呢?还是i+(++j)呢?
为避免误解,最好写成(i+++j的形式。
如果没按,则视为(i++)+j

(5)调用函数时,实参数的求值顺序,C标准并无统一规定。

例如:i的初值为3,如果有下面的函数调用:
	printf("%d,%d",i,i++)
——在有的系统中,从左至右求值,输出:3,3
——在另一种系统中,从右至左求值,输出:4,4
  • 以上这种写法不宜提倡,应改写成:
j=i++;
printf("%d,%d",j,i);
  • 这样可以避免系统的差异性

2、赋值运算符与赋值表达式

  • 赋值运算表示形式:
    <变量>=<表达式>;

赋值是指将表达式的值赋给一个变量。

例如:
	x=5*2+8;x=18;
	v=volume(x,y,z);
  • 由赋值运算符将一个变量和一个表达式连接起来的式子称为“赋值表达式”。
  • 赋值表达式可以嵌套
	x=(y=(z=100));
相当于:x=100;	y=100;	z=100;
  • 自动将右边表达式的数据类型转换成左边变量的类型。

3、自反(复合赋值)运算符

  • 复合赋值运算符:在赋值符“=”之前加上某些运算符,即“op=”
  • 操作符与赋值运算符一起构成的符合运算符有:
+=-=*=/=%=<<=>>=&=|=^=
  • 复合赋值运算符可以构成赋值表达式
    三、C语言顺序结构程序设计_第1张图片
    符合赋值运算符中应注意的问题
  • 如果右边是表达式,必须作为整体考虑。否则结果不正确。
例如:
a=5;	b=10;	a*=a+b;

正确理解:a=a*(a+b)=a2+ab=75
不正确的理解:a=a*a+b=a2+b=35

注意:
设:	x=20;
		x*=10+2;x=?
等效于:x=x*(10+2)
  • 算术运算符优先级高于算术赋值运算符

多个符合赋值运算符表达式的运算顺序

  • 多个符合赋值运算符构成的表达式按自右而左的结合顺序执行
  • 构成复合赋值运算符表达式举例:
    三、C语言顺序结构程序设计_第2张图片
    三、C语言顺序结构程序设计_第3张图片
    带值计算过程
  • 如果a的初值为12,赋值表达式如:
a+=a-=a*a
  • 此赋值表达式的求解步骤如下:
1、先进行“a-=a*a”的运算
相当于:
a=a-a*a=12-144=-132
2、再进行“a+=-132”的运算
相当于:
a=a+(-132)=-132-132=-264

赋值表达式可以出现在其他语句

  • 赋值表达式作为表达式的一种,使赋值操作不仅可以出现在赋值语句中,而且可以以表达式形式出现在其他语句(如输出语句、循环语句等)中
例如:
	printf("%d",a=b);

如果b的值为3,则输出a的值(也是表达式a=b的值)为3

例如:
	if((a=b)>0	max=a;	//a=b赋值表达式
	if((a=b;)>0	max=a;	//a=b;赋值语句,语法错

三、字符输出函数putchar()

  • 有关输入输出概念
    (1)所谓输入输出是以计算机主机而言的。从计算机向外部输出设备(如显示屏、打印机、磁盘等)输出数据称为“输出”;从外部向输入设备(如键盘、磁盘、光盘、扫描仪等)输入数据称为“输入”
    (2)C语言本身不提供输入输出语句,输入和输出操作是由函数来实现的。在C标准函数库中提供了一些输入输出函数,例如,printf函数和scanf函数
    (3)在使用C语言函数时,要用预编译命令“#include”将有关的“头文件”包括到用户源文件中。如在调用标准输入输出库函数时,文件开头应有以下预编译命令:
#include
  • 最基本的输入输出函数有:
printf()	(格式输出)
scanf()		(格式输入)
putchar()	(字符输出)
getchar()	(字符输入)
  • 注意:在调用上述基本库函数时,应在程序开始处包含标准输入输出头文件,即:
		#include#include "stdio.h"
  • 区分:
    <>:直接按标准目录搜索
    “”:先在当前目录搜索,再搜索标准目录

1、putchar函数

  • putchar函数的作用——是向终端输出一个字符。

  • 格式:putchar(字符或字符变量);
    三、C语言顺序结构程序设计_第4张图片
    运行结果:boy

  • putchar函数既可以输出能在屏幕上显示的字符;也可以输出控制字符;
    ——如:putchar('\n') (输出一个换行符)

  • 还可以输出其他转义字符,如:

putchar('\101')		(输出字符'a')
putchar('\'')		(输出单引号字符')
putchar('\015')		(输出回车)

2、getchar函数

  • getchar是从终端(或系统隐含指定的输入设备)输入一个字符。
  • 函数格式:int getchar(void);
  • 说明:没有参数,返回获取到的字符的ASCII
例如:输入单个字符
#include
int main()
{
	char c;
	c=getchar();
	putchar(c);
}
  • getchar()只能接收一个字符
  • getchar函数得到的字符可以赋给一个字符变量或整形变量,也可以不付给任何变量,作为表达式的一部分
  • 例如:putchar(getchar());

3、printf()函数的一般格式:
printf(格式控制,输出表列);

  • printf()函数的功能:输出一个或多个任意类型的数据
  • 参数说明:
    (1)“格式控制”:是用双引号括起来的字符串,也称“转换控制字符串”,它包括两种信息:
    1)、格式声明,由“%”和格式字符组成。它的作用是将输出的数据转换为指定的格式输出
    2)、普通字符,即需要原样输出的字符。例如上面printf函数中双引号内的字符、逗号、空格和换行符等。
    (2)“输出表列”:是需要输出的一些数据,可以是表达式
    三、C语言顺序结构程序设计_第5张图片
    三、C语言顺序结构程序设计_第6张图片
例如:字符数据的输出:(Cpp6.cpp)
int main()
{
	char c='a';
	int i=97;
	printf("%c,%d\n",c,c);
	printf("%c,%d\n",i,i);
}
运行结果为:
a,97
a,97
  • 可以指定输出字数宽度,“%mc”
  • 例如(Cpp5.cpp)
main()
{
	char a='x',b='y';
	char c='w';
	printf("\nc=%3c\n",c);
	printf("\na=%8c\n,b=%-8c\n",a,b);
}

输出结果:
三、C语言顺序结构程序设计_第7张图片

三、C语言顺序结构程序设计_第8张图片
三、C语言顺序结构程序设计_第9张图片
三、C语言顺序结构程序设计_第10张图片
三、C语言顺序结构程序设计_第11张图片

例子:
#include
main()
{
	float s=1.0;
	double a=1.0;
	printf("\n基本型:\n%f,%f\n",s/3,a/3);
	printf("\n宽度和小数位数控制:\n%10.2f,%15.12f\n",s/3,a/3);
	printf("\n左对齐控制:\n%-10.2f,%-15.7f\n",s/3,a/3);
	return 0;
}

三、C语言顺序结构程序设计_第12张图片
三、C语言顺序结构程序设计_第13张图片
三、C语言顺序结构程序设计_第14张图片
三、C语言顺序结构程序设计_第15张图片
三、C语言顺序结构程序设计_第16张图片
三、C语言顺序结构程序设计_第17张图片
三、C语言顺序结构程序设计_第18张图片
在这里插入图片描述
三、C语言顺序结构程序设计_第19张图片
三、C语言顺序结构程序设计_第20张图片
三、C语言顺序结构程序设计_第21张图片
三、C语言顺序结构程序设计_第22张图片
三、C语言顺序结构程序设计_第23张图片
三、C语言顺序结构程序设计_第24张图片
三、C语言顺序结构程序设计_第25张图片
三、C语言顺序结构程序设计_第26张图片
三、C语言顺序结构程序设计_第27张图片
三、C语言顺序结构程序设计_第28张图片
三、C语言顺序结构程序设计_第29张图片
三、C语言顺序结构程序设计_第30张图片
三、C语言顺序结构程序设计_第31张图片
三、C语言顺序结构程序设计_第32张图片
三、C语言顺序结构程序设计_第33张图片
顺序结构程序设计
三、C语言顺序结构程序设计_第34张图片
三、C语言顺序结构程序设计_第35张图片
三、C语言顺序结构程序设计_第36张图片
三、C语言顺序结构程序设计_第37张图片
三、C语言顺序结构程序设计_第38张图片

你可能感兴趣的:(C语言,编程语言,c++,c语言)