C语言程序设计教程顺序结构程序设计.pptx
2023/2/211程序的三种基本结构 顺序结构N-S结构图流程图ABAB选择结构选择结构YNABP成立?P T F A B第1页/共38页2023/2/212程序的三种基本结构循环结构NYP成立?A当P成立时 A直到型循环直到型循环 A当P成立时YNAP成立?当型循环当型循环N-S结构图流程图第2页/共38页2023/2/213本章主要内容:C C语言的语句类型语言的语句类型 数据输出数据输出 数据输入数据输入 顺序结构程序设计顺序结构程序设计第3页/共38页2023/2/2143.1 C语言的语句类型主要内容:说明性语句表达式语句控制语句复合语句第4页/共38页2023/2/2153.1.1 说明性语句对程序中使用的变量、数组、函数等操作对象对程序中使用的变量、数组、函数等操作对象进行定义、声明的描述语句进行定义、声明的描述语句只起说明作用,不产生可执行的机器指令代码。只起说明作用,不产生可执行的机器指令代码。例如:例如:int a,b;float function(int,int);C C程序由函数组成。函数的格式:程序由函数组成。函数的格式:程序由函数组成。函数的格式:程序由函数组成。函数的格式:函数名(参数表)函数名(参数表)函数名(参数表)函数名(参数表)说明部分;说明部分;说明部分;说明部分;执行部分;执行部分;执行部分;执行部分;数据类型说明语句可执行语句第5页/共38页2023/2/216表达式后面加一个分号,构成表达式语句x=3;y=y+5;x=a-b&c|d;printf(x=%d,y=%dn,x,y);sort(a,10);3.1.2 表达式语句 赋值语句函数调用语句l l注意:分号是语句必不可少的一部分分号是语句必不可少的一部分 单独的一个分号单独的一个分号“;”构成一个空语句构成一个空语句例如:例如:;(空语句,是最简单的(空语句,是最简单的C C语句)语句)第6页/共38页2023/2/2173.1.3 控制语句1选择分支控制语句 if()else switch()2循环控制语句 for()while()do while()3其他控制语句 break、continue、gotoreturn第7页/共38页2023/2/2183.1.4 复合语句 用一对花括号用一对花括号“”括起来的若干条语句括起来的若干条语句 花括号中可以是说明语句、表达式语句、控制语句,也可以是复合语句花括号中可以是说明语句、表达式语句、控制语句,也可以是复合语句例如:if(ab)max=a;min=b;for(n=1;n=100)printf(“dn”,p);break;第8页/共38页2023/2/2193.1.4 复合语句(续)复合语句中如果有说明性语句,应该写在可执行语句的前面复合语句中如果有说明性语句,应该写在可执行语句的前面例如:main()int a,b;a=b=100;float c=10.23;printf(%fn,c);printf(%d%dn,a,b);要特别注意:l l花括号的配对l l花括号的位置C C C C语言学习语言学习的难点之的难点之一一第9页/共38页2023/2/21103.2 数据输出主要内容:字符输出函数格式输出函数第10页/共38页2023/2/21113.2.1 字符输出函数 函数调用的一般形式 putchar(ch)功能:在标准输出设备(即显示器屏幕)上输出一个字符。例如:putchar(b);putchar(n);putchar(101);putchar(st);第11页/共38页2023/2/2112说明 putcharputchar是是C C语言的标准库函数,使用时必须加编译预处理命令:语言的标准库函数,使用时必须加编译预处理命令:#include stdio.hinclude stdio.h 或#include include【例【例3.13.1】利用】利用putcharputchar函数输出字符。函数输出字符。#include stdio.h main()char c1,c2;c1=a;c2=b;putchar(c1);putchar(c2);putchar(n);putchar(c1-32);putchar(c2-32);putchar(n);也可改为也可改为c1=c1=9797;c2=;c2=9898;输出结果:输出结果:abab AB AB例jc3_1第12页/共38页2023/2/21133.3.2 格式输出函数 函数调用的一般形式 printf(格式控制,参数2,参数n)功能:按格式控制所指定的格式,在标准输出设备上输出参数按格式控制所指定的格式,在标准输出设备上输出参数2 2、参数、参数n n的的值。值。例如有程序段:int a=123,b=100;printf(%d%d%dn,a,b,a+b);printf(c=%d+%d=%dn,a,b,a+b);第13页/共38页2023/2/2114格式控制 用双引号括起的字符串,用于指定用双引号括起的字符串,用于指定输出数据的类型、格式、个数输出数据的类型、格式、个数 包括:包括:普通字符和和格式说明符照原样输出 printf(c=%d+%d=%dn,a,b,a+b);格式说明符:指定输出3 3个十进制整型数,分别为变量 a a、b b、a ab b的值第14页/共38页2023/2/2115输出格式说明符整型整型整型整型数据数据数据数据%d 以有符号十进制形式输出整型数以有符号十进制形式输出整型数以有符号十进制形式输出整型数以有符号十进制形式输出整型数%o 以无符号八进制形式输出整型数以无符号八进制形式输出整型数以无符号八进制形式输出整型数以无符号八进制形式输出整型数%x 以无符号十六进制形式输出整型数以无符号十六进制形式输出整型数以无符号十六进制形式输出整型数以无符号十六进制形式输出整型数%u以无符号十进制形式输出整型数以无符号十进制形式输出整型数以无符号十进制形式输出整型数以无符号十进制形式输出整型数实型实型实型实型数据数据数据数据%f以小数形式输出实型数以小数形式输出实型数以小数形式输出实型数以小数形式输出实型数%e 以指数形式输出实型数以指数形式输出实型数以指数形式输出实型数以指数形式输出实型数%g 按数值宽度最小的形式输出实型数按数值宽度最小的形式输出实型数按数值宽度最小的形式输出实型数按数值宽度最小的形式输出实型数字符型字符型字符型字符型数据数据数据数据%c 输出一个字符输出一个字符输出一个字符输出一个字符%s 输出字符串输出字符串输出字符串输出字符串其他其他其他其他%输出字符输出字符输出字符输出字符%本身本身本身本身在和格式符之间可以使用在和格式符之间可以使用附加说明符第15页/共38页2023/2/2116附加格式说明符 l l输出长整型数(只可与输出长整型数(只可与输出长整型数(只可与输出长整型数(只可与d d、o o、x x、u u结合用)结合用)结合用)结合用)mm指定数据输出的宽度(即域宽)指定数据输出的宽度(即域宽)指定数据输出的宽度(即域宽)指定数据输出的宽度(即域宽).n n对实型数据,指定输出对实型数据,指定输出对实型数据,指定输出对实型数据,指定输出 n n 位小数;位小数;位小数;位小数;对字符串,指定左端截取对字符串,指定左端截取对字符串,指定左端截取对字符串,指定左端截取n n 个字符输出个字符输出个字符输出个字符输出+使输出的数值数据无论正负都带符号输出使输出的数值数据无论正负都带符号输出使输出的数值数据无论正负都带符号输出使输出的数值数据无论正负都带符号输出-使数据在输出域内按左对齐方式输出使数据在输出域内按左对齐方式输出使数据在输出域内按左对齐方式输出使数据在输出域内按左对齐方式输出整数位数整数位数+小数位数小数位数+小数点小数点 自动对自动对n n位后小数四舍五入位后小数四舍五入 例如:%ld ld 输出十进制长整型数输出十进制长整型数%m.nf m.nf 右对齐,右对齐,mm位域宽,位域宽,n n位小数或位小数或n n个字个字符符%-%-m.nf m.nf 左对齐左对齐 第16页/共38页2023/2/2117例3.2 整型数据的输出main()int a=11,b=22;int m=-1;long n=123456789;printf(%d%dn,a,b);printf(a=%d,b=%dn,a,b);printf(m:%d,%o,%x,%un,m,m,m,m);printf(n=%dn,n);printf(n=%ldn,n);程序输出:程序输出:1122a=11,b=22m:-1,177777,ffff,65535n=-13035n=123456789例jc3_a第17页/共38页2023/2/2118例3.3 实型数据的输出main()float x=1234.56,y=1.23456789;double z=1234567.123456789;printf(x=%f,y=%f n,x,y);printf(z=%fn,z);printf(z=%en,z);printf(z=%gn,z);printf(z=%18.8fn,z);printf(x=%10.3fn,x);printf(x=%-10.3fn,x);printf(x=%4.3fnn,x);程序输出:程序输出:x=1234.560059,y=1.234568z=1234567.123457z=1.23457e+06z=1234570z=1234567.12345679x=1234.560 x=1234.560 x=1234.560例jc3_b第18页/共38页2023/2/2119例3.4 字符型数据的输出main()int m=97;char ch=B;printf(m:%d%cn,m,m);printf(ch:%d%cn,ch,ch);printf(%sn,student);printf(%10sn,student);printf(%-10sn,student);printf(%10.3sn,student);printf(%.3snn,student);程序输出:程序输出:m:97 ach:66 Bstudent studentstudent stustu例jc3_c第19页/共38页2023/2/2120注意:printfprintf函数格式控制中的格式说明符与输出参函数格式控制中的格式说明符与输出参数的个数和类型必须一一对应。数的个数和类型必须一一对应。格式说明符的格式说明符的%和后面的描述符之间不能有和后面的描述符之间不能有空格。除空格。除%X X、%E%E、%G%G外类型描述符必须是外类型描述符必须是小写字母。小写字母。长整型数应该用长整型数应该用ldld(或或lolo、lxlx、lulu)格式输出,否则会出现输出错误。格式输出,否则会出现输出错误。printfprintf函数的参数可以是常量、变量或表达式。函数的参数可以是常量、变量或表达式。在计算各参数值时,在计算各参数值时,Turbo CTurbo C采用从右至左的采用从右至左的顺序求值。顺序求值。第20页/共38页2023/2/21213.3 数据输入主要内容:字符输入函数格式输入函数第21页/共38页2023/2/21223.3.1 字符输入函数 函数调用的一般形式 getchar()功能:从标准输入设备(即键盘)上交互输入一个字符。例如:getchar();c=getchar();printf(%c n,getchar();第22页/共38页2023/2/2123例如:【例【例3.83.8】getchargetchar函数的应用。函数的应用。#include stdio.hmain()char ch;ch=getchar();printf(%c%dn,ch,ch);printf(%c%dnn,ch-32,ch-32);程序运行时输入:程序运行时输入:mm 并按回车键后并按回车键后输出结果是:输出结果是:m 109m 109M 77M 77例jc3_8第23页/共38页2023/2/2124说明:getchargetchar是是C C语言的标准库函数,使用时必须加编译预处理命令:语言的标准库函数,使用时必须加编译预处理命令:#include stdio.hinclude stdio.h 或#include include getchargetchar函数需要交互输入,接收到输入字符之后才继续执行程序。函数需要交互输入,接收到输入字符之后才继续执行程序。连续使用连续使用getchargetchar函数时,要注意字符的输入形式函数时,要注意字符的输入形式 ,例如执行如下程序段:,例如执行如下程序段:char ch1,ch2;ch1=getchar();ch2=getchar();必须连续输入两个必须连续输入两个字符,中间不能有字符,中间不能有其他字符其他字符第24页/共38页2023/2/21253.3.2 格式输入函数 函数调用的一般形式 scanf(格式控制,地址参数2,地址参数n);功能:按格式控制指定的格式,从标准输入设备按格式控制指定的格式,从标准输入设备(即键盘即键盘)交互输入数据,并依次存放到对应地交互输入数据,并依次存放到对应地址参数指定的变量中址参数指定的变量中(即将输入值赋给变量即将输入值赋给变量)。例如:scanf(%d%f,&a,&f);scanf(%o,%f,&b,&x);scanf(a=%d,b=%d,&a,&b);第25页/共38页2023/2/2126格式控制 用双引号括起的字符串,用于指定用双引号括起的字符串,用于指定输入数据的类型、格式、个数以及输入的形式输入数据的类型、格式、个数以及输入的形式 包括:包括:普通字符和和格式说明符照原样输入 scanf(a=%d,b=%d,&a,&b);格式说明符:指定输入2 2个十进制整型数赋给变量 a a 和 b b第26页/共38页2023/2/2127输入格式说明符整型整型整型整型数据数据数据数据%d输入十进制整型数输入十进制整型数输入十进制整型数输入十进制整型数%u输入无符号的十进制整型数输入无符号的十进制整型数输入无符号的十进制整型数输入无符号的十进制整型数%o输入八进制整型数输入八进制整型数输入八进制整型数输入八进制整型数%x输入十六进制整型数输入十六进制整型数输入十六进制整型数输入十六进制整型数实型实型实型实型数据数据数据数据%f输入小数形式的单精度实型数输入小数形式的单精度实型数输入小数形式的单精度实型数输入小数形式的单精度实型数%e输入指数形式的单精度实型数输入指数形式的单精度实型数输入指数形式的单精度实型数输入指数形式的单精度实型数字符型字符型字符型字符型数据数据数据数据%c输入单个字符输入单个字符输入单个字符输入单个字符%s输入一个字符串输入一个字符串输入一个字符串输入一个字符串在和格式符之间可以使用附加说明符在和格式符之间可以使用附加说明符第27页/共38页2023/2/2128附加格式说明符 l l与与与与d d、o o、x x、u u结合输入长整型数结合输入长整型数结合输入长整型数结合输入长整型数与与与与 f f 结合输入结合输入结合输入结合输入doubledouble型数型数型数型数mm指定数据输入的宽度(即域宽)指定数据输入的宽度(即域宽)指定数据输入的宽度(即域宽)指定数据输入的宽度(即域宽)*忽略读入的数据忽略读入的数据忽略读入的数据忽略读入的数据(即不将读入数据赋给相应变量)(即不将读入数据赋给相应变量)(即不将读入数据赋给相应变量)(即不将读入数据赋给相应变量)例如:%ld、%lo输入十进制、八进制长整型数%lf、%le输入双精度实型数%mf输入m位数(域宽)%*d忽略输入的一个整型数对对floatfloat和和doubledouble型指型指整数位数整数位数+小数点小数点+小数位数小数位数第28页/共38页2023/2/2129例如:scanf(%d%d%d,&a,&b,&c);输入3个整型十进制数,以空白符(空格、tab键或回车键)分隔 scanf(%d,%o,%f,&a,&b,&x);输入3个数,以“,”分隔scanf(a=%d,b=%d,&a,&b);输入的形式是:a=a=32,b=,b=28(普通字符要照原样输入)第29页/共38页2023/2/2130程序:main()int a,b,c;long m;float x;double y;char ch,string20;printf(input a,b,c,m:);scanf(%d%o%x%ld,&a,&b,&c,&m);printf(a=%d,b=%d,c=%d,m=%ldn,a,b,c,m);printf(input x,y:);scanf(%f%lf,&x,&y);getchar();printf(x=%f,y=%fn,x,y);printf(input ch,string:);scanf(%c%s,&ch,string);printf(ch=%c,string=%snn,ch,string);运行jc3_d第30页/共38页2023/2/2131使用scanf函数应注意:要求在程序运行中输入数据,输入的数据个数要求在程序运行中输入数据,输入的数据个数和类型必须与格式说明符一一对应。和类型必须与格式说明符一一对应。地址参数形式:地址参数形式:&变量名(除数组或指针变量)变量名(除数组或指针变量)格式控制中有普通字符时,必须照原样输入。格式控制中有普通字符时,必须照原样输入。格式控制中无普通字符时,输入的数值型数据格式控制中无普通字符时,输入的数值型数据和字符串用空白符分隔,字符型数据不必分隔。和字符串用空白符分隔,字符型数据不必分隔。doubledouble型数据输入时,必须用型数据输入时,必须用%lf lf或或%lele格式格式实型数输入时域宽不能用实型数输入时域宽不能用m.nm.n形式的附加说明形式的附加说明 为了减少不必要的输入量,除了逗号、分号、为了减少不必要的输入量,除了逗号、分号、空格符以外,格式控制中尽量不要出现普通字空格符以外,格式控制中尽量不要出现普通字符,也不要使用符,也不要使用 n n 、tt 等转义字符等转义字符第31页/共38页2023/2/2132l lscanf(%c%c%c,&ch1,&ch2,&ch3);要输入:abc 不能输入:a b c l l注意数值型数据与注意数值型数据与char型数据的混合输入型数据的混合输入注意(续):格式符之间若无普通字符,则:输入的数值型数据用空白符分隔输入的 char型数据不必分隔 例如:例如:scanf(%d%d,&m,&n);scanf(%c,&ch);错误输入:32 28 a 正确输入:32 28a 第32页/共38页2023/2/21333.4 顺序结构程序设计3.4.1 顺序结构程序的一般算法描述变量定义变量赋值运算处理输出结果可用:变量初始化赋值语句输入函数调用语句注意各个语句的顺序注意各个语句的顺序第33页/共38页2023/2/21343.4.2 顺序结构程序设计举例【例3.15】数据交换。从键盘输入a、b的值,输出交换以后的值。思路:思路:在计算机中交换变量a和b的值,不能只写下面两个赋值语句a=b;b=a;正确的交换方法:c=a;a=b;b=c;第34页/共38页2023/2/2135程序:main()int a,b,c;printf(ninput a,b:);scanf(%d,%d,&a,&b);printf(nbefore exchange:a=%d b=%dn,a,b);c=a;a=b;b=c;printf(after exchange:a=%d b=%dn,a,b);程序运行情况如下:input a,b:32,57 before exchange:a=32 b=57 after exchange:a=57 b=32 运行jc3_15第35页/共38页2023/2/2136举例:【例3.16】已知三条边a、b、c,求三角形面积。计算三角形面积的海伦公式:其中:设定义:整型变量 a、b、c实型变量 s、area第36页/共38页2023/2/2137程序如下:#include math.hmain()int a,b,c;float s,area;scanf(%d,%d,%d,&a,&b,&c);s=1.0/2*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c);printf(area=%8.3f n,area);程序运行情况如下:3,4,5 area=6.000 实际上还需要判断实际上还需要判断a a、b b、c c是否能构成三角形,是否能构成三角形,即应该进行选择判断处理即应该进行选择判断处理 运行jc3_16第37页/共38页2023/2/2138感谢您的欣赏!第38页/共38页