410 likes | 614 Views
第 3 章 顺序结构程序设计. 3.1 顺序结构的设计思想 3.2 实现顺序结构的语句 3.3 顺序结构程序设计举例. 3.1 顺序结构的设计思想. 顺序结构是程序中最简单的一种结构。 组成顺序结构 程序的最基本语句是 赋值语句 和 输入输出语句 。 【 例 3-1】 计算两个整数的差并输出结果。 该算法的 伪代码 如下: 输入 a , b result ← a-b 输出 result. 3.1 顺序结构的设计思想. 本题的程序 如下: main() { int a,b,result;
E N D
第3章 顺序结构程序设计 • 3.1 顺序结构的设计思想 • 3.2 实现顺序结构的语句 • 3.3 顺序结构程序设计举例
3.1 顺序结构的设计思想 • 顺序结构是程序中最简单的一种结构。组成顺序结构程序的最基本语句是赋值语句和输入输出语句。 • 【例3-1】计算两个整数的差并输出结果。 • 该算法的伪代码如下: • 输入a,b • result ← a-b • 输出result
3.1 顺序结构的设计思想 本题的程序如下: main() { int a,b,result; scanf("%d, %d",&a,&b); /*从键盘接收两个整数*/ result=a-b; /*计算两数的差*/ printf("a-b=%d",result); /*输出结果*/ } 【例3-1】程序运行结果下图所示。
3.2 实现顺序结构的语句 • 3.2.1 赋值语句 • 3.2.2 标准的输入输出
3.2.1 赋值语句 • 赋值语句,是由赋值表达式再加上分号构成的表达式语句。其一般形式为: • 变量=表达式; • 赋值语句的功能和特点都与赋值表达式相同。 • 在赋值语句的使用中需要注意以下几点: • (1)由于在赋值符“=”右边的表达式也可以又是一个赋值表达式,因此,下述形式: • 变量=(变量=表达式); • 是成立的,从而形成嵌套的情形。其展开之后的一般形式为: • 变量=变量=…=表达式;
3.2.1 赋值语句 • (2)注意在变量说明中给变量赋初值和赋值语句的区别。 例如: int a=5,b,c; • (3)在变量说明中,不允许连续给多个变量赋初值。 • (4)注意赋值表达式和赋值语句的区别。 • (5)赋值语句中的“=”是赋值号,而不是数学意义上的等号,赋值号两侧的内容不能任意调换。
3.2.2 标准的输入输出 • 1. printf函数(格式输出函数) • printf函数称为格式输出函数,其关键字最末一个字母f即为“格式”(format)之意。其功能是按用户指定的格式,把指定的数据输出到显示器屏幕上。
3.2.2 标准的输入输出 • 1)printf函数调用的一般形式 • printf("格式控制字符串",输出表列); • 其中格式控制字符串用于指定输出格式。 • %d表示按十进制整型输出。 • %ld表示按十进制长整型输出。 • %c表示按字符型输出等。 • 非格式字符串在输出时原样输出。 格式字符串和各输出项在数量和类型上应该一一对应。
3.2.2 标准的输入输出 2)printf格式字符串 在Turbo C中格式字符串的一般形式为: [标志][输出最小宽度][.精度][长度]类型 其中方括号[]中的项为可选项。 (1)类型。类型字符用于表示输出数据的类型。 (2)标志。标志字符为-、+、#、空格四种。 (3)输出最小宽度。 (4)精度。精度格式符以“.”开头,后跟十进制整数。 (5)长度。长度格式符为h、l两种,h表示按短整型输出,l表示按长整型输出。
3.2.2 标准的输入输出 【例3-3】printf函数的使用。 main() { int a=15; float b=123.1234567; double c=12345678.1234567; char d='p'; printf(“a=%d,%5d,%o,%x\n”,a,a,a,a); /* 按照不同格式显示整型变量*/ printf(“b=%f,%lf,%5.4lf,%e\n”,b,b,b,b); /* 按照不同格式显示float型变量*/
3.2.2 标准的输入输出 printf("c=%lf,%f,%8.4lf\n",c,c,c); /*按照不同格式显示double型变量*/ printf("d=%c,%8c\n",d,d); /*按照不同格式显示字符型变量*/ } 【例3-3】程序运行结果如下图所示。
3.2.2 标准的输入输出 【例3-5】 main() { int i=8; printf("%d\n",++i); printf("%d\n",--i); printf("%d\n",i++); printf("%d\n",i--); printf("%d\n",-i++); printf("%d\n",-i--); } 【例3-5】程序运行结果如下图所示。
3.2.2 标准的输入输出 • 2. scanf函数(格式输入函数) • scanf函数称为格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。 • 1)scanf函数的一般形式 • scanf("格式控制字符串",地址表列); • 其中,格式控制字符串的作用与printf函数相同,但不能显示非格式字符串,也就是不能显示提示字符串。地址表列中给出各变量的地址。地址是由地址运算符“&”后跟变量名组成的。
3.2.2 标准的输入输出 2)scanf格式字符串 scanf格式字符串的一般形式为: %[*][输入数据宽度][长度]类型 其中有方括号[]的项为任选项。 (1)类型。表示输入数据的类型。 (2)“*”符。用以表示该输入项读入后不赋予相应的变量,即跳过该输入值。 (3)宽度。用十进制整数指定输入的宽度(即字符数)。 (4)长度。长度格式符为l和h。
3.2.2 标准的输入输出 • 使用scanf函数还必须注意以下几点: • (1)scanf函数中没有精度控制。 • (2)scanf中要求给出变量地址。 • (3)在输入多个数值数据时,若格式控制串中没有非格式字符作为输入数据之间的间隔则可用空格、TAB或回车作间隔。
3.2.2 标准的输入输出 (4)在输入字符数据时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。 (5)如果格式控制串中有非格式字符则输入时也要输入该非格式字符。 (6)如输入的数据与输出的类型不一致时,虽然编译能够通过,但结果将不正确。
3.2.2 标准的输入输出 例如: scanf("%c%c%c",&a,&b,&c); 输入为: d e f 则把'd'赋予a,' '(空格)赋予b,'e'赋予c。 只有当输入为: def 时,才能把'd'赋于a,'e'赋予b,'f'赋予c。 如果在格式控制中加入空格作为间隔。 如: scanf ("%c %c %c",&a,&b,&c); 则输入时各数据之间可加空格。
3.2.2 标准的输入输出 【例3-7】 main() { char a,b; printf("input character a,b\n"); scanf(“%c%c”,&a,&b); /*scanf函 数"%c%c"中没有空格*/ printf("%c%c\n",a,b); }
3.2.2 标准的输入输出 【例3-7】程序运行结果如下图所示。
3.2.2 标准的输入输出 【例3-9】 main() { int a; printf("input a number\n"); scanf("%d",&a); /*输入数据类型为整型*/ printf(“%ld”,a); /*输出语句的格式串中说明为长 整型*/ } 【例3-9】程序运行结果如下图所示。
3.2.2 标准的输入输出 【例3-10】 main() { long a; printf("input a long integer\n"); scanf("%ld",&a); /*输入数据类型为长整型*/ printf("%ld",a); /*输出语句的格式串中说明为长整型*/ } 【例3-10】程序运行结果如图3-10所示。
3.2.2 标准的输入输出 【例3-12】 main() { int a; long b; float f; double d; char c; printf(“\nint:%d\nlong:%d\nfloat:%d\ndouble:%d\nchar:%d\n”,sizeof(a),sizeof(b),sizeof(f),sizeof(d),sizeof(c)); /*输出各种数据类型的字节长度*/ }
3.2.2 标准的输入输出 【例3-12】程序运行结果如下图所示。
3.2.2 标准的输入输出 • 3. putchar函数(字符输出函数) • putchar函数是字符输出函数,其功能是在显示器上输出单个字符。其一般形式为: • putchar(字符变量) • 对控制字符则执行控制功能,不在屏幕上显示。 • 使用本函数前必须要用文件包含命令:#include<stdio.h>或#include“stdio.h”。
3.2.2 标准的输入输出 【例3-13】输出单个字符。 #include<stdio.h> main() { char a='B',b='o',c='k'; putchar(a);putchar(b);putchar(b);putchar(c);putchar('\t'); putchar(a);putchar(b); putchar('\n'); putchar(b);putchar(c); }
3.2.2 标准的输入输出 【例3-13】程序运行结果如下图所示。
3.2.2 标准的输入输出 • 4. getchar函数(字符输入函数) • getchar函数的功能是从键盘上输入一个字符。其一般形式为: • getchar(); • 通常把输入的字符赋予一个字符变量,构成赋值语句,如: • char c; • c=getchar();
3.2.2 标准的输入输出 【例3-14】输入单个字符。 #include<stdio.h> main() { char c; printf("input a character\n"); c=getchar(); putchar(c); } 【例3-14】程序运行结果如下图所示。
3.2.2 标准的输入输出 • 使用getchar函数还应注意几个问题: • (1)getchar函数只能接受单个字符,输入数字也按字符处理。输入多于一个字符时,只接收第一个字符。 • (2)使用本函数前必须包含文件“stdio.h”。 • (3)在Turbo C屏幕下运行含本函数程序时,将退出Turbo C屏幕进入用户屏幕等待用户输入。输入完毕再返回Turbo C屏幕。
3.2.2 标准的输入输出 • 5. puts和gets函数 • 1)puts()函数 • puts()函数用来向标准输出设备(屏幕)输出字符串并换行, 不能输出数值或进行格式变换,其调用格式为: • puts(str); • 其中str为字符串变量。
3.2.2 标准的输入输出 【例3-15】puts()函数。 main() { char string[] = "This is a pen.\n"; puts(string); puts("Hello, my friend."); } 【例3-15】程序运行结果如图3-15所示。
3.2.2 标准的输入输出 2)gets()函数 gets()函数用来从标准输入设备(键盘)读取字符串直到回车结束,但回车符不属于这个字符串。其调用格式为: gets(str); 其中str为字符串变量。
3.2.2 标准的输入输出 【例3-16】gets()函数。 main() { char string[80]; printf("Input a string:"); gets(string); /*输入字符串*/ printf("The string input was: %s\n", string); } 【例3-16】程序运行结果如下图所示。
3.3 顺序结构程序设计举例 【例3-17】给出一个大写字母,要求按照字母顺序打印出3个字母,指定的字母是三个字母中间的一个字母,输入的字母不能为A或Z。 编程思路: 由于字符变量在内存中存储的实际上是其ASCII码值,而26个英文字母的ASCII码值是连续的,所以要求出某个字母的两个相邻字母,只要直接在该字符变量上减一和加一即可。
3.3 顺序结构程序设计举例 源程序: #include <stdio.h> main() { int c1,c2; char c; printf("Enter a capital letter: \n"); c=getchar(); /*输入大写字母*/ c1=c-1; /*求该字母的前一个字母*/ c2=c+1; /*求该字母的后一个字母*/ printf("%c %c %c\n",c1,c,c2); /*输出三个字母*/ }
3.3 顺序结构程序设计举例 【例3-17】程序运行结果如下图所示。
3.3 顺序结构程序设计举例 【例3-18】求三个数的平均数。 编程思路: 输入三个整数,把它们相加再除以3就能得出平均数。为提高精度,结果变量应设为float型,因为除法运算的结果可能是小数,另外除数也应该写成float型(即3.0),这样除法运算就能得出float型的结果。
3.3 顺序结构程序设计举例 源程序: main() { int a,b,c; float ave; scanf("%d,%d,%d",&a,&b,&c); /*输入三个数*/ ave=(a+b+c)/3.0; /*求平均数*/ printf("%d,%d,%d\n",a,b,c); printf("ave=%7.2f\n",ave); /*显示结果*/ } 【例3-18】程序运行结果如下图所示。
3.3 顺序结构程序设计举例 【例3-19】用*号输出字母C的图案。 编程思路: 可先用*号在纸上写出字母C,再分行输出。 源程序: main() { printf(" ****\n"); printf(" *\n"); printf(" * \n"); printf(" ****\n"); }
3.3 顺序结构程序设计举例 【例3-19】程序运行结果如下图所示。