




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、作业:作业:2.3.求表达式的值求表达式的值x+a%3*(int)(x+y)%2/4 设设x=2.5,a=7,y=4.7(float)(a+b)/2+(int)x%(int)y 设设a=3,b=5,x=2.5,y=3.5答案:答案:2.5000002.500000,6.0000006.000000 1第三章2l 主要内容主要内容3.1 3.1 程序的控制构造程序的控制构造3.2 C3.2 C语句概述语句概述3.3 3.3 数据输入输出的概念及在数据输入输出的概念及在c c言语中的实现言语中的实现3.4 3.4 字符数据的输入输出字符数据的输入输出3.5 3.5 格式输出函数格式输出函数prin
2、tfprintf3.6 3.6 格式输如函数格式输如函数scanfscanf3.7 3.7 顺序构造程序设计举例顺序构造程序设计举例33.1 程序的控制构造3.1.1算法的根本概念算法的根本概念 程序程序=算法算法+数据构造数据构造+程序设计方法程序设计方法+言语工具和环言语工具和环境境3.1.2 算法的特性算法的特性有穷性:一个算法应包含有限的操作步骤而不能是无有穷性:一个算法应包含有限的操作步骤而不能是无限的。限的。 确定性:算法中每一个步骤该当是确定的,而不能是确定性:算法中每一个步骤该当是确定的,而不能是模糊的、模棱两可的。模糊的、模棱两可的。有零个或多个输入。有零个或多个输入。有一个
3、或多个输出。有一个或多个输出。有效性:算法中每一个步骤该当能有效地执行,并得有效性:算法中每一个步骤该当能有效地执行,并得到确定的结果。到确定的结果。43.1.3 算法的表示1 1 用自然言语表示算法用自然言语表示算法2 2 用流程图表示算法用流程图表示算法 图图3-1 3-1 流程图符号流程图符号 5【例【例3.13.1】求】求5!5!的算法流程图表示。的算法流程图表示。图图3-2 没有打印功能没有打印功能 图图3-3 带有打印功能带有打印功能6【例【例3.23.2】断定闰年的算法用流程图表示。】断定闰年的算法用流程图表示。YN7三种根本构造和改良的流程图顺序构造:顺序构造:选择构造:选择构
4、造:循环构造循环构造8三种根本构造的共同特点:三种根本构造的共同特点:v只需一个入口;只需一个入口;v只需一个出口;只需一个出口;v构造内的每一部分都有时机被执行到;构造内的每一部分都有时机被执行到;v构造内不存在构造内不存在“死循环。死循环。93.1.4 用用N-S流程图表示算法流程图表示算法1. 1. 顺序构造:顺序构造:2. 2. 选择构造:选择构造:3. 3. 循环构造:循环构造:103.1.5 用计算机言语表示算法用计算机言语表示算法【例【例3.3】用】用C言语求言语求5!。!。 #include void main() int i,t; t=1; i=2; while(iy)z=x
5、; else z=y;15 3.2 C语句概述续语句概述续( (二二) )函数调用语句函数调用语句 有一个函数调用加一个分号构成一个语句有一个函数调用加一个分号构成一个语句 printf( printf(“This is This is a C program.a C program.););16 3.2 C语句概述续语句概述续( (三三) )表达式语句表达式语句 有一个表达式加一个分号构成一个语句有一个表达式加一个分号构成一个语句 a = 3 ;a = 3 ; 任何表达式都可以加上分号而成为语句。任何表达式都可以加上分号而成为语句。 例如:算术表达式和赋值表达式。例如:算术表达式和赋值表达式
6、。分号分号赋值表达赋值表达式式表达式语句表达式语句17 3.2 C语句概述续语句概述续( (四四) )空语句空语句 只需一个分号的语句只需一个分号的语句 什么也不做什么也不做用来做流程的转向点用来做流程的转向点用来作为循环语句中的循环体用来作为循环语句中的循环体18 3.2 C语句概述续语句概述续( (五复合语句五复合语句 用一对用一对 括起来的语句括起来的语句 z=x+y;z=x+y;t=z/100;t=z/100;printf(printf(“%f%f,t);,t); 留意:复合语句中最后一个语句中最后的分号留意:复合语句中最后一个语句中最后的分号 不能忽略不写。不能忽略不写。19 3.3
7、 数据输入输出的概念及在数据输入输出的概念及在C言语中的实现言语中的实现( (一一) )所谓输入输出是以计算机主机为主体而言的所谓输入输出是以计算机主机为主体而言的输出输出: :从计算机向外部输出设备从计算机向外部输出设备( (显示器显示器, ,打印机打印机) ) 输出数据输出数据输入输入: :从输入设备从输入设备( (键盘键盘, ,鼠标鼠标, ,扫描仪扫描仪) )向计算机向计算机 输入数据输入数据. .20v在运用言语库函数时,要用预编译命令在运用言语库函数时,要用预编译命令v #include #include将有关将有关“头文件包括到源文件中。头文件包括到源文件中。v运用规范输入输出库函
8、数时要用到运用规范输入输出库函数时要用到“stdio.hstdio.h文件,文件,stdiostdio是是standard input and outuptstandard input and outupt的的意思。因此源文件开头应有以下预编译命令:意思。因此源文件开头应有以下预编译命令:#include#include或或#include #include “stdio.hstdio.h 3.3 数据输入输出的概念及在数据输入输出的概念及在C言语中的实现言语中的实现21 3.4 字符数据的输入输出字符数据的输入输出v3.4.1 putchar 函数字符输出函数函数字符输出函数vputchar
9、 函数是字符输出函数,函数是字符输出函数, 其功能其功能是在显示器上输出单个字符。是在显示器上输出单个字符。v其普通方式为:其普通方式为: putchar(字符型量字符型量)例如:例如: putchar(A); 输出大写字母输出大写字母A putchar(x); 输出字符变量输出字符变量x的值的值 putchar(101); 也是输出字符也是输出字符A putchar(n); 换行换行【例【例3.43.4】输出单个字符。】输出单个字符。#include#includevoid main()void main() char a=G,b=o,c=o,d=d; char a=G,b=o,c=o,d=
10、d; putchar(a);putchar(b);putchar(c); putchar(a);putchar(b);putchar(c); putchar(d); putchar(d); putchar(t); putchar(t); 223.4.2 getchar函数键盘输入函数函数键盘输入函数vgetchar函数的功能是从键盘上输入一个字函数的功能是从键盘上输入一个字符。符。v其普通方式为:其普通方式为: getchar();【例【例3.5】输入单个字符。】输入单个字符。#includevoid main() char c; printf(input a charactern); c=g
11、etchar(); putchar(c);putchar(getchar(); 或或printf(“%c,getchar();233.5 printf函数格式输出函数函数格式输出函数v3.5.1 printf函数调用的普通方式函数调用的普通方式 vprintf函数是一个规范库函数,它的函数原函数是一个规范库函数,它的函数原v 型在头文件型在头文件“stdio.h中。中。printf(printf(“格式控制字符串,输出表列格式控制字符串,输出表列) )格式控制字符串格式控制字符串%标志标志输出最小宽度输出最小宽度.精度精度长度长度类型类型printfprintf函数调用的普通方式为:函数调用的
12、普通方式为:输出最小宽度输出最小宽度: :用十进制整数来表示输出的最少位数。假用十进制整数来表示输出的最少位数。假设实践位数多于定义的宽度,那么按实践位数输出,设实践位数多于定义的宽度,那么按实践位数输出,保证不由于输出而使数据发生截断误差。假设实践位保证不由于输出而使数据发生截断误差。假设实践位数少于定义的宽度那么按表数少于定义的宽度那么按表3-23-2补以空格或补以空格或0 0。精度精度: :精度格式符以精度格式符以“. .开头,后跟十进制整数。本项的开头,后跟十进制整数。本项的意义是:假设输出数值,那么表示小数的位数;假设意义是:假设输出数值,那么表示小数的位数;假设输出的是字符,那么表
13、示输出字符的个数;假设实践输出的是字符,那么表示输出字符的个数;假设实践位数大于所定义的精度数,那么四舍五入截去超越的位数大于所定义的精度数,那么四舍五入截去超越的部分。部分。长度长度: :长度格式符为长度格式符为h,lh,l两种,两种,h h表示按短整型表示按短整型(short)(short)量量输出,输出,l l表示按长整型表示按长整型(long)(long)量输出。量输出。24printf函数函数(“格式控制,格式控制,“输出表列输出表列)普通字符普通字符 格式阐明格式阐明 输出表列输出表列 % + 修饰符修饰符 + 格式符格式符a , : 等等l ,m,n,-d,o,x,u,c,s,f
14、,e,g变量的称号变量的称号或表达式等或表达式等25 3.5 格式输入与输出格式输入与输出格式符。用来输出十进制整数。几种用法:格式符。用来输出十进制整数。几种用法: :按十进制整型数据的实践长度输出。按十进制整型数据的实践长度输出。 :为指定的输出字段的宽度。假设数据的为指定的输出字段的宽度。假设数据的 位数小于,那么左端补以空格,假设大于,那么按实位数小于,那么左端补以空格,假设大于,那么按实 际位数输出。际位数输出。 例例: printf,; 假设假设123,b12345,那么输出结果为,那么输出结果为 123,12345 l:输出长整型数据。输出长整型数据。 例例: long 790;
15、/* 定义定义a为长整型变量为长整型变量*/ printfl,;,;假设用假设用%d输出就会出错。对于长整型数据也可指定字输出就会出错。对于长整型数据也可指定字段宽度。一个段宽度。一个int型数据可以用型数据可以用%d或或%ld格式输出。格式输出。26 3.5 格式输入与输出格式输入与输出(2) (2) 格式符。以八进制整数方式输出。格式符。以八进制整数方式输出。输出的数值不带符号,符号位也一同作为八进制数的输出的数值不带符号,符号位也一同作为八进制数的一部分输出。一部分输出。例:例:int a=-1;int a=-1; printf(%d printf(%d,%o%o,a a,a); a);
16、 在内存单元中的存放方式以补码方式存放在内存单元中的存放方式以补码方式存放如下:如下:11 111 111 111 111 111 111 111 111 111 11111 111 111 111 111 111 111 111 111 111 111输出为输出为: : ,3777777777737777777777不会输出带负号的八进制整数。对长整数不会输出带负号的八进制整数。对长整数longlong型型可以用可以用“lolo格式输出。还可以指定字段宽度,格式输出。还可以指定字段宽度,例例:printf:printf 1313 ,; ; 输出为输出为: : 37777777777 ( 37
17、777777777 (数字前有数字前有2 2个空格个空格) )27 3.5 格式输入与输出格式输入与输出(3)(3)格式符。以十六进制数方式输出整数。同样不会格式符。以十六进制数方式输出整数。同样不会出现负的十六进制数。出现负的十六进制数。例:例: int int ; printf printf,;,; 在内存单元中的存放方式以补码方式存放在内存单元中的存放方式以补码方式存放如下:如下:1111 1111 1111 1111 1111 1111 1111 11111111 1111 1111 1111 1111 1111 1111 1111输出结果为输出结果为: ffffffff: fffff
18、fff,3777777777737777777777,可以用可以用“l l输出长整型数,也可以指定输出字段输出长整型数,也可以指定输出字段的宽度。的宽度。例例: : “1212 输出为输出为 ffff ffff ffff ffff28 3.5 格式输入与输出格式输入与输出(4)(4)格式符,用来输出格式符,用来输出unsignedunsigned型数据型数据. .一个有符号整数一个有符号整数intint型也可以用格式型也可以用格式输出;输出;一个一个unsignedunsigned型数据也可以用格式输出。型数据也可以用格式输出。unsignedunsigned型数据也可用或格式输出。型数据也可
19、用或格式输出。29v【例【例3.6】输出整数】输出整数v #include vvoid main() v int a=88,b=89;v printf(%4d %4on,a,b);v printf(%+4ld,%-4dn,a,b);v printf(%+04d,%-04dn,a,b);v printf(a=%d,b=%dn,a,b);v 30 3.5 格式输入与输出格式输入与输出(5)(5)格式符,用来输出一个字符。格式符,用来输出一个字符。如:如:charchard d; printf printf,d d; 输出字符输出字符.一个整数,只需它的值在范围内,可以用一个整数,只需它的值在范围内
20、,可以用“使之按字符方式输出,在输出前,系统会将该使之按字符方式输出,在输出前,系统会将该整数作为整数作为ASCIIASCII码转换成相应的字符;一个字符数据码转换成相应的字符;一个字符数据也可以用整数方式输出。也可以用整数方式输出。 31 3.5 格式输入与输出格式输入与输出字符数据的输出。字符数据的输出。#include#includevoid main()void main() char c=char c=a a; ;int i=97;int i=97;printf(printf(“%c,%dn%c,%dn,c,c);,c,c);printf(printf(“%c,%dn%c,%dn,i
21、,i);,i,i); 运转结果:运转结果:a,97a,97a,97a,97 指定输出字数的宽度,指定输出字数的宽度,printf(printf(“%3c%3c,c);,c);那么输出:那么输出: a a32 3.5 格式输入与输出格式输入与输出(6)s(6)s格式符格式符 用来输出一个字符串用来输出一个字符串. . 。例如:。例如: printf printf, 输出字符串输出字符串“不包括双引号。不包括双引号。 %ms %ms,输出的字符串占,输出的字符串占m m列,假设串长大于列,假设串长大于m m,那么全部,那么全部 输出,假设串长小于输出,假设串长小于m m,那么左补空格。,那么左补空
22、格。 %-ms %-ms,假设串长小于,假设串长小于m m,字符串向左靠,右补空格。,字符串向左靠,右补空格。 %m. ns, %m. ns,输出占输出占m m列,只取字符串中左端列,只取字符串中左端n n个字符,个字符, 输出在输出在m m列的右侧,左补空格。列的右侧,左补空格。 %-m.ns %-m.ns,n n个字符输出在个字符输出在m m列的左侧,右补空格,列的左侧,右补空格, 假设假设nmnm,m m自动取自动取n n值值, ,既保证既保证n n个字符正常输出。个字符正常输出。33 3.5 格式输入与输出格式输入与输出字符串的输出。字符串的输出。#include#includevoi
23、d main()void main() printf(printf(“%3s,%7.2s,%.4s,%-5.3sn%3s,%7.2s,%.4s,%-5.3sn, , “CHINACHINA, , “CHINACHINA, , “CHINACHINA, , “CHINACHINA);); 运转结果:运转结果:CHINACHINA, CH ,CHIN,CHI CH ,CHIN,CHI 34 3.5 格式输入与输出格式输入与输出(7)(7)格式符。用来以小数方式输出实数格式符。用来以小数方式输出实数( (包括单双精度包括单双精度) )有以下几种用法:有以下几种用法: 。不指定字段宽度,由系统自动指定
24、字段宽度,。不指定字段宽度,由系统自动指定字段宽度, 使整数部分全部输出,并输出位小数。该当留意,使整数部分全部输出,并输出位小数。该当留意, 在输出的数字中并非全部数字都是有效数字。单精度在输出的数字中并非全部数字都是有效数字。单精度 实数的有效位数普通为位。实数的有效位数普通为位。. .。指定输出的数据共占列,其中有位。指定输出的数据共占列,其中有位 小数。假设数值长度小于,那么左端补空格。小数。假设数值长度小于,那么左端补空格。. .与与. .根本一样,只是使输出的数根本一样,只是使输出的数 值向左端靠,右端补空格。值向左端靠,右端补空格。 35 3.5 格式输入与输出格式输入与输出输出
25、实数时的有效位数。输出实数时的有效位数。#include #include void void float float ,;,;111111.111111111.111;222222.222222222.222;printfprintf,;,; 运转结果:运转结果:333333.328125 333333.328125 36 3.5 格式输入与输出格式输入与输出输出双精度数时的有效位数。输出双精度数时的有效位数。#include #include void mainvoid main double double ,;,; x=1111111111111.111111111; x=1111111
26、111111.111111111; y=2222222222222.222222222; y=2222222222222.222222222; printf( printf(“%f%f,x+y);x+y); 运转结果:运转结果:3333333333333.333010 3333333333333.333010 37 3.5 格式输入与输出格式输入与输出输出实数时指定小数位数。输出实数时指定小数位数。#include #include void mainvoid main float f=123.456; float f=123.456; printf( printf(“%f%f %10f %1
27、0f %10.2f %10.2f %.2f %.2f %-10.2f %-10.2fn n,f f,f f,f f,f f,f);f); 运转结果:运转结果:123.456001123.456001123.456001123.456001123.46123.46 123.46123.46123.46123.46 38 3.5 格式输入与输出格式输入与输出(8)(8)格式符,以指数方式输出实数。格式符,以指数方式输出实数。可用以下方式:可用以下方式: 。不指定输出数据所占的宽度和数字部。不指定输出数据所占的宽度和数字部 分的小数位数分的小数位数. .例例:printf:printf,;,;输出:
28、输出: 6 6列列 5 5列列所输出的实数共占列宽度。所输出的实数共占列宽度。( (注:不同系统注:不同系统的规定略有不同的规定略有不同) )39 3.5 格式输入与输出格式输入与输出 m.nem.ne和和-m.ne-m.ne。、和。、和“字符的含义与前字符的含义与前 一样。此处指拟输出的数据的小数部分又称尾数一样。此处指拟输出的数据的小数部分又称尾数 的小数位数。的小数位数。 假设,那么:假设,那么:printf(printf(“%e%e %10e%10e %10.2e %10.2e %.2e %.2e %-10.2e %-10.2e, f,f,f,f,f); f,f,f,f,f); 输出如
29、下:输出如下:1.234560e+002 1.234560e+002 1.234560e+002 1.234560e+002 1.23e+002 1.23e+002 1.23e+002 1.23e+002 13 13列列 13 13列列 10 10列列 9 9列列 1.23e+0021.23e+002 10 10列列阐明阐明: :未指定,自动使未指定,自动使. .超越给定的列,乃突破列的限制,按实践长度输出。超越给定的列,乃突破列的限制,按实践长度输出。第第3 3个数据共占列,小数部分占列。个数据共占列,小数部分占列。只指定,未指定,自动使等于数据应占的长度。只指定,未指定,自动使等于数据应占
30、的长度。第第5 5个数据应占列,数值只需列,由于是个数据应占列,数值只需列,由于是“10.210.2,数值向左靠,右补一个空格。数值向左靠,右补一个空格。( (注:有的注:有的C C系统的输出格式与此略有不同系统的输出格式与此略有不同) ) 40 3.5 格式输入与输出格式输入与输出(9)(9)格式符,用来输出实数格式符,用来输出实数. . 它根据数值的大小,自动选格式或格式选择它根据数值的大小,自动选格式或格式选择 输出时占宽度较小的一种,且不输出无意义的零。输出时占宽度较小的一种,且不输出无意义的零。例例: :假设,那么假设,那么 ,f,f,ff,f,f;输出如下:输出如下:123.468
31、000123.468000 1.234680e+0021.234680e+002 123.468123.468 10 10列列 13 13列列 10 10列列阐明阐明: :用格式输出占列,用格式输出占列,用用格式输出占列,用格式输出占列,用格式时,自动从上面两种格式中选择短者今以格式为短格式时,自动从上面两种格式中选择短者今以格式为短故占列,并按格式用小数方式输出,最后故占列,并按格式用小数方式输出,最后3 3个小数位为个小数位为无意义的,不输出,因此输出无意义的,不输出,因此输出123.468123.468,然后右补,然后右补3 3个空格。个空格。格式用得较少。格式用得较少。41v【例【例3
32、.7】 按格式控制字符串要求输出浮点型小数和字按格式控制字符串要求输出浮点型小数和字符型数据符型数据v#includevvoid main()vv int a=15;v float b=123.1234567f;v double c=12345678.1234567;v char d=p;v printf(a=%d,%5d,%o,%Xn,a,a,a,a);v printf(b=%f,%lf,%5.4lf,%en,b,b,b,b);v printf(c=%lf,%f,%8.4lfn,c,c,c);v printf(d=%c,%8cn,d,d);v 423.5 运用运用printf函数本卷须知函数
33、本卷须知1 1假设想输出,那么应该在假设想输出,那么应该在“格式控制字符串中用延格式控制字符串中用延续两个表示。续两个表示。2 2 输出最小宽度输出最小宽度.精度精度 仅用于输出浮点型小数和字仅用于输出浮点型小数和字符串时的格式控制。符串时的格式控制。输出浮点型小数:形如,输出浮点型小数:形如,%-m.nf%-m.nf,f f是一个浮点型变量,是一个浮点型变量,当按此格式输出时,包括小数点共当按此格式输出时,包括小数点共m m列宽按照对齐方式列宽按照对齐方式补齐、取补齐、取n n位小数;当位小数;当f f的实践宽度大于的实践宽度大于m m时,那么按实时,那么按实践宽度输出。践宽度输出。输出字符
34、串:形如,输出字符串:形如,%-m.ns,s%-m.ns,s是一个字符串,当按此格式是一个字符串,当按此格式输出时,按照对齐方式用空格补齐输出时,按照对齐方式用空格补齐m m列、取列、取n n个字符;当个字符;当s s的实践宽度大于的实践宽度大于m m时,那么按实践宽度输出。时,那么按实践宽度输出。3 3printf()printf()函数格式控制字符串可以包含转移字符。函数格式控制字符串可以包含转移字符。43printf函数总结:函数总结:v%d,%o,%x格式符可在格式符可在d,o,x前加上前加上m,l修饰修饰符。符。v%u表示无符号型数据输出。表示无符号型数据输出。v%c按字符型数据输出
35、,只能输出一个字符。按字符型数据输出,只能输出一个字符。v%s格式符在格式符在s前可加前可加m,-m,m.n,-m.n修饰符。修饰符。v%f,%e格式符在格式符在f,e前可加前可加m.n,-m,n修饰符。修饰符。v%g不常用。找不常用。找%f和和%e中占位较短的中占位较短的v留意:留意:m.n修饰符只用于修饰符只用于%s,%f,(%e)中。中。44 3.6 格式输入函数格式输入函数scanf一一. .格式输入函数格式输入函数函数作用:按照变量在内存的地址将变量值存进去。函数作用:按照变量在内存的地址将变量值存进去。普通格式:普通格式:scanfscanf格式控制,地址表列格式控制,地址表列同同
36、printf函数函数是由假设干个地址组成的表列,可以是变量是由假设干个地址组成的表列,可以是变量的的地址,或字符串的首地址地址,或字符串的首地址45【例【例3.8】scanf函数的运用函数的运用 #include void main() int a,b,c; printf(input a,b,cn); scanf(%d%d%d,&a,&b,&c); printf(a=%d,b=%d,c=%d,a,b,c); 在在scanf语句的格式串中由于没有非格式字语句的格式串中由于没有非格式字符在符在“%d%d%d之间作输入时的间隔,因此在之间作输入时的间隔,因此在输入时要用一个或
37、一个以上的空格、回车键、输入时要用一个或一个以上的空格、回车键、Tab键作为每两个输入数之间的间隔。键作为每两个输入数之间的间隔。 2a a在内存中的地在内存中的地址址& &是地址运算符是地址运算符 3.6 格式输入函数格式输入函数scanf46格式字符串格式字符串%* *输入数据宽度输入数据宽度长度长度 类型类型类型:表示输入数据的类型,其格式符和意义如下表类型:表示输入数据的类型,其格式符和意义如下表(2)(2)“* *:抑制符,用以表示输入的数据不赋值给相应的变:抑制符,用以表示输入的数据不赋值给相应的变量,即跳过该输入值。量,即跳过该输入值。如如: : scanf(%d
38、 % scanf(%d %* *d %d,&a,&b);d %d,&a,&b);当输入为:当输入为:1 2 31 2 3时,把时,把1 1赋予赋予a a,2 2被跳过,被跳过,3 3赋予赋予b b。(3)(3)宽度宽度: :用十进制整数指定输入的宽度用十进制整数指定输入的宽度( (即字符数即字符数) ),遇空格,遇空格或不可转换字符那么终了。或不可转换字符那么终了。(4)(4)长度长度: :长度格式符为长度格式符为l l和和h h ,l l表示输入长整型数据表示输入长整型数据( (如如%ld) %ld) 和双精度浮点数和双精度浮点数( (如如%lf)%lf)。h
39、 h表示输入短整型数据。表示输入短整型数据。47运用运用scanfscanf函数还必需留意以下几点:函数还必需留意以下几点:(1)scanf(1)scanf函数中没有精度控制,函数中没有精度控制,如:如:scanf(scanf(“%5.2f%5.2f,&a);,&a);是非法的。是非法的。(2)scanf(2)scanf中要求给出变量地址,如给出变量名那么中要求给出变量地址,如给出变量名那么会会出错。如出错。如 scanf( scanf(“%d%d,a);,a);是非法的,应改为是非法的,应改为 scnaf(%d,&a); scnaf(%d,&a);才是合法的。
40、才是合法的。(3)(3)在输入多个数值数据时,假设格式控制串中没有在输入多个数值数据时,假设格式控制串中没有非非格式字符作输入数据之间的间隔那么可用空格、格式字符作输入数据之间的间隔那么可用空格、TABTAB或或回车符作间隔。回车符作间隔。C C编译在碰到空格、编译在碰到空格、TABTAB、回车或非、回车或非法数据法数据( (如对如对“%d%d输入输入“12A12A时,时,A A即为非法数据即为非法数据) )时时即以为该数据终了。即以为该数据终了。(4)(4)在输入字符数据时,特别需求留意空格符、回车在输入字符数据时,特别需求留意空格符、回车符均作为有效字符运用。假设格式控制串中无非格符均作为
41、有效字符运用。假设格式控制串中无非格式式字符,那么以为一切输入的字符均为有效字符。字符,那么以为一切输入的字符均为有效字符。 2 248练习题:练习题:1.找出以下程序中的错误。找出以下程序中的错误。#includevoid main()int a,b;float c;scanf( %d%d%7.5f ,a,b,c);printf(“%d,%d,%7.5fn,a,b,c);错误错误scanf(“%d%d%f,&a,&b,&c);输入方式哪种是正确的?输入方式哪种是正确的?1345.2 23 4 5.2 33:4:5.2 43 4 5.2 53tab4 5.2 63,4,
42、5.2 73 4 5.2 492.找出以下程序中正确的输入结果。找出以下程序中正确的输入结果。#includevoid main()char a,b,c;scanf( “%c%c%c ,&a,&b,&c);printf(“%c,%c,%cn,a,b,c);1abc 2a b c 3a:b:c 4a b c 5atabb c 6a,b,c 50练习题:练习题:1以下程序段的输出结果是以下程序段的输出结果是( )。int a=12345; printf(%2dn, a); A12 B34 C12345 D提示出错、无结果提示出错、无结果2假设假设x和和y均定义为均定义为in
43、t 型,型,z定义为定义为double型,型,以下不合法的以下不合法的scanf()函数调用语句为函数调用语句为 。Ascanf%d%lx,%le,&x,&y,&z;Bscanf (%2d*%d%lf , &x, &y, &z);Cscanf(%x%*d%o, &x,&y);D. scanf(%x%o%6.2f, &x,&y,&z);CD513有如下程序段:有如下程序段: int x1,x2;char y1,y2;scanf%d%c%d%c,&x1,&y1,&x2,&y2;
44、假设要求假设要求x1、x2、y1、y2的值分别为的值分别为10、20、A、B,正确的数据输入是,正确的数据输入是 。注:。注:代表空格代表空格A10A20B B10A20BC10 A20 B D10A20BA52【例【例3.63.6】数据的格式化输入输出。输入一学】数据的格式化输入输出。输入一学生的学号生的学号8 8位数字、生日年位数字、生日年- -月月- -日、日、性别性别M M:男,:男,F F:女及三门功课语文、数:女及三门功课语文、数学、英语的成果,现要求计算该学生的总分学、英语的成果,现要求计算该学生的总分和平均分,并将该学生的全部信息输出包括和平均分,并将该学生的全部信息输出包括总
45、分、平均分。总分、平均分。#includevoid main() unsigned long no; /学号学号 unsigned int year,month,day; /生日生日 unsigned char sex; /性别性别 float chinese,math,english; float total,average; printf(input the students NO:); scanf(%8ld,&no); printf(input the students Birthday(yyyy-mm-dd): ); scanf(%4d-%2d-%2d,&year,&a
46、mp;month,&day); fflush(stdin); /去除键盘缓冲区去除键盘缓冲区 printf(input the students Sex(M/F); scanf(%c,&sex); printf(input the students Score(chinese,math,english): ); scanf(%f,%f,%f,&chinese,&math,&english); total=chinese+math+english; average=total/3;printf(n=No=birthday=sex=chinese=math=
47、english=total=averagen); printf(%08ld %4d-%02d-%02d %c %-5.1f %-5.1f %-5.1f %-5.1f %-5.1fn, no,year,month,day,sex,chinese, math,english,total,average); 53 3.7 顺序构造程序设计举例顺序构造程序设计举例例例3.10 3.10 输入三角形的三边输入三角形的三边长,求三角形面积。长,求三角形面积。假设:三个边长假设:三个边长a a,b b,c c能能构成三角形。构成三角形。知面积公式:知面积公式:area=area=s=(a+b+c)s=(a+
48、b+c)* *0.50.5c)b)(sa)(ss(s开场开场输入三边长输入三边长计算计算s s计算面积计算面积终了终了54 3.7 顺序构造程序设计举例续顺序构造程序设计举例续#include#include#include#includevoid main()void main()float a,b,c,s,area;float a,b,c,s,area;scanf(scanf(“%f,%f,%f%f,%f,%f,&a,&b,&c);,&a,&b,&c);s=1.0/2s=1.0/2* *(a+b+c);(a+b+c);area=sqrt(sa
49、rea=sqrt(s* *(s-a)(s-a)* *(s-b)(s-b)* *(s-c);(s-c);printf(printf(“a=%7.2f,a=%7.2f,b=%7.2fb=%7.2f,c=%7.2f, c=%7.2f, s=%7.2fns=%7.2fn,a,b,c,s);,a,b,c,s);printf(printf(“area=%7.2fnarea=%7.2fn,area);,area);数学函数库数学函数库由于要用到其由于要用到其中的中的sqrt函数函数运转情况:运转情况:3 3,4 4,6 6a=a=3.00,3.00,b=b=4.00,4.00,c=c=6.00,6.00,s= s= 6.506.50area=area=5.335.3355 3.7 顺序构造程序设计举例顺序构造程序设计举例(续续)例例3.11 3.11 求求x2x2方程的根。方程的根。 a a,b b,c c由键盘输入,设由键盘输入,设 。众所周知,一元二次方程式的根为众所周知,一元二次方程式的根为x1= x2= x1= x2= 可以将上面的分式分为两项:可以将上面的分式分为两项:p= p= , q= x1=p+qq= x1=p+q, x2=p-qx2=p-qacb42aacbb242aacbb242ab2aa
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 系统规划与管理师考前优化反思的重要性与常见策略试题及答案
- 育婴师亲子交流考题及答案
- 育婴师考试成功的影响因素分析试题及答案
- 日照地理面试题及答案
- 知识产权的社会公众认知试题及答案
- 婚姻法 司法试题及答案
- 理论联系实践2024年专利代理人资格考试试题及答案
- 技能鉴定测试题及答案
- 分析光电工程师证书考试的趋势与机遇试题及答案
- 正确认识与应对饮食恐懼症试题及答案
- 检验索赔仲裁和不可抗力
- 与圆有关的最值问题课件
- 全大学进阶英语综合教程2综合训练第一单元(含答案)
- 全旅馆业前台从业人员资格证考试答案解析
- 广东省护士延续注册健康体检表
- 专业工程分包业主审批表
- 活动物料清单
- 精细化工产品公司企业经营战略方案
- 冠状动脉CT解剖详解
- 地下连续墙钢筋笼起重吊装专项施工方案
- 单值和移动极差X-MR控制图
评论
0/150
提交评论