24
Ch3 顺顺顺顺顺顺顺顺 顺顺顺顺顺顺顺顺顺顺顺顺顺顺顺

Ch3 顺序结构程序设计

  • Upload
    hyman

  • View
    123

  • Download
    4

Embed Size (px)

DESCRIPTION

Ch3 顺序结构程序设计. 合肥师范学院计算机科学与技术系. 本章要点. C 程序的语句 数据的输入和输出 程序举例. §3.1 C 程序的语句. 一、说明语句. 说明语句 包括 变量(或数组)定义语句和函数声明语句 两种,而最常用的是变量(或数组)定义语句,通过变量定义语句确定变量的类型与初值。例如 :. char ch1 , ch2 ; int x , y , z=1 ; float a , b , c ; double d1 , d2 ;. 二、执行语句. 执行语句 可分为以下五类 : - PowerPoint PPT Presentation

Citation preview

Page 1: Ch3   顺序结构程序设计

Ch3 顺序结构程序设计

合肥师范学院计算机科学与技术系

Page 2: Ch3   顺序结构程序设计

本章要点本章要点1. C 程序的语句 2. 数据的输入和输出 3. 程序举例

Page 3: Ch3   顺序结构程序设计

一、说明语句一、说明语句说明语句包括变量(或数组)定义语句和函数声明语句两种,而最常用的是变量(或数组)定义语句,通过变量定义语句确定变量的类型与初值。例如 :

char ch1 , ch2 ; int x , y , z=1 ; float a , b , c ; double d1 , d2 ;

§3.1 C 程序的语句

Page 4: Ch3   顺序结构程序设计

执行语句可分为以下五类: 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 ; }

二、执行语句二、执行语句

Page 5: Ch3   顺序结构程序设计

3 、空语句。“;”4 、函数调用语句。如: printf(“**book**”) ; 5 、控制语句 (9 种 ) 。如: if 语句, for 语句等

① 条件语句。用于控制分支结构的语句;如 if语句、 switch 语句等。

② 循环语句。用于控制循环结构的语句;如 while 语句、 do while 语句、 for 语句等。

③ 转向语句。转向语句主要有 goto 语句、 break 语句、 continue 语句、 return 语句等。

Page 6: Ch3   顺序结构程序设计

C 语言中没有提供输入输出语句,其输入输出操作,是通过 C 语言系统所提供的输入输出函数 来实现的。

1 、默认的标准输入输出设备是键盘和显示器。2 、输入输出函数被放在标准的 I/O 函数库中,

库中的公用信息存放在头文件 stdio.h 中,若要使用这些输入输出函数,必须在源程序的开始使用预处理命令:

#include " stdio.h "

数据的输入和输出

Page 7: Ch3   顺序结构程序设计

一、字符输入函数一、字符输入函数 getchar( )getchar( ) 格式: getchar( ) 功能:从标准输入设备上输入一个字符。函

数的值就是从输入设备得到的字符。   如: char ch; ch=getchar( ); 注意: getchar( ) 只能接收一个字符,而且

只有在用户敲入回车键 <Enter> 后,读入才开始执行。

Page 8: Ch3   顺序结构程序设计

二、字符输出函数二、字符输出函数 putchar( )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

Page 9: Ch3   顺序结构程序设计

三、 格式输出函数三、 格式输出函数 printf( )printf( ) 格式: printf (“ 控制字符串”,输出项列表 ) 功能:按控制字符串规定的输出格式,将输出项

列表中的各输出项的值依次输出到系统指定的标准输出设备(显示器)上。

其中:控制字符串包括: ① 格式说明: %[m . n] [l] 格式字符 作用是将输出的数据转换为格式字符规定的格式,然后输出。

Page 10: Ch3   顺序结构程序设计

格式字符 意 义d 以十进制有符号形式输出整型数据o 以八进制无符号形式输出整型数据(不带前导 0 )x 以十六进制无符号形式输出整型数据(不带前导 0x )u 以十进制无符号形式输出整型数据c 输出一个字符

s输出字符串中的字符,直到遇到“ \0” ,或者输出由精度指定的字符数

f 以小数形式输出单精度和双精度数据,隐含的小数位数为 6

e以规格化的指数形式输出单精度和双精度数据,隐含的小数位数为 6

g 按 e 和 f 格式中宽度较短的一种输出,不输出无意义的 0

printf (“ 控制字符串”,输出项列表 )printf (“ 控制字符串”,输出项列表 )

Page 11: Ch3   顺序结构程序设计

字 符 意 义

字母 l 用于长整型整数的输出,可加在格式符 d 、 o 、 x 、 u前面

m (正整数)指定输出数据所占的宽度,若输出的数据位数 >m ,为保证数据的正确性,则按实际位数输出;如果数据的位数 <m ,则多出的位数补空格

.n (正整数).n称为精度。对实数,表示输出n位小数;对字符串,表示截取的字符个数;对于整数,指定必须输出的数字个数,若输出的数字少于指定的个数,则前面补 0 ,否则按原样输出         

- 输出的数字或字符左对齐+ 使输出的数字总是带“+”或“-”号0 在输出的数据前加前导“ 0”

#使输出的八进制数(或十六进制数)带前导 0 (或 0x )

printf (“ 控制字符串”,输出项列表 )printf (“ 控制字符串”,输出项列表 )

Page 12: Ch3   顺序结构程序设计

输出项列表:是需要输出的一些数据,可以是一个或者是多个输出项,当有多个输出项时,输出项之间用逗号“,”隔开,输出项可以是常量、变量或表达式。输出项的个数和类型必须与控制字符串的格式字符的个数、类型相匹配。

② 普通字符:原样输出的字符;它可以包含可打印的字符和不可打印的字符,可打印的字符在“控制字符串”中直接用字符符号表示,不可打印的字符用转义字符表示,如换行‘ \n’,水平制表‘ \t’等。

printf (“ 控制字符串”,输出项列表 )printf (“ 控制字符串”,输出项列表 )

Page 13: Ch3   顺序结构程序设计

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

运行结果为: Hello computer a,97 123, 173, 7b, 123 +8, -8, 0173, 0x7b 00123,123, 123,00123 12.345600 12.345612.345612.346

Page 14: Ch3   顺序结构程序设计

例 : 设 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

例 : 设 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 12478124783027630be1247812478

1274.6780001.274678e+003 1274.681274.68 1.3e+0031.3e+003

HelloHello Hello HeHe

Page 15: Ch3   顺序结构程序设计

注意:( 1)在格式控制字符串中,格式说明与输出项从左到右在类

型上必须一一对应匹配。对 long 型数据要使用 %ld 格式输出。

( 2)在格式控制字符串中,格式说明与输出项的个数应该相同。如果格式说明的个数少于输出项的个数,则多余的输出项不输出;如果格式说明的个数多于输出项的个数,则对于多余的格式将输出项不定值(或 0值)。

( 3)在格式控制字符串中,除了合法的格式说明外,可以包含任意的合法字符(包括转义字符),这些字符在输出时“原样照印”。

( 4)若需输出百分号 %,则在格式控制字符串中用“ %%” 表示。

( 5)在输出语句中改变输出变量的值,如: int a=5; printf(“%d%d\n”,a,a++);

( 6) printf 函数的返回值通常是本次调用中输出字符的个数。

注意:( 1)在格式控制字符串中,格式说明与输出项从左到右在类

型上必须一一对应匹配。对 long 型数据要使用 %ld 格式输出。

( 2)在格式控制字符串中,格式说明与输出项的个数应该相同。如果格式说明的个数少于输出项的个数,则多余的输出项不输出;如果格式说明的个数多于输出项的个数,则对于多余的格式将输出项不定值(或 0值)。

( 3)在格式控制字符串中,除了合法的格式说明外,可以包含任意的合法字符(包括转义字符),这些字符在输出时“原样照印”。

( 4)若需输出百分号 %,则在格式控制字符串中用“ %%” 表示。

( 5)在输出语句中改变输出变量的值,如: int a=5; printf(“%d%d\n”,a,a++);

( 6) printf 函数的返回值通常是本次调用中输出字符的个数。

Page 16: Ch3   顺序结构程序设计

四、格式输入函数四、格式输入函数 scanf( )scanf( ) 格式: scanf (“ 控制字符串”,地址表列 ) 功能 : 按控制字符串规定的输入格式,从系统指定的标准输

入设备(键盘)上将输入的数据依次存到输入项地址表列所指定的内存单元中。

地址表列:变量的地址表,即: &变量名, &变量名,…

控制字符串:与 printf() 函数类似。

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); }

运行结果:从键盘上输入: 3 12 110 屏幕上则显示: a=3 , b=12 , c=110 s=125

运行结果:从键盘上输入: 3 12 110 屏幕上则显示: a=3 , b=12 , c=110 s=125

Page 17: Ch3   顺序结构程序设计

注意:( 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”格式输入字符时,空格符、制表符或回车符、

“转义字符”等都是有效字符。但是,如果在格式说明之间加入了空格后,这时输入字符中的空格符、制表符和回车符都将作为间隔符。

Page 18: Ch3   顺序结构程序设计

§3.3 程序举例顺序程序:1.程序的执行顺序与语句的顺序

一致2.程序的静态结构与动态执行过

程一致

Page 19: Ch3   顺序结构程序设计

例 : 已知: 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.5scanf (“%d ,%d, %f ” ,&a , &b, &d ) 10,11,12.5 a=10,b=11,d=12.5scanf (“%d ,%*d, %f ” ,&a , &d ) 10,11,12.5 a=10,d=12.5scanf (“%2d %2d ” ,&a , &b ) 10113 a=10,b=11scanf (“%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=48scanf (“%7.2f ” ,&d )  这是错误格式。因为输入数据时不能规定精度。

例 : 已知: 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.5scanf (“%d ,%d, %f ” ,&a , &b, &d ) 10,11,12.5 a=10,b=11,d=12.5scanf (“%d ,%*d, %f ” ,&a , &d ) 10,11,12.5 a=10,d=12.5scanf (“%2d %2d ” ,&a , &b ) 10113 a=10,b=11scanf (“%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=48scanf (“%7.2f ” ,&d )  这是错误格式。因为输入数据时不能规定精度。

§3.3 程序举例

Page 20: Ch3   顺序结构程序设计

例:已知例:已知 aa == 5.0 5.0 ,, bb == 2.5 2.5 ,, c=7.8c=7.8 ,,计算计算

运行结果:y=1.602041

运行结果:y=1.602041

#include " stdio.h "#define PI 3.14main( ){ float a=5.0 , b=2.5 , c=7.8 , y ; y=PI*a*b/(a+b*c) ; printf( " y=%f\n ", y) ;}

cba

aby

*

Page 21: Ch3   顺序结构程序设计

例:从键盘输入两个整数赋给变量例:从键盘输入两个整数赋给变量 aa 和和 bb ,要,要求交换变量求交换变量 aa 和和 bb 中的值。中的值。

#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

运行结果:输入 : 22 66<Enter>输出 : a=22 , b=66 a=66 , b=22

Page 22: Ch3   顺序结构程序设计

#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

运行结果:输入: A<Enter>输出: A , 65 a , 97

Page 23: Ch3   顺序结构程序设计

思考题1. 改错题:以下程序 ex3_1.c 多处有错,请

改正 .

2. 编程题:输入一个字符,求其 ASCII 码、前导字符、后继字符。

Page 24: Ch3   顺序结构程序设计

特别说明 实验指导在实验前,实验参考答案在提交实

验报告后发送到班级的公共邮箱,请同学们做好实验前的预习准备及实验后的总结。