240 likes | 505 Views
Ch3 顺序结构程序设计. 合肥师范学院计算机科学与技术系. 本章要点. C 程序的语句 数据的输入和输出 程序举例. §3.1 C 程序的语句. 一、说明语句. 说明语句 包括 变量(或数组)定义语句和函数声明语句 两种,而最常用的是变量(或数组)定义语句,通过变量定义语句确定变量的类型与初值。例如 :. char ch1 , ch2 ; int x , y , z=1 ; float a , b , c ; double d1 , d2 ;. 二、执行语句. 执行语句 可分为以下五类 :
E N D
Ch3 顺序结构程序设计 合肥师范学院计算机科学与技术系
本章要点 • C程序的语句 • 数据的输入和输出 • 程序举例
§3.1 C程序的语句 一、说明语句 说明语句包括变量(或数组)定义语句和函数声明语句两种,而最常用的是变量(或数组)定义语句,通过变量定义语句确定变量的类型与初值。例如: char ch1,ch2; int x,y,z=1; float a,b,c; double d1,d2;
二、执行语句 执行语句可分为以下五类: • 1、表达式语句。如:k=k+1; 为赋值语句 • k+1;为表达式语句 • k++;为自增1语句 • a=(b=5)+(c=3); • 2、复合语句。如:{ z=x+y;t=z/100;} • 一个复合语句在语法上作为一条语句处理,在一对花括号中的语句数量不限。 • 复合语句花括号必须配对;右花括号的后面不加分号。 • 在复合语句中,不仅可以有执行语句,还可以有说明语句.如:{ int a=5; b=a*a; }
3、空语句。“;” 4、函数调用语句。如:printf(“**book**”); 5、控制语句(9种)。如:if语句,for语句等 • 条件语句。用于控制分支结构的语句;如if语句、switch语句等。 • 循环语句。用于控制循环结构的语句;如while语句、do while语句、for语句等。 • 转向语句。转向语句主要有goto语句、break语句、continue语句、return语句等。
数据的输入和输出 C语言中没有提供输入输出语句,其输入输出操作,是通过C语言系统所提供的输入输出函数来实现的。 1、默认的标准输入输出设备是键盘和显示器。 2、输入输出函数被放在标准的I/O函数库中,库中的公用信息存放在头文件stdio.h中,若要使用这些输入输出函数,必须在源程序的开始使用预处理命令: #include "stdio.h"
一、字符输入函数getchar( ) 格式:getchar( ) 功能:从标准输入设备上输入一个字符。函数的值就是从输入设备得到的字符。 如:char ch; ch=getchar( ); 注意:getchar( )只能接收一个字符,而且只有在用户敲入回车键<Enter>后,读入才开始执行。
二、字符输出函数putchar( ) 格式: putchar(ch) 功能:将ch的值向标准输出设备输出。其中ch可以是字符型变量,整型变量,字符型常量。也可以输出转义字符 。 # include “stdio.h ” main ( ) { char a, b, c ; a=‘T’; b=‘e’; c=‘a’; putchar (a); putchar (b); putchar (c); } 程序运行结果:Tea
三、 格式输出函数printf( ) 格式: printf (“控制字符串”,输出项列表) 功能:按控制字符串规定的输出格式,将输出项列表中的各输出项的值依次输出到系统指定的标准输出设备(显示器)上。 其中:控制字符串包括: ① 格式说明:%[m.n] [l] 格式字符 作用是将输出的数据转换为格式字符规定的格式,然后输出。
printf (“控制字符串”,输出项列表) ② 普通字符:原样输出的字符;它可以包含可打印的字符和不可打印的字符,可打印的字符在“控制字符串”中直接用字符符号表示,不可打印的字符用转义字符表示,如换行‘\n’,水平制表‘\t’等。 输出项列表:是需要输出的一些数据,可以是一个或者是多个输出项,当有多个输出项时,输出项之间用逗号“,”隔开,输出项可以是常量、变量或表达式。输出项的个数和类型必须与控制字符串的格式字符的个数、类型相匹配。
main ( ) { char ch=‘a’; int a=123 ; float x=12.3456 ; printf ( “Hello computer \n”); printf (“ %c, %d \n”, ch , ch ); printf (“ %d,%o,%x,%u \n” , a , a , a , a); printf (“ %+d,%+d,%#o,%#x \n” , 8 , -8 , a , a); printf (“ %.5d,%.2d,%5d,%05d \n” , a , a , a , a); printf (“ %f %10.4f %5.4f %2.3 f\n” , x , x, x, x); } 运行结果为: Hello computer a,97 123, 173, 7b, 123 +8, -8, 0173, 0x7b 00123,123, 123,00123 12.345600 12.345612.345612.346
例: 设 a=12478,b= 1274.678 , c=’Hello’ 格式控制符 a输出格式 b输出格式 c输出格式 %d %8d %3d %o %x %u %-8d %f %e %8.2f %6.2f %10.2e %-10.2e %s %3s %7s %7.2s %-7.2s 12478 12478 12478 30276 30be 12478 12478 1274.678000 1.274678e+003 1274.68 1274.68 1.3e+003 1.3e+003 Hello Hello Hello He He
注意: (1)在格式控制字符串中,格式说明与输出项从左到右在类型上必须一一对应匹配。对 long型数据要使用 %ld格式输出。 (2)在格式控制字符串中,格式说明与输出项的个数应该相同。如果格式说明的个数少于输出项的个数,则多余的输出项不输出;如果格式说明的个数多于输出项的个数,则对于多余的格式将输出项不定值(或0值)。 (3)在格式控制字符串中,除了合法的格式说明外,可以包含任意的合法字符(包括转义字符),这些字符在输出时“原样照印”。 (4)若需输出百分号%,则在格式控制字符串中用“%%”表示。 (5)在输出语句中改变输出变量的值,如:int a=5; printf(“%d%d\n”,a,a++); (6)printf函数的返回值通常是本次调用中输出字符的个数。
四、格式输入函数scanf( ) 格式:scanf (“控制字符串”,地址表列) 功能: 按控制字符串规定的输入格式,从系统指定的标准输入设备(键盘)上将输入的数据依次存到输入项地址表列所指定的内存单元中。 地址表列:变量的地址表,即:&变量名,&变量名,… 控制字符串:与printf()函数类似。 运行结果:从键盘上输入: 3 12 110 屏幕上则显示: a=3 , b=12 , c=110 s=125 main ( ) { int a , b , c ; scanf (“ %d %d %d”, &a , &b , &c); printf (“ a=%d , b=%d , c=%d \n” , a , b , c); printf (“ s=%d” , a+b+c); }
注意: (1)输入long整型数据时,在“%”和“d”之间必须加“l”;输入double型数据时,在“%”和“f(e)”之间也必须加l。否则得不到正确的数据。 (2)当指定输入数据所占的宽度m时,系统自动按宽度m截取所需数据。但不能对实型数据指定小数位的宽度。 例: scanf(“%4d%2d”,&a,&b); 若输入:123456 则将1234→a ,56→b scanf(“%7.2f”,&a); 不合法。 (3)输入项与控制字符串中的格式说明从左到右在类型上必须一一对应匹配。 (4)数据输入的合法结束:空格(一个或多个)、回车、TAB键、数据域宽,非法输入。 (5)在用“%c”格式输入字符时,空格符、制表符或回车符、“转义字符”等都是有效字符。但是,如果在格式说明之间加入了空格后,这时输入字符中的空格符、制表符和回车符都将作为间隔符。
§3.3 程序举例 顺序程序: • 程序的执行顺序与语句的顺序一致 • 程序的静态结构与动态执行过程一致
§3.3 程序举例 例: 已知:char c1 , c2 , c3 ; int a , b ; float d , e; 格式输入语句 输入数据的格式 变量获得的值 scanf (“%d %d %f ” ,&a , &b, &d )10 11 12.5 a=10,b=11,d=12.5 scanf (“%d ,%d, %f ” ,&a , &b, &d )10,11,12.5 a=10,b=11,d=12.5 scanf (“%d ,%*d, %f ” ,&a , &d )10,11,12.5 a=10,d=12.5 scanf (“%2d %2d ” ,&a , &b ) 10113 a=10,b=11 scanf (“%c%c %c ” ,&c1 , &c2 , &c3 )ABC c1=’A’, c2=’B’, c3=’C’ A B C c1=’A’, c2=’ ‘, c3=’B’ scanf (“%d %c%d ” ,&a , &c1 ,&b )123c48D a=123, c1=’c’ , b=48 scanf (“%7.2f ” ,&d )这是错误格式。因为输入数据时不能规定精度。
p ab = y + a b * c 例:已知a=5.0 ,b=2.5 ,c=7.8,计算 #include "stdio.h" #define PI 3.14 main( ) { float a=5.0,b=2.5,c=7.8,y; y=PI*a*b/(a+b*c); printf("y=%f\n",y); } 运行结果: y=1.602041
例:从键盘输入两个整数赋给变量a和b,要求交换变量a和b中的值。例:从键盘输入两个整数赋给变量a和b,要求交换变量a和b中的值。 #include "stdio.h" main( ) { int a,b,t; sanf(“%d%d”,&a,&b); printf("a=%d,b=%d\n",a,b); t=a;a=b;b=t; printf("a=%d,b=%d\n",a,b); } 运行结果: 输入: 22 66<Enter> 输出: a=22,b=66 a=66,b=22
例:从键盘输入一个大写字母,要求改用小写字母输出。程序代码如下:例:从键盘输入一个大写字母,要求改用小写字母输出。程序代码如下: #include "stdio.h" main() { char c1, c2; c1=getchar ( ); printf("%c , %d", c1, c1); c2=c1+32; printf("%c, %d", c2, c2); } 运行结果: 输入:A<Enter> 输出:A , 65 a , 97
思考题 • 改错题:以下程序ex3_1.c多处有错,请改正. • 编程题:输入一个字符,求其ASCII码、前导字符、后继字符。
特别说明 实验指导在实验前,实验参考答案在提交实验报告后发送到班级的公共邮箱,请同学们做好实验前的预习准备及实验后的总结。