可同时省略
switch语句的执行过程是:首先计算switch后面圆括号内表达式的值,若此值等于某个case后面的常量表达式的值,则转向该case后面的语句去执行;若表达式的值不等于任何case后面的常量表达式的值, 则转向default后面的语句去执行,如果没有default部分,则将不执行switch语句中的任何语句,而直接转到switch语句后面的语句去执行。 说明:
(1) switch后面圆括号内的表达式的值和case后面的常量表达式的值,都必须是整型的或字符型的,不允许是浮点型的。
(2)同一个switch语句中 的所有case后面的常量表达式的值都必须互不相同。
(3) switch语句中的case和default的出现次序是任意的,也就是说default也可以位于case的前面,且case的次序也不要求按常量表达式的大小顺序排列。
(4)由于switch语句中的“case常量表达式”部分只起标号的作用,而不进行条件判断,所以,在执行完某个case后的语句后,将自动转到该语句后面的语句去执行,直到遇到switch语句的右花括号或“break”语句为此,而不再进行条件判断。
所以在执行完一个case分支后,一般应跳出switch语句,转到下一条语句执行,这样可在一个case的结束后,下一个case开始前,插入一个break语句,一但执行到braek语句,将立即跳出switch
语句,如: 如: Switch(n) {
case 1: x=1; case 2: x=2; }
当n=1时,将连续执行下面两个语句 : X=1; X=2; 如: Switch(n) { case 1; x=1; Braek; Case 2; X=2 Braek }
(5)每个case的后面即可以是一个句号,也可以是多个语句,当是多个语句的时候,也不需要用花括号括起来。 (6)多个case的后面可以共用一组执行语句,如: Switch(n); {
Case 1: Case 2: x=10; braet ┆ }
它表示当n=1或n=2时,都执行下列两个语句: X=10; Braek;
例4.5 从键盘输入一个月份(1~12),并显示该月份的英文名称
#include”stdio.h” Main( ) { int month;
scanf(“%d”,&month); switch(month)
{ case 1:printf(“January”); braek;
case 2:printf(“February”); braek; case 3:printf(“March”); braek; case 4:printf(“April”); braek; case 5:printf(“May”); braek; case 6:printf(“June”); braek; case 7:printf(“July”); braek; case 8:printf(“August”); braek;
case 9:printf(“September”); braek;
case 10:printf(“October”); braek;
case 11:printf(“November”); braek;
case 12:printf(“Decmeber”); braek;
Default:printf(“Data Error!”); Break; } }
4.4 应用举例
例4.6 输入一个数值,求出它的平方根,若为负数时,求出它的复数平方根。 #include “stdio.h” #include “math.h” main( ) { int n; float root;
printf(“enter a number:\\t”); scanf(“%d”,&n); if(n>=0);
{ root=sqrt(n);printf(“sqrt(%d)=%f”,n,root); } else {
root=sqrt(abs(n));
第一讲 C语言概述 1.1 C语言发展概述
C语言是在1972年至1973年间由美国的贝尔实验室的M.D.Ritchie和K.Thompson以及英国剑桥大学的M.Richards等为描述和实现UNIX操作系统而设计的。
最初的C语言是附属于UNIX的操作系统环境,而它的产生却可以更好地描述UNIX操作系统。时至今日,C语言已独立于UNIX操作系统。它已成为微型、小型、中型、大型和超大型(巨型)计算机通用的一种程序设计语言。
随着C语言的不断发展、应用和普及,目前,C语言已经能够在多种操作系统下运行,实用的C语言编译系统种类繁多,如Microsoft C、Turbo C等。 1.2 C语言的特点
C语言能够成为目前广泛的高级设计语言之一,完全是由其语言特点决定的。
(1)语言基本组成部分紧凑简洁。 (2)C语言运算符丰富,表达能力强。 (3)C语言数据结构丰富,结构化好。 (4)具有结构化的控制语句。
(5)C语言提供了某些接近汇编语言的功能。 (6)C语言程序所生成的目标代码质量高。 (7)C语言程序可移植性好。
C语言的弱点:
(1)运算符的优先级较复杂,不容易记忆
(2)C语言的语法限制不太严格,一定程度上降低了某些安全性。 1.3 简单的C语言程序。 1.3.1 C语言程序的构成 1.3.2 C语言程序的特点
(1)C程序是由函数构成的,其中至少包括一个函数main( )。 (2)函数体是由左右花括号{ }括起来的部分。 (3)C语言中的每个基本语句都以“;”结束。
(4)C语言书写格式自由,一行内可以写一个语句,也可以写多个语句。
(5)#include语句是编译预处理语句,其作用是将由双引号或尖括号括起来的文件内容读入该语句位置处。 对程序说明:
(1)可用/*?*/对C程序中的任何部分作注释。
(2)C语言中所有变量都必须先定义类型,然后再使用。 (3)一个C语言程序通过函数之间的相互调用来实现相应的功能。即可以是系统提供的库函数,也可以是根据需要自己定义的函数。 1.4 C语言上机步骤
运行环境:DOC操作系统下的Turbo C 1.4.1 C程序上机步骤
1.编辑:在TurboC环境下。将C语言源程序通过键盘输入到计算机
中,并以文件形式存盘,源程序都是以.C为扩展名。
2.编译:通过编辑程序将源程序输入到计算机后,需要经过C语言编译器将其生成目标程序。得到的目标文件都是以.OBJ为文件扩展名。 3.连接:经过编译后生成的目标文件需经过连接后才能生成可执行代码。其扩展名是.EXE。
所谓连接,是将目标文件和库函数或其他目标程序连接成可执行的目标程序。
4.执行:连接后源程序的目标程序就是可执行文件了。在DOS系统下,只要键入可执行文件名,按回车键就可以了。 1.4.2 Turbo C系统菜单 1.Turbo C的主屏幕和主菜单功能 2.文件菜单及功能 1.4.3 程序调试方法
一个计算机程序必须对其进行测试来确定其可以正确地工作,这一过程称为调试。 程序错误
语法错误:通过编译和连接就会找到 运行错误:通过调试自己找出问题所在 1.设置和使用观察变量 2.单步执行程序 3. 设置和使用断点
2.1 常量和变量 2.2 整型数据 2.3 字符型数据 2.4 浮点型数据 2.5 变量的初始化 第二章 数据类型与表达式 2.1 常量和变量
2.1.1 常量:在程序运行过程中其值不能被改变的量。 2.1.2 变量:在程序运行过程中其值可以被改变的量。
标识符:用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列。 1.标识符的有关规定:
(1)由英文字母、数字、下划线组成,且第一个字符必须是字母或下划线,一般不超过8个字符; (2)大小写字母的含义不同。
(3)不能使用C语言中的关键字做标识符,
(4)用户取名时,应当尽量遵循“简洁明了”和见名知意的原则。 2.变量名的有关规定:
(1)使用变量名前,一定先定认,后使用,否则不能做为变量名。 (2)每一个变量属于一种类型,便于在编译时据此检查该变量所进行的运算是否合法。
(3)变量名的定义:存储属性、数据类型、变量名表 3.数据类型 2.2 整型数据 2.2.1整型常量
(1)十进制整数:数码直接开头的十进制数。如1234,-234。 (2)八进制整数:以0开头的常量是八进制数。如011=(11)8 (3)十六进制整数:以0x开头的数是十六进制。如0x123即(123)16
例2.1 三种进制表示方法的转换 源程序a1.c main() {
Int x=1246,y=01246,z=0x1246; Printf(“%d,%d,%d\\n”,x,y,z); Printf(“%o,%o,%o\\n”,x,y,z); Printf(“%x,%x,%x\\n”,x,y,z); } C:\\>a1 1246,678,4678 2336,1246,11106 4de,2a6,1246 2.2.2整型变量
else if(score>59) grade=‘3’; else grade=‘2’; 说明:
(1)if语句中的表达式可以是C语言的合法表达式。
(2)第二种、第三种格式的if语句中,在每个else前面有一个分号,整个语句结束处也有一个分号。这是由于分号是C语句中不可缺少的部分,这个分号是if语句中的内嵌语句所要求的。
(3)在if和else后面可以只含有一个内嵌的操作语句,也可以含有多个操作语句,此时应用花括号“{ }“将几个语句括起来,构成一个复合语句。
例4.1 将两个数中较大者赋给 s。 main() { int a,b,s; a=10;b=20; if(a>b) s=a; else s=b;
printf(“s=%d\\n”,s); }
执行结果: s=20
例4.2 比较两个数,按由大到小输出。
main( ) {
int a,b,x,y; a = 10; b = 20;
if (a>b) {x=a;y=b;} else {x=b;y=a;}
printf(“x=%d,y=%d\\n”,x,y); }
执行结果: x=20,y=10 4.2.2 if语句的嵌套
在if 语句中又包含一个或多个if语句,称为if语句的嵌套。一般形式如下: if( )
if( ) 〈语句1〉 else 〈语句2〉 else
if( ) 〈语句3〉 else 〈语句4〉 if( )
if( ) 〈语句1〉
else
if( ) 〈语句2〉 else 〈语句3〉 说明:
(1)if与else的配对关系,从最内层开始,else总是与离它最近的未曾配对的if配对。
(2)if与else的个数最好相同,从内层到外层一一对应,以避免出错。
(3)如果if与else的个数不相同,可以用花括号来确定配对关系。例如: If ( )
{if( )〈语句1〉} else
〈语句2〉
这时{ }限定了内嵌if 语句的范围,因此else与第一个if配对。 例4.3 有一函数
编一程序,输入一个x值,输出y 值。 main( ) { int x,y;
scanf(“%d”,&x);
if(x<0) y=-1; else if(x==0) y=0; else y=1;
printf(“x=%d,y=%d\\n”,x,y);} 4.2.3 条件运算符
如果if语句的形式如下所示: if(表达式1) x=〈表达式2〉; else
x=〈表达式2〉;
无论表达式1为“真”还是为“假”,都只执行一个赋值语句且给同一个变量赋值。
可以利用条件运算符,将这种语句简单地用如下语句来表示。 x=〈表达式1〉?〈表达式2〉:〈表达式3〉;
说明:即当表达式1的值为“真”时,将表达式2的值赋给变量x;当表达式1的值为“假”时,将表达式3的值赋给变量x。 如:
a=5,b=10,c=20; x=a>b? c*b:c/b;
因为a>b为假,则x=c/b=2。
例4.4 输入两个数,并将其中较大者显示出来。 #include “stdio.h”
main( ) { int a,b,max;
scanf(“%d%d”,&a,&b); max=(a>b)? a:b;
printf(“max=%d”,max); }
条件运算符也可以嵌套使用,如:
Grade=(score>=90)?’A’:(score<=70)?’C’:’B’当score>=90时,将字符‘A’赋给变量grade; 当score<=70时,将字符‘C’赋给变量grade; 否则将字符‘B’赋给变量grade. 4.3 switch语句
Switch语句是多分支选择语句,其一般形式如下:Switch(表达式) {
case 〈常量表达式1〉:〈语句1〉 case 〈常量表达式2〉:〈语句2〉 ┆
case 〈常量表达式n〉:〈语句n〉 default:〈语句n+1〉 }
;
2.地址表
Scanf函数中的“地址表”部分是由变量的地址组成的,如果有多个变量,则各变量之间用逗号隔开。地址运算符为“&“,如变量a的地址可以写为&a。
例3.2用scanf函数,从键盘 上输入一个整型数、一个浮 点数和一个字符,分别存入 变量i、f和c中。
#include”stdio.h” main() { int i; float f; char c;
scanf(“%d,%f,%c”,&I,&f,&c); printf(“i=%d,f=%f,c=%c”,i,f,c); } 说明:
(1)在scanf函数“格式控制”部分中的每个格式说明符都必须在“地址表列”中有一个变量与之对应格式说明符必须要与相应变量的类型
一致。
(2)当格式说明符之间没有任何字符时,在输入数据时,两个数据之间要使用“空格”、“Tab”或“回车”键做间隔;如果格式说明符之间包含其它字符,则输入数据时,应输入与这些字符相同的字符做间隔,如:
Scanf(“%d,%f,%c”,&i,&f,&c); 在输入数据时,应采用如下形式:20,7.8,a
(3)可以在格式说明符的前面指定输入数据所占的列数,系统将自动按此列数来截取所需的数据,如:
scanf(-=”,&x,&y); 当用户输入78985时,系统将自动地将78赋给变量x,将985赋给变量y。这种方式也可用于字符型数据的输入。
(4)应该特别注意的是,scanf函数中的“地址表列”部分应当中变量的地址,而不是变量名。
3 .2 数据的输出
3.2.1 字符输出函数putchar
数据的输出一般是以终端显示器(屏幕)为处理对象。 格式:向终端输出一个字符。
说明:变量c可以是字符型,也可以是整型。 例3.3 从键盘输入一个字符,在屏幕上显示出来。 #include”stdio.h”
main() { char c;
c=getchar(); /*从键盘输入一个字符*/ putchar(c); /*在屏幕上显示一个字符*/ }
putchar函数也可以输出一些特殊字符(控制字符),如:putchar(‘\\n’) 作用是输出一个“换行”字符。 3.2.2 格式控制函数printf
格式: printf(格式控制,输出表); 功能:输出任何类型的数据。 1.格式控制
“格式控制”部分与scanf函数的相似,也是由双引号括起来的字符串,主要包括格式说明和需要原样输出的字符。
“格式说明”:由“%”和格式符组成,如%c和%f等,作用是将要输出的数据转换为指定格式后输出。 printf函数中使用的格式字符见表3.2 。
表3.2 printf函数格式字符 注意:格式字符必须小写 输出表
printf函数中的“输出表”部分由表达式组成,这些表达式应与“格式控制”字符串中的格式说明符的类型一一对应,若“输出表”中有
多个表达式,则每个表达式之间应由逗号隔开。
例3.4 从键盘输入一个整数和一个浮点数,并在屏幕上显示出来。 #include”stdio.h” main() { int i; float f;
scanf(“%d,%f”,&i,&f); printf(“i=%d,f=%f”,I,f); }
执行此程序,按格式输入数据: 50,8,9 i=50,f=8.900000 说明:
(1)printf函数中的“格式控制”字符串中的每一个格式说明符,都必须与“输出表”中的某一个变量相对应,如上述程序中的“%”与i对应;“%f”与f对应,而且格式说明符应当与其所对应变量的类型一致。
若要显示“%”字符,则应在“格式控制”字符串中连写两个“%”,如:
Printf(“x=%d%%”,100/4); 将显示:x=25%。
(2)对格式说明符c、d、s和f等,可以指定输出字段的宽度。
%md:m为指定的输出字段的宽度。如果数据的位数大于m,则按实际位数输出,否则输出时向右对齐,左端补以“空格”符。 %mc:m为指定的输出字段的宽度。若m大于一个字符的宽度,则输出时向右对齐,左端补以“空格”符。
%mc:m为输出时字符串所占的列数。如果字符串的长度(字符个数)大于m,则按字符串的本身长度输出,否则,输出时字符串向右对齐,左端补以“空格”符。
%-ms:mr的意义同上。如果字符串的长度小于m,则输出时字符串向左对齐,右端补以“空格”符。
%m.nf:m为浮点数据所占的总列数(包括小数点),n为小数点后面的位数。如果数据的长度小于m,则输出时向右对齐,左端补以“空格”符。
%-m.nf:m、n的意义同上。如果数据的长度小于m,则输出向左对齐,右端补以“空格”符。
(3)除了格式说明符及其输出字段的宽度外,在“格式控制”字符中的其他字符,将按原样输出。
(4)在显示数据时,可以不指定输出字段的宽度,而直接利用系统隐含的输出宽度。 3.3 应用举例
例3.5 分析下列程序,观察运行结果。 main() {
char ch=‘a’; int a=98; unsigned b=1000; long c=123456789; float x=3.14; double y=1.2345678;
pPrintf(“(1) a=%d,a=%c,ch=%d,ch=%c\\n”,a,a,ch,ch); printf(“(2) b=%u\\n”,b); printf(“(3) c=%ld\\n”,c); printf(“(4) x=%f,y=%f\\n”,x,y); printf(“(5) x=%e,y=%e\\n”,x,y); printf(“(6) y=á0.2f\\n”,y);} 运行的结果为
(1) a=98,a=b,ch=97,ch=a b=1000 C=123456789
X=3.140000,y=1.234567 x=3.14000e+00,y=1.23456e+00 Y=1.23
例3.6 从键盘上输入一个大写字母,把它转换面小 写字母,然后显示出来。 #include”stdio.h”
main() {
char x1,x2; printf(“x1=?\\n”); scanf(“%c”,&x1); x2=x1+32;
printf(“%c,%c\\n”,x1,x2); } 运行结果 x1=? A A,a
例3.7 分别输入一个浮点数,一个整数,一个字符型数。#include “stdio.h” main() { float f; int I; char c;
scanf(“%f%d%c”,&f,&I,&c); printf(“%f%d%c”,f,I,c); }
例3.8 从键盘输入一个字符并鸣笛输出。 #include “stdio.h” Main() { Char c; C=getchar( ); Putchar(‘\\007’); Putchar(c); }
第五讲 条件语句 4.1 语句和复合语句 4.2 if语句 4.3 switch语句 4.4 应用举例 第四章 条件语句
结构化程序的三种基本结构:顺序结构、选择分支结构和循环结构。 顺序结构:是指每个程序都是按照语句的书写顺序依次执行的。 选择分支结构:是指通过对特定条件的判断,来选择一个分支执行。 循环结构:循环是指在给定条件下,重复执行某段程序,直到不满足条件为止。 4.1 语句和复合语句
表达式语句:一个表达式的后面跟随一个分号构成的语句。
如:x=x+a;
说明:分号“;”是语句的终结符,而不是语句的分隔符即分号是语句的最末组成部分。
复合语句:由左右花括号括起来的语句; 形式:{说明部分;语句部分}
一个复合语句在语法上等同于一个语句,在程序中,凡是单个语句能够出现的地方,都可以出现复合语句。一个复合语句又可以出现在其他复合语句内部。
在复合语句的后面必须有一个分号,做为该语句的终结符。 4.2 if语句
If语句是条件选择语句,它是通过对给定条件的判断,来决定所要执行的操作。
4.2.1 if语句的三种形式 If语句的第一种形式 格式:if(表达式)〈语句〉
功能:首先计算表达式的值,若表达式的值 为“真”(为非0),则执行语句,若表达 式的值为“假”(为0),不执行语句。 例如:
If(x>y) printf(“%d”,x); 2. If语句的第二种形式 格式:if(表达式) 〈语句1〉
else 〈语句2〉 功能:首先计算表达式的值, 若表达式的值为“真”(为非0)。 则执行语句1,若表达式的值为 “假”(为0),则执行语句2。 例如:
if (x>y) printf(“%d”,x); else printf(“%d”,y); 3. If语句的第三种形式 格式:
if(表达式1) 〈语句1〉 else if(表达式2) 〈语句2〉 else if(表达式3) 〈语句3〉 ┆
else if(表达式n) 〈语句n〉 else 〈语句n+1〉
功能:首先计算表达式的值,若第n个表达式的值为“真”(为非0),则执行语句n,若所有的表达式的值都为“假”(为0),则执行语句n+1。其流程图如下: 例如:
if(score>89) grade=‘5’; else if(score>74) grade=‘4’;
printf(“sqrt(%d)=%fi”,n,root); } }
例4.7求两个数中最小值。 #include “stdio.h” main() {int x,y,min;
printf(“enter two integers:\\n”); acanf(“%d,%d,&x,&y); min=x printf(“Min=%d”,min); } 例4.8 从键盘输入一个操作符并进行相应和操作。 #include “stdio.h” main() { int x=10,y=5,z; char op; scanf(“%c”,&op); switch(op) { case ’+’:z=x+y;braek; case ’-’:z=x-y;braek; case ’*’:z=x*y;braek; case ’/’:z=x/y;braek; default :printf(“Operater Error!”); } printf(%d%c%d=%d”,x,op,y,z); } 例4.9 输入三个数,按由小到大的顺序输出。 #include “stdio.h” main() { int a,b,c,temp; printf(“enter three integers:\\t”); scanf(“%d,%d,%d”,&a,&b.&c); if(a>c) {temp=a;a=b;b=temp;} If(a>c) {temp=a;a=c;c=temp;} if(b>c) {temp=b;b=c;c=temp;} printf(“%d<%d,%d”,a,b,c); } 第六讲 循环控制 5.1 goto语句 5.2 while循环语句 5.3 do-while循环语句 5.4 for循环语句 5.2 while循环语句 用while语句来实现“当型”循环结构。 格式:while(表达式) 〈语句〉 /*循环体部分*/ 功能:当表达式的值为非0时,执行while语句中的循环体。结构流程图如图所示。 说明: (1)循环体如果包含一个以上语句,应该用花括弧括起来,以复合语句的形式出现,否则while语句范围只到while后面第一个分号处。 (2)在循环体中应有使循环趋向于结束的语句,即设置修改循环条件的语句。 (3)while语句的特点是先判断表达式的值,然后执行循环体中的语句,如果表达式的值一开始为假(值为0),退出循环,并转入下一语句去执行。 例5.2 求s=1+2+3+?100的值。 结构流程图如右图。 main( ) { int i,s=0; i=1; While (i<=100); {s=s+1; i++; } printf(“s=%d”,s); } 运行结果 s=5050 5.3 do-while循环语句 do-while循环语句,用来实现“直到型”循环结构。 格式:do <语句> while(表达式) 功能:先执行〈语句〉,后判断表达式的值。它的执行过程是:先执行一次指定的语句,然后判断表达式的值,当表达式的值为非零(”真“)时,返回重新执行该语句,如此反复,直到表达式的值等于0为此止,此时循环结束。 0(假) 说明: (1)用while语句和用do-while语句处理同一问题时,若二者的循环体部分一样,其结果也一样。但在while后面的表达式一开始就为假(0值)时,两种循环的结果是不同的。 (2)如果do-while语句的循环体部分是多个语句组成的话,则必须 用左右花括号括起来,使其形成复合语句。 main( ) {int i,s=0; scanf(“%d”,&i); do {s=s+i; i++; }while(i<=10); Printf(“s=%d”,s); } 运行情况如下: 1 S=55 Main( ) {int I,s=0; Scanf(“%d”,&i); While(i<=10); {s=s+I; i++; } 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库c语言教学教案在线全文阅读。
相关推荐: