程 序 设 计 基 础
--- C语言与程序设计主讲:袁宁计算机软件教研室邮箱地址,ise_yuann@ujn.edu.cn
课程安排课 程总课时,64学时教学方式,理论 (42学时 ),实践 (20学时 ),机动( 2学时)
考核方式,考试 (70%)+考勤和平时作业 +上机实验 (30%)
课程学分,4
先修课程,,计算机应用基础,
第一章 C程序基础
1.1 C语言程序的基本结构
1.2 C程序运行过程
1.3 编写简单的 C语言程序
1.4 C语言基本语法成分
1.5 C语言数据类型
1.6 数据的输入与输出
1.7 算法
1.8 C语言的产生、发展及特点高级语言编译系统?操作系统 (Operating System),
OS是各种软件的核心与基础功能,cpu管理、存储管理、文件管理设备管理、作业管理等常用的 OS,MS-DOS,Windows,Unix,Linux
操作系统用户源程序
裸机,由计算机的各种硬件组成
CPU,主板、内存、硬盘、声卡、
显卡、网卡、光驱、电源、机箱、
显示器、键盘、鼠标、音响 等
C语言的支持环境裸机
编译系统和高级语言环境
用户源程序引 言
1.1 C语言程序的基本结构
1.1.1 认识 C语言程序例 1-1 在屏幕上输出一行信息
#include <stdio.h>
void main( )
{
printf(" This is a C program! \n ");
}
文件包含命令,其 功能是将头文件 stdio.h的内容包含到用户当前的源程序中。
每个 C程序必须有主函数 main。 main是函数名,main后的 圆括号 不能省略,void是一种数据类型,说明该函数没有返回值。
printf是标准输出函数,因为要调用它所以前面必须加
#include <stdio.h> 命令。 printf函数的作用是 将双引号中的内容输出到显示器屏幕上,其中 \n是换行符,它使光标跳到下一行行首程序演示
1.1 C语言程序的基本结构
#include<conio.h>
void main( )
{ clrscr( );
gotoxy(20,10);
textcolor(15);
textbackground(4);
cprintf("I am glad to see you!");
getch( );
}
例 1-2 在屏幕的指定位置输出一行有颜色的信息程序演示
/*文件包含命令,主函数的调用的库函数都定义在 conio.h这个头文件中 */
// 清屏函数,将屏幕上原来显示的内容都清除掉
// 光标定位函数
// 设置文本颜色函数,文本设为白色
// 设置文本背景颜色函数,背景设为红色
// 输出文本函数
/*该函数的作用是读入一个从键盘输入的字符,
但不显示该字符,使用它可以方便用户查看输出结果,用户按任意键时返回编辑环境 */
1.1 C语言程序的基本结构
#include <stdio.h>
void main( )
{ int x,y,a,b;
x=5;
y=3;
a=x+y;
b=x-y;
printf("a=%d\n",a);
printf("b=%d\n",b);
}
输出结果:
a=8
b=2
例 1-3 求两数之和与两数之差这是 4个赋值语句,x=5;的作用是将 5赋给变量 x,
即变量 x的值变为 5; a=x+y;的作用是将 x,y变量的值相加,再将结果赋值给变量 a
/*变量声明,声明了 4个整数类型的变量,
C语言的变量必须先声明再使用 */
/*双引号中的 a= 是原样输出的,
%d为格式控制符,在这个位置将对应输出 整型变量 a的数值 */
程序演示
1.1 C语言程序的基本结构例 1-4 输入两个数,求两数中较大的数并输出
#include <stdio.h>
void main( )
{ int a,b,c;
scanf("%d%d",&a,&b);
if (a>b) c=a;
else c=b;
printf("max=%d",c);
}
scanf是标准输入函数,%d表示输入十进制整数,&a表示变量 a的存储地址,这个函数可以实现从键盘输入 2个整数分别送给变量 a和 b。
这是 if语句,它的作用是先判断 a是否大于
b,如果 a大于 b,则将 a的值赋给变量 c,否则 (即 a小于等于 b)将 b的值赋给变量 c
如果输入,8 3↙
则输出,max=8
如果输入,5 7↙
则输出,max=7 程序演示
1.1 C语言程序的基本结构
#include <stdio.h>
int max(int x,int y);
void main( )
{ int a,b,c;
scanf("%d%d",&a,&b);
c=max(a,b);
printf("max=%d\n",c);
}
int max(int x,int y)
{ int z;
if (x>y) z=x;
else z=y;
return(z);
}
例 1-5 用函数实现例 1-4的功能
/* 这个程序由 2个函数组成,一个是 main
函数,一个是用户自己定义的 max函数 */
这是 函数声明,它的作用是告诉编译系统该程序要使用一个 max函数
/* 调用 max函数,求出 a和 b中较大的数,
然后将结果赋值给变量 c*/
/*max函数的定义,max前的 int表示该函数最后会返回一个整数值,max后括号中定义了 2个整型参数 x和 y,参数的作用是在函数调用时传递数据 */
// 将计算结果返回 (返回到 main中调用 max的位置 )
1.1 C语言程序的基本结构
1.1.2 C语言程序的基本结构编译预处理命令函数声明部分 //声明用户自己定义的函数
void main ( ) //主函数的定义
{
声明部分 // 包括变量的声明和函数的声明执行部分 // 主要是 C语句
}
其他函数定义 // 可能有多个函数定义
{
声明部分执行部分
}
包括文件包含 (#include),宏定义 (#define),条件编译命令 (#ifdef…#else…#endif )
1.1 C语言程序的基本结构
1,函数是 C程序的基本单位
① 一个 C源程序一般由一个主函数和若干其他函数构成,
注意一个 C程序必须包含且只能包含一个 main函数 。
② C程序从 main函数开始执行,调用其他函数后再返回到
main 函数。 main函数可以调用其他函数,其他函数之间也可以互相调用,注意其他函数不能调用 main函数
③ C函数分为 标准函数 和 用户自定义函数 两种形式在调用标准函数时,要注意加文件包含命令用户自定义函数是用户根据程序需要,自己编写的函数
C程序结构的简要说明,
1.1 C语言程序的基本结构
C程序结构的简要说明,
2,函数的基本结构
int max(int x,int y)
{ int z;
if (x>y) z=x;
else z=y;
return(z);
}
函数首部函数体
① 函数首部定义格式,
返回值类型 函数名 (参数列表 )
② 函数体函数首部下面用一对 { }括起来的部分。
函数体一般包括声明部分和执行部分。
声明部分,定义本函数中所使用的变量 。
执行部分,由若干条语句组成 。
1.1 C语言程序的基本结构
1.1.3 C语言的语句
1,控制语句 ( 9种 ),完成一定的控制功能
if ( ) ~ else ~ 条件语句 ( 双分支选择语句 )
switch 多分支选择语句
for ( ) ~
while ( ) ~ 循环语句
do ~ while ( )
continue 结束本次循环语句
break 中止语句
goto 转向语句
return 从函数返回语句
1.1 C语言程序的基本结构
2,函数调用语句,由一个函数调用加一个分号构成例,printf(" This is a C program! \n ");
scanf("%d%d",&a,&b);
3,表达式语句,由表达式加分号构成例,x=5 (赋值表达式 ) 加 ;? x=5; (赋值表达式语句 )
变量赋值,变量=表达式
(1) = 是赋值运算符 (又称赋值号 )
(2) 表达式包括,常量,变量,函数,
其他合法的 C语言表达式
(3) 赋值运算符为 右结合性,先计算赋值号右边的表达式的值,再将值赋给左边的变量例,
int x,y,z,a,b,c;
x=5; y=3;
z=x;
a=abs(y-x);
b=x+y;
c=b=a;?先算 b=a; 再算 c=b;
1.1 C语言程序的基本结构变量赋值的特点,
① 变量必须先定义,后使用。
② 变量被赋值前,值是不确定的。
③ 对变量的赋值过程是“覆盖”过程,即用新值去替换旧值。
例,int x,y;
x=6; y=23;
z=y-x; 出错 ! 因为没有定义变量 z
例,int i;
while(i<8)
{ printf(“******\n”); i++; }
例,int x;
x=1; x=x+1; 随机数 x12
i没有赋值,这时变量 i具有随机值,
可能很大超过 8,也有可能是负数
1.1 C语言程序的基本结构
4,空语句,仅由一个分号构成,它什么也不做
5,复合语句,用 { } 括起来的语句序列例,if ( x>y )
{ int temp ;
temp = x ;
x = y ;
y = temp ;
}
注意,
1,复合语句是一个整体,相当于一个语句
2,一个复合语句中可以包含其他复合语句
3,在复合语句的花括号后不要加分号
4,复合语句中可定义变量,但此变量只在该复合语句内有效
1.2 C程序运行过程
1.2.1 程序的有关概念
程序,程序是一组计算机可以识别和执行的指令,
每一条指令使计算机执行特定的操作。
源程序,用高级语言或汇编语言编写的程序称为源程序。
源程序不能直接在计算机上执行,需要经过,编译,
将其翻译为二进制形式的代码。
目标程序,源程序经过“编译”所得到的二进制代码为目标程序。
其扩展名为,.OBJ”。 目标代码尽管已经是机器指令,但是还不能运行,因为它还没有解决函数调用问题。可执行程序,目标程序与库函数进行连接,形成完整的可在操作系统下独立执行的程序称为可执行程序。
其扩展名为,,EXE”
1.2 C程序运行过程
①编辑,将源程序输入到计算机中,并 将源程序 保存 在磁盘文件中
(注意 BC环境下的扩展名为,cpp)
②编译,将源程序翻译成二进制的目标代码,同时对源程序进行语法检查,如果有错误则修改源程序,然后再编译,反复该过程直到没有错误位置 (注意将正确的源程序再保存一遍 )
③连接,将各模块的二进制目标代码与系统标准模块连接处理后,
得到一个可执行文件 (*,exe文件 )
④执行,运行可执行文件,检查结果是否正确,如果有错误则应修改源程序,再重复以上步骤,直至程序运行正确编辑 编译 连接 执行输入源程序 输出结果f.cpp f.obj f.exe
1.2.2 C程序的运行步骤
1.3 编写简单的 C语言程序例 1-6 a瓶装酱油,b瓶装醋,请将酱油和醋进行交换,
即 a瓶装醋,b瓶装酱油方法,拿一个空瓶 c,先将 a瓶中的酱油倒入 c瓶,再将
b瓶中的醋倒入 a瓶,最后将 c瓶中的酱油倒入 b瓶编程思路,a,b,c瓶可以认为是 3个变量,酱油和醋假设用整数表示,用整数 8表示酱油,5表示醋,a瓶的酱油倒入 c瓶可以认为是将变量 a的值赋给变量 c
#include <stdio.h>
void main( )
{ int a=8,b=5,c;
c=a;
a=b;
b=c;
printf(“a=%d,b=%d \n”,a,b);
}
程序演示
1.3 编写简单的 C语言程序
#include <stdio.h>
void main( )
{ int a,b,c; float ave; //变量定义
scanf(“%d%d%d”,&a,&b,&c); //输入 3个整数
ave=(a+b+c)/3.0; //计算平均值,并将结果赋值给 ave
printf(“ave=%f”,ave); //输出平均值
}
例 1-7 求任意三个整数的平均值编程思路,
首先要有 3个整数,这 3个数可以用 a,b,c 3个整型变量存放
其次平均值应该用一个变量保存,该变量应该是实数类型
求任意 3个整数的平均值,所以这 3个数应该从键盘输入
计算平均值,(a+b+c)/3.0,因为 C语言中两个整数相除得到的结果也是整数 (去掉小数部分 ),为保证结果正确必须用实数 3.0
程序演示
1.3 编写简单的 C语言程序例 1-8 计算圆柱体的表面积 半径 r

h
计算公式如下,
s=s1+2*s2 // s表示圆柱体的表面积
s1=2*π*r*h // s1表示侧面积
s2=π*r*r // s2表示底面积编程思路,
首先要定义几个变量,应该定义 r,h,s (s1和 s2可以不定义 )
其次 r和 h应该具有数据,才能进行计算,因此先输入 r和 h
π怎么处理? 定义一个符号常量,令其值为 3.1415926
按公式计算,s= 2*π*r*h+2*π*r*r
输出结果
#include<stdio.h>
#define PI 3.1415926 // 定义一个符号常量 PI
void main( )
{ float r,h,s; // 定义 3个实数类型的变量
printf(“input r,h:\n”); // 提示用户输入 r,h
scanf(“%f%f,,&r,&h); // 输入 r,h
s=2*PI*r*h+2*PI*r*r; // 计算表面积
printf(“Total area is %.2f\n”,s); // 输出表面积
} 程序演示
1.4 C语言基本语法
1,C语言字符集字符是 C语言最基本的元素,C语言字符集由字母、
数字、空白、标点符号和特殊字符组成
C程序是用下列字符所组成的字符集写成的:
(1)字母,A--Z,a--z
(2)数字,0 -- 9
(3)标点符号、特殊字符 (28个 ),! # % ^ & + - *
/ = ~ > < \ |,,;,? ' " ( ) [ ] { }
(4)空白符,空格,制表符 (Tab跳格健 ),换行符的总称。
空白符除了在字符、字符串中有意义外,在程序中只起间隔作用,编译系统会忽略其它位置的空白符。
1.4 C语言基本语法
2,标识符标识符是给程序中的实体所起的名字
标识符的命名规则
① 以字母或下划线开头,由字母,数字和下划线组成的字符序列
② 标识符不能与 C语言的 关键字 重名
③ 建议用户定义标识符时尽量不用下划线开头
④ 注意标识符的有效长度 在 bc31中有效长度为 31个字符
⑤ 标识符中区分大,小写字母 如,sum 和 SUM 是不同的标识符
定义标识符应遵循的原则
① 尽量做到见名知义
② 一般习惯上变量名、函数名用小写,而符号常量用大写
③ 应尽量避免使用容易认错的字符 如,数字 1和小写字母 l
变量,常量,函数,数组,类型
1.4 C语言基本语法
3、关键字关键字是 C语言预先定义的、具有特定意义的标识符,
也称为保留字。 C语言包括 32个关键字,
auto break case char const continue
default do double else enum extern
float for goto if int long
register return short signed sizeof static
struct switch typedef union unsigned void
volatile while
注意,C语言的关键字都是小写,不能重新定义关键字
1.4 C语言基本语法
4、运算符运算符是用于描述某种运算功能的符号,如 + - * / 等,运算符可以由一个或多个字符组成 。 根据参与运算的操作数个数,可分为,单目 (一元 )运算符,双目 (二元 )运算符和三目 (三元 )运算符
逗号运算符,,
指针和地址运算符,* &
求字节运算符,sizeof
分量运算符,,->
下标运算符,[ ]
强制类型转换运算符,(类型 )
其他,如函数调用运算符 ( )
C语言运算符分为以下几类:
算术运算符,+ - * / %
关系运算符,< <= > >= == !=
逻辑运算符,! && ||
位运算符,<< >> ~ | ^ &
赋值运算符,= += -= *= 等
条件运算符 (三目 ),?,
1.4 C语言基本语法
5、分隔符在 c语言程序中,空格,逗号,回车 /换行等,在不同的应用场合起着分隔符的作用 。
例如,int x,y ; 中的空格和逗号都起着分隔符的作用,
如果没有空格程序就会出错,少了逗号 xy就会被认为是一个变量。
6、其他符号花括号 { }通常用于标识函数体或一个复合语句。
/*……*/ 构成一组注释符。编译时系统将忽略注释。
(1) 注释在程序中起提示、解释作用。
(2) 在程序调试过程中使用注释可以暂时屏蔽一些语句。
1.5 C语言数据类型在 c语言中,每个数据都属于一个确定的数据类型。不同的数据类型在数据表示形式、取值范围、占用内存空间大小、可参与的运算种类等方面都有所不同。
数据类型基本类型构造类型指针类型空类型 (void)
数值类型字符类型 (char)
枚举类型 (enum)
数组类型结构体类型 (struct)
共用体类型 (union)
文件类型 (FILE)
整型实型短整型 (short)
整型 (int)
长整型 (long)
单精度型 (float)
双精度型 (double)
1.5 C语言数据类型
#include <stdio.h>
#define PI 3.14
void main( )
{ int r;
float c,s,v;
r=3;
c=2*PI*r;
s=PI*r*r;
printf(“%f,%f”,c,s);
}
例 1-9,计算圆的周长和面积什么是常量和符号常量?
什么是变量、怎样进行变量声明?
什么是整型数据、实型数据?
整型常量、变量、
实型变量的使用?
如何使用 printf输出函数?
程序演示
1.5 C语言数据类型
常量,在程序执行期间值不发生变化的量
1、直接常量,15,2.4,‘ f?,“asd”
#include <stdio.h>
#define PI 3.14
void main( )
{ int r;
float c,s,v;
r=3;
c=2*PI*r;
s=PI*r*r;
printf(“%f,%f”,c,s);
}
2、符号常量,
在程序中用标识符代表的常数定义符号常量的格式,
#define 标识符 常数
3、使用符号常量的优点
(1) 含义清楚
(2) 修改方便
3.14159
1.5 C语言数据类型
1,变量的声明格式:
数据类型 变量名列表 ;
如,int r;
float c,s,v;
3
r
变量名变量值存储空间说明,
① 进行变量声明后,计算机系统会为声明的变量分配存储空间,用以存放数据,
② 变量的存储空间可能由一个或多个字节组成,内存中的每个字节都有自己的地址,变量名实际上是一个符号地址,
在程序中对变量的赋值和取值操作实际上是通过变量名找到相应的内存地址,然后从对应的存储空间中读取数据
变量,在程序执行期间值可以变化的量
1.5 C语言数据类型
1.5.1整型数据
1、整型常量的表示方法
(1) 十进制整数 56,-23,0
(2) 八进制整数 以零开头 034,012
(3) 十六进制整数 以 0x开头 0x28,0x1fa9
十进制 1 2 3 4 5 6 7 8
八进制 1 2 3 4 5 6 7 10
十六进制 1 2 3 4 5 6 7 8
二进制 0001 0010 0011 0100 0101 0110 0111 1000
十进制 9 10 11 12 13 14 15 16
八进制 11 12 13 14 15 16 17 20
十六进制 9 A B C D E F 10
二进制 1001 1010 1011 1100 1101 1110 1111 10000
1.5 C语言数据类型例 1-10,
#include <stdio.h>
void main( )
{ int x,y,z;
x=10; y=010; z=0x10;
printf(“x=%d,y=%d,z=%d\n”,x,y,z);
printf(“x=%d,y=%o,z=%x\n”,x,y,z);
y=017; z=0x2b;
printf(“y=%d,z=%d\n”,y,z);
printf(“y=%o,z=%x\n”,y,z);
}
输出结果:
x=10,y=8,z=16
x=10,y=10,z=10
y=15,z=43
y=17,z=2b
%o按八进制形式输出数据
%x按十六进制形式输出数据程序演示
1.5 C语言数据类型
2、整型变量在内存的存放形式数据在内存中以二进制形式存放,一个整型变量在内存中占用
2个字节,每个字节有 8个比特 (比特只能取 0或 1)
例,int x=10; 0000 0000 0000 1010
说明,内存中存放的实际是数据的补码正数的补码为其二进制形式 ;
负数的补码是将该负数绝对值的二进制形式 按位取反再加 1
例,int x=-10; 0000 0000 0000 1010
1111 1111 1111 0101
1111 1111 1111 0110
x的存放形式,
10的二进制形式,
-10在内存中的存放形式,
取反
+1
1.5 C语言数据类型
3、整型变量的分类有符号基本整型 [ signed ] int
无符号基本整型 unsigned int
有符号短整型 [ signed ] short [ int ]
无符号短整型 unsigned short [ int ]
有符号长整型 [ signed ] long [ int ]
无符号长整型 unsigned long [ int ]
说明,[ ]括起来的为可选项,说明变量时可以省略不写例,int x,y;
short a,b;
unsigned long m;
1.5 C语言数据类型
(1) 带符号整数,存储时最高位表示符号,0为正,1为负
①正数的补码为其二进制数
(计算 214+213+……+2 2+21+20=16384+8192+……+4+2+1=32767)
0000 0000 0000 1001如,9?
int型的 正数最大值为 32767? 0111 1111 1111 1111
②负数的补码,用二进制表示其绝对值,然后按位取反,再加 1
1000 0000 0000 0000
1111 1111 1111 1111由二进制补码求十进制负数,
补码先减 1,再按位取反,
将二进制数化为 十进制数,
最后加上负号
1111 1111 1111 1110
0000 0000 0000 0001 -1
int型的负数的最小值为 –32768?
1.5 C语言数据类型
(2) 无符号整数,最高位与其他位一起表示数值,只能存放正数它与同样长度带符号整数相比,所能表示的正数值扩大一倍范围是,0000 0000 0000 0000 ---- 1111 1111 1111 1111
即 0 ---- 65535 (215+214+……+2 1+20)
4、整型数据的溢出例,int a,b,c;
a=32767;
b=a+1;
c=b+3;
0111 1111 1111 1111a 32767
1000 0000 0000 0000b -32768
1000 0000 0000 0011c -32765
+1
+11
0 32767-32768
1.5 C语言数据类型
1,实型常量的表示方法小数形式,2.4,-9.6,3.,.75
指数形式,3.14e0,31.4E –1
2、实型数据在内存中的存放形式一个实型数据 (float型 )在内存中占 4个字节,实型数据按指数形式存储,系统把实型数据分成小数部分和指数部分。
常用的 C编译系统多用 1位表示符号,用 8位表示指数部分,
用 23位表示小数部分
1.5.2 实型数据符号位 指数部分 小数部分
1.5 C语言数据类型
3、实型变量的分类单精度 float
双精度 double
长双精度 long double
4、实型数据的舍入误差由于不同类型的实型数据在计算机中有效数字的位数不同,
有时不能精确表示某个实数,只能近似表示,所以应避免将一个很大的数和一个很小的数直接相加减。
例,#include <stdio.h>
void main( )
{ float x,y;
x=123456.789e5;
y=x+20;
printf("x=%f,y=%f\n",x,y);
}
我们认为 x=12345678900.00
但因为有效数字位数的原因计算机上输出的是,
x=12345678848.000000
y=12345678848.000000
1.5 C语言数据类型例 1-11,对字母进行简单的加密
#include <stdio.h>
void main( )
{ char a,b,c;
a=?B?;
scanf(“%c”,&b);
c=getchar( );
printf(“%c%c%c\n”,a,b,c);
a=a+5; b=b+5; c=c+5;
putchar(a);
putchar(b);
putchar(c);
putchar(?\n?);
}
什么是字符型数据?
如何使用 scanf输入函数?
字符输入函数?
字符数据可以和整数作运算吗?
字符输出函数?
输入,IG↙
输出,
BIG
GNL
如何使用 printf输出函数?
1.5 C语言数据类型
1,字符常量,用单引号括起来的 一个 字符如,‘ s?,?*?,?6?
说明,1,‘ a? 和 ‘ A?是两个 不同的字符
2,单引号内不能是单引号或反斜杠
3,转义字符 如,‘ \n?,?\\? 表示反斜杠,‘ \’’ 表示单引号2,字符变量例,char a,b,c;
a=?g?; b=?$? ; c=?6?;
3,字符数据在内存中的存储形式及使用方法
(1)字符数据在内存中以相应的 ASCII码存放,占 1个字节如:字符‘ A?,其 ASCII码为 65,内存中存放为
0 1 0 0 0 0 0 1
1.5.3 字符型数据
1.5 C语言数据类型
(2) 字符数据和整数在一定范围内互相通用
#include <stdio.h>
void main( )
{ char ch;
ch=?a?;
printf(“%c\n”,ch);
printf(“%d\n”,ch);
} 输出,
a
97
#include <stdio.h>
void main( )
{ char ch;
int x;
ch=?A?;
x=ch+32;
printf(“x=%d,ch=%c\n”,x,ch);
printf(“%c\n”,x);
}
输出,
x=97,ch=A
a
② 字符数据与整数进行算术运算① 字符数据用整数形式输出
1.5 C语言数据类型
4、字符串常量,由一对双引号括起来的字符序列如,,abcd”,,w123”,“k”,,”
\0
k \0
,” 空串占 1个字节
,k” 占 2个字节注意,‘ k?与,k”是不同的
‘ k? 是字符常量,在内存中占 1个字节,
,k” 是字符串常量,在内存中占 2个字节字符串常数在存储时计算机系统会自动在字符串末尾加一个结束标志 ‘ \0’,因此字符串的实际长度为字符个数加 1
1.6 数据的输入输出一,printf函数格式,
printf ( 格式控制,输出表列 ) ;
如,printf(“%f,%f”,c,s);
printf(“x=%d,y=%d,z=%d\n”,x,y,z);
1、格式控制,用,” 括起来的字符串,包括如下两个部分
(1) 普通字符 ( 包括转义字符 ),需要原样输出的字符如,printf(“x=%d,y=%d,z=%d\n”,x,y,z);(2) 格式说明,由 %和格式字符及附加格式说明字符组成
% - 0 m.n l 格式字符其作用是将输出数据按指定的格式输出
C语言的输入 /输出均由函数来实现,在使用输入输出函数时,
应在程序开头写预编译命令,#include <stdio.h>
1.6 数据的输入输出
① 格式字符,指定输出项的数据类型和输出格式
② 长度修正符,输出长整型和 double型必须加 l
③ 域宽及精度描述符 m.n ( m控制域宽,n 控制小数位数 )
④ 数 0用以在指定数字前的空位是否用 0填补 (对整型,实型可用 )
⑤ 负号用以指定输出项是否为左对齐方式
% - 0 m.n l 格式字符例 3,float x=6.85;
printf(“x=%f\n”,x);
printf(“x=%4.2f\n”,x);
printf(“x=%8.4f\n”,x);
printf(“x=%08.4f\n”,x);
printf(“x=%-8.4f\n”,x);
输出结果:
x=6.850000
x=6.85
x=□□ 6.8500
x=006.8500
x=6.8500 □□
1.6 数据的输入输出
2,输出表列,输出项可以是常量,变量,表达式例,int x=8,y=-2;
printf(“%d\n”,25);
printf(“x=%d\n”,x);
printf(“x*y=%d\n”,x*y);
printf(“|y|=%d\n”,fabs(y) );
输出结果:
25
x=8
x*y=-12
|y|=2
1.6 数据的输入输出二,scanf函数的格式
scanf ( 格式控制,变量地址表列 ) ;
1、格式控制
(1) 格式说明 % * m l 格式字符
① m 用以指定输入数据的宽度
② * 是赋值抑制符,表示相应的输入数据不赋给对应变量例,int a,b;
scanf(“%d%3d”,&a,&b);
printf(“a=%d,b=%d\n”,a,b);
若输入,45 3896 ↙
则输出,a=45,b=389
例,int x,y;
scanf(“%f%4f”,&x,&y);
printf(“x=%f,y=%f\n”,x,y);
若输入,3.4 8.962 ↙
则输出,
a=3.400000,b=8.960000
1.6 数据的输入输出例,char m,n;
scanf(“%3c%c”,&m,&n);
printf(“m=%c,n=%c\n”,m,n);
若输入,abcde ↙
则输出,m=a,n=d
例,int a,b;
scanf(“%d%*d%d”,&a,&b);
printf(“a=%d,b=%d\n”,a,b);
若输入,45 38 96 ↙
则输出,a=45,b=96
(2) 格式控制中的其他字符,输入数据时要输入与其相同的字符如 scanf(“a=%d,b=%d”,&a,&b) ;
则输入必须是,a=12,b=45 ↙
2、变量地址表列,由变量地址组成变量地址是在变量名前加地址运算符,&”得到例 int x ; &x 将给出变量 x所占内存空间的首地址
1.6 数据的输入输出
2、输入数据时,遇到以下情况时输入结束
(1) 遇到空格,或“回车”键,“跳格”键时结束
(2) 按指定输入宽度结束如 scanf(“%d%3d%2d”,&x,&y,&z) ;
输入,25 1867490↙ x 为 25,y 为 186,z 为 74
(3) 遇到非法输入时结束如 scanf(“%d%d”,&x,&y ) ;
输入,25,3↙ x 为 25,y 无正确数据 ( 因遇逗号而出错 )
二,注意问题
1、用 %c输入字符时,空格和转义字符都会作为有效字符输入如 scanf(“%c%c”,&ch1,&ch2) ;
输入,A B ↙ 则 ch 1为字符 A,ch2为空格三,字符输出函数 ( putchar函数 )
格式,putchar(参数 )
功能,将参数对应的字符输出到显示器上,参数可以是字符型或整型的常量和 变量例,#include <stdio.h>
void main( )
{ char a=?B?,b,c;
b=?O?;
putchar(a);
putchar(b);
putchar(?Y?);
}
输出,
BOY
注意,
putchar函数只能有一个参数
1.6 数据的输入输出四,字符输入函数( getchar函数)
格式,getchar( ) ( 注意它是无参函数 )
功能,从键盘输入一个字符例,#include <stdio.h>
void main( )
{ char ch;
ch=getchar( );
putchar(ch);
putchar(?\n?);
putchar(getchar( )) ;
printf(“*\n”);
}
输入,ABC↙
输出,
A
B*
注意,一般要连续输入可显示字符若中间有空格、回车等字符在输出时是不可见的输入,A BC↙
输出,
A
*
输出空格符
1.6 数据的输入输出
1.7 算法
1.7.1 算法的概念及特性
1、算法的概念广义上讲,算法就是为解决一个问题而采取的方法和步骤。
对同一个问题可能有不同的解决方法和步骤,
即不同的算法为了快速有效的解决问题,在保证算法正确的基础上,还要考虑算法的质量,选择较优的算法。(方法 简单,运算步骤少,运算快,
内存开销小的算法 )
1.7 算法数据结构 +算法 =程序对数据的描述 对操作的描述
2、计算机算法的分类:
(1)数值运算算法 ---- 用于求数值解,如求解一个多元方程
(2)非数值运算算法 ---- 多用于管理领域,如图书管理著名计算机科学家沃思提出的一个公式:
1.7 算法
有穷性:一个算法包含有限的操作步骤
确定性:算法中的每一个步骤是确定的,
含义是唯一的
有零个或多个输入
有一个或多个输出
有效性:算法中每一个步骤应能有效运行
3、算法的五大特性
1.7 算法
1.7.2 算法的表示方法常用的算法表示方法:自然语言,流程图,N-S图、
伪代码、程序语言等。
1、流程图表示法用图框表示各种操作,用箭头表示算法流程优点,直观形象,易于理解例,用流程图表示求两个数的和开始
X?2
Y?3
Z?x+y
结束输出 z
1.7 算法
C语言是一种结构化程序设计语言,结构化程序设计主要采用自上而下、逐步细化的方法。结构化程序有三种基本结构:
①顺序结构 ②选择结构 ③循环结构
A
B
P
A B
成立 不成立不成立
A
P 成立
A
P 成立不成立
“当型”循环
“直到型”循环
1.7 算法
2,N-S流程图表示法
A
B A B成立 不成立
P
A
当 P成立直到 P不成立
A
①顺序结构 ②选择结构 ③循环结构
“当型”循环
“直到型”循环
1.8 C语言的产生、发展及特点
1.8.1 C语言的产生及发展
ALGOL60 → CPL → BCPC → B → C → 标准 C →
ANSI C → ISO C
常见的 C语言版本有:
Borland公司:
Turbo C,Turbo C++,Borland C++,C++ Builder
Microsoft公司:
Microsoft C,Visual C++
1.8 C语言的产生、发展及特点
1.8.2 C语言的特点
1,C语言的语言成分简洁、紧凑、书写形式自由。
2,C语言拥有丰富的数据类型。
3,C语言的运算符丰富、功能更强大。
4,C语言是结构化程序设计语言。
5,C语言对语法限制不严格,程序设计灵活。
6,C语言编写的程序具有良好的可移植性。
7,C语言可以实现汇编语言的大部分功能。
8,C语言编译后生成的目标代码小,质量高,程序的执行效率高。