当前位置:文档之家› 第三章 简单程序设计

第三章 简单程序设计

第三章 简单程序设计
第三章 简单程序设计

第三章简单程序设计

3.1 流程结构和语句

1 . 三种流程结构

顺序结构,选择结构,循环结构——程序在逻辑上执行的流程。

●顺序结构:按语句在源程序中出现的次序依次执行;

●选择结构:根据一定的条件有选择地执行或不执行某些语句。

●循环结构:在一定条件下重复执行相同的语句。

所有的流程控制都是由语句实现的,且任何一个表达式都可作为一个语句使用,成之为表达式语句

2. 表达式语句

任何表达式通过在其末尾加一个“;”,可使表达式成为一个语句,形式为:

表达式;

其中“;”是C语句的组成部分,表示一个语句结束。表达式语句能够独立出现在程序中,而表达式则不能独立出现。

例如:x=y+1 是表达式

x=y+1;是语句

习惯上把赋值表达式语句如:x=y+1;新为赋值语句。函数调用也是表达式,因此:

printf(“hellow”)是表达式;

printf(“hellow”);是语句,习惯上称为输出语句。

scanf(“%d%d”,&x,&y);函数调用表达式语句(输入语句)

3. C的语句概述

C的一个“说明”也必须以分号结束,也称为语句,因此C的语句分说明语句和执行语句两类。

说明语句可以出现在程序中任何块(函数或复合语句)的外面——称为外部说明或块内——称为局部说明(在执行语句的前面)。

外部说明必须放在一个源程序文件中所有函数定义的外面;局部说明包括类型定义、变量和函数说明,其作用是描述程序中被处理数据(变量或函数)的名称和类型供解释程序使用。

执行语句只能出现在函数体内且处于局部说明的后面,执行语句完成对数据的处理和对程序流程的控制。

常用的程序结构为:

常量说明

类型说明

变量说明/*外部说明*/

返回类型函数名(参数表)

{ 变量说明/*局部说明*/

执行语句

}

C的执行语句共有六种:

●表达式语句

●复合语句

●标号语句

●选择语句(if和switch)

●循环语句(while,for,do-while)

●转移语句(break,continue,goto,return)

3.2标准的文件输入与输出函数

一个C的源程序要能够从外部设备(文件)输入数据并将执行(或处理)的结果输出到外部设备上。

C语言的输入和输出操作是通过调用C标准函数库中的函数来实现的,标准函数库是由C编译程序提供的。以编译后的目标代码形式存储的函数的集合。用户程序可根据需要按规定的格式调用其中的函数来完成相应的功能。C语言中从标准输入和输出文件(设备)中进行读(写)的四个标准函数是:

格式输出函数printf、格式输入函数scanf、字符输入函数getchar和字符输出函数putchar。其他函数以后讲。

3.2.1字符输入和输出函数

1.字符输入函数getchar

函数原型为:int getchar(void)

其中int说明函数的返回值的类型,void说明函数没有参数,该函数的调用格式为:

getchar()

系统将输出设备和输入设备都看成文件,标准输入设备(键盘)和标准输出设备(显示器)是由字符的序列(字符流)组成的文本文件,称为输入流和输出流。

getchar每调用一次则从终端(键盘)读取一个字符。这个字符的字符码就是getchar 的返回值(即函数值),其类型为由unsigned char 转换的int。例如:c=getchar();

执行时键入字符a赋值后变量c的值为97即字符‘a’的值。

输入文件的结束标志称为文件尾。DOS系统中键入ctrl+z时产生文件结束标志。getchar遇到文件结束标志时返回值EOF,EOF是在头文件〈stdio.h〉中定义的符号常量,其值通常为-1。程序中如果要测试getchar()的值是否文件尾应使用EOF而不用-1,这样做可使程序不依赖于某个特定环境。

2.字符输出函数putchar

函数原型为:int putchar(char ch )

putchar函数将所要输出的字符码转换为unsigned char送到标准输出设备中去,返回值是被输出的字符,如果出错则返回EOF,调用形式为:

putchar(ch)

其中ch为实际参数,可以是char、short或int类型的表达式,其值是要被输出字符的字符码。每调用一次则将字符c输出到标准输出设备上。例如:int i=7;

char ch;

说明:

(1)下面四个语句是等价的,同为输出一个响铃字符:

putchar(i);putchar(7);putchar(…\07?);putchar(…\a?);

(2)下面三个语句分别输出字符a,3和换行

putchar(…a”);

putchar(…3?);

putchar(…\n?);

注:putchar(3) 输出是?而不是整数3。

(3)putchar(((c=getchar())>=?a?&&c<=?z?)?c-…a?+?A?:c);

该语句先输入一个字符存入变量c,如果c是小写字母则将其转换成大写字母后输出,否则直接输出原字符。

注意:凡是程序中调用了输入、输出库函数,必须在函数第一次调用之前写上#include或#include“stdio.h”,预处理控制(对于DOS上的scanf和printf 可省略)。

3.2.2格式输出函数(printf)

getchar和putchar函数用于输入和输出单个字符,输入和输出过程中不进行格式上的任何转换。

printf和scanf函数在数据的输入和输出过程中能够将计算机内部形式的数据和输入输出任务上的数据相互转换,称为格式输出和格式输入。

1.printf函数的原型

int printf(char format,args)

参数的数目可变,中间用“,”分隔,是要被转换并写到输出设备的数据。函数的返回值是实际输出字符的数目。

2.调用形式

printf(格式字符串,输出参数1,输出参数2,……,);

调用printf函数时至少要给出第一个参数,即格式字符串。格式字符串式是用“”括起来的字符串;输出参数1,…输出参数n是n个表达式,可以为任何基本类型,

也可以是指针或枚举类型(较少使用)。输出数据项的数目任意,末尾加“;”表示printf函数通常作为语句使用。

printf函数将参数的值按格式字符串规定的格式从内部形式转换成外部字符形式并输出设备,返回值是实际输出字符的数目。例如:

printf("%d%8.3f",i,x);

参数中的格式为"%d %8.3f"。i和x是要输出的数据%d表示i要用十进制整数形式输出,宽度为数据实际宽度。%8.3f表示x要用小数形式浮点数格式输出,输出总宽度为8个字符,其中小数部分保留3位,若i=15,X=-8.2 该语句输出为

15 -8.200

3. 格式字符串

格式字符串包含两种字符:普通字符和用于转换说明的字符,普通字符照原样输出,转换说明用于说明数据输出格式。其形式为:

%[域宽]转换字符

一个转换说明以%开头。域宽部分是可选的,用于指定输出数据的宽度。每个转换说明对应于一个输出参数,该参数被转换成由转换说明规定的数据格式后输出。

普通字符通常用作输出提示信息,它可以与转换说明交替出现,例如printf("i=%d,x=%8.3f\n",i,x);

输出为:i=15,x= -8.200

ANSI C的转换字符及其规定的输出格式见教材p44。

注:如果%后面是一个%字符,则标准C无此定义,将它作为普通字符输出。

在%和转换字符之间可以加域宽说明,用于指定输出时的对齐方向、输出数据的域宽度、小数部分的位数等要求。用于域宽说明的字符列于下表中,域宽说明可以是其中之一或多个字符的组合。

表3.1 printf域宽说明字符

换说明对应的参数决定的。例如:

printf("%.*s",max,s);

该语句执行时从串s中打印至多max个字符。

域宽说明示例见教材p45

注意(1):printf函数根据格式串中的转换说明来决定输出数据的数目和类型,如果转换说明项数多于参数个数,或参数类型不正确,则会输出错误的数据(不报语法错);如果输出参数的数目多于转换说明项数则多余的参数不被输出。

例. Printf(“%d%d,%d”,3,4);

结果为:%d,3

例:int i=-6;

double x=5.7,y=123.4567;

printf("%-4d,%g",i,y,x);

输出形式为:

-6 ,123.457

(2)printf中参数右结合,如设int i=1;

则 printf("%d,%d,%d",++i,++i,++i);输出结果为4,3,2

printf("%d,%d,%d",i++,i++,i++);输出结果为3,2,1

3.2.2 格式输入函数(scanf)

1. scanf函数的原型

int scanf(char *format,args)

scanf函数是具有int类型返回值(返回读入参数的个数)的函数。第一个参数format是格式字符串,它指出输入数据的数目、类型和格式,args为指向存放输入数据的变量的指针,输入参数的数目可变。

2. scanf函数的调用格式

scanf(格式字符串,输入参数1,…输入参数n);

scanf函数是printf函数的逆过程,它从标准输入设备(键盘)读入字符流,并按照格式字符串中转换字符规定的格式转换成相应类型的值后赋予由输入参数所指的变量。format串可以包含如下字符:

(1)空格或制表符,它们被忽略

(2)非%普通字符,它需要输入流中有同样的非空白字符与之匹配

(3)以%为开头以转换字符为结尾的转换说明符,常见的转换字符与printf类似(4)在%与转换字符之间可以有下列选项

·赋值抑制符*

·说明最大域宽的整数

·指出参数所指变量类型的字母 h,l或L

具体形式为:

格式字符与printf中使用方式相同,把输入数据分为整型(int *用d、o、x 指定)、字符型(char *,用c指定)、实型(float *,用f,e指定)。

在整型和实型中可再加长度修正说明符:加h(短整型)、加l(长整型)、加L(高精度型)、m(注意没有n)用以指定输入数据的宽度。

输入参数1至输入参数n可以为简单变量的地址或字符串变量的地址,简单变量的地址用变量前面加取地址运算符&表示,字符串变量的地址用字符数组名(或指向字符串变量的指针)表示。

scanf函数被正确执行时返回被转换并赋值的数据项的数目,遇到文件尾或出错时返回EOF。

例如:

int i;

float x;

char name[10];

scanf("%d %f %s",&i,&x,name);

输入:25 61.37e-1program

注意:

?输入字符串时不加双引号,因双引号也会作为字符号的内容。

?不能用赋值语句给数组赋值如:name="program" 因为name不是变量而是一

个地址常量。

?不能将scanf(%d",&i)写成scanf(“%d",i)也不能将scanf("%s",name)写

成scanf("%s",&name);

3 .输入形式

(1)构成一个被转换数据的字符序列称为一个输入域,输入域为下面三种情况之一。

●以输入流中当前字符开始直到第一个空白字符之前。

●根据转换说明不能被转换的字符之前。

●指定域宽用完。

输入域之间一般可用空白字符(空白、换行、制表符)隔开,整型、浮点型或字符型后的字符型数据不用空白字符分隔(注意字符型数据同样不用单引号),在整型、

浮点型或字符型后的字符串数据可以有或无空白符(因为字符串前无前导空白符),当遇到空白符时表示一个字符串结束(见后面内容)。

例1 int i;

char c;

scanf("%d%c",&i,&c);

执行时输入:1234a

则i被赋值1234,c为'a'.

但若输入1234 a,则i 值同上,c为' '

若要读入一个非空白字符了可用下面形式:

scanf("%d%1s",&i,&c);

输入:1234 a,则i为1234,c为'a'。

例2 char c1,c2;

scanf("%c%c",&c1,&c2);

输入:12

则c1为'1',c2为'2'

例3:int day,year;

char month[10];

scanf("%d,%s%d",&dat,month,&year);

执行时输入:25 dec 1996

输入流还可以是时下列形式

25Dec 1996(回车)

但不能为

25 Dec1996

例4.Char name[20];

scanf(“%s”,name);

执行时输入programming language(回车)

则字符串“programming”将被赋予name。

注:用gets函数时,串中可含有空格,此时以回车键表示输入的结束。

(2)当键入回车时scanf开始执行,当固定格式字符串中的转换说明项或者某个输入域与转换说明项不能匹配时scanf停止执行,返回已成功匹配且被赋值的输入数据个数;当遇到文件结尾时返回EOF。

注意:当下一次调用scanf时从上一次scanf调用以被匹配转换的最后一个字符的后面那一个字符开始读取。

例1.int i,j;float x,y;

scanf(“%d%d”,&i,&j,&x);

scanf(“%f”,&y);

执行时输入

1234 56.7 89

执行第一个scanf调用时i被赋值为12,j为34,x未被赋值。Scanf返回值为2;输入流中的56.7未被读取,该指针处于34后面的第一个空格字符。执行第2个scanf 时,将56.7赋予y,89多余,scanf返回值为1。

注意:转换说明应与输入参数所指变量的类型一致,否则,输入数据不是所需要的结果;转换说明项个数也应与输入参数个数相同,如果转换说明项个数少于输入参数个数,右边多出的输入参数所指变量将不被赋值,反之,数据不存放。

例2.int i,j;

scanf(“%d%d”,&i,&j);

执行时输入12a

则i为12,j未被赋值,scanf返回值为1。

(3)当scanf的格式字符串包含有普通字符时,在输入流中相应位置必须有相同的字符与之匹配;对于空白字符,格式字符串的一个空白字符可以与输入流中0个或多个连续的空白字符匹配;对于非空白字符的普通字符则要求一一对应。

设i,j,k为int类型。

例1.Scanf(“%d %d %d”,&i,&j,&k);

执行是应输入

1020 30

其中10,20,30之间可以是一个或多个空白字符、制表符或换行符。

例2.Scanf(“%d,%d,%d”,&i,&j,&k);

执行时应输入

10,20,30

其中10,20,30之间必须有且仅有一个逗号。

例3.Scanf(“i=%d;j=%d;k=%d”,&i,&j,&k)

输入应输入

i=10;j=20;k=30

4.转换说明中的可选项

scanf转换说明中的可选项有指定域宽的整数:h、l、L、*。如果一个输入域前面有空行,scanf全自动跳过空行直到发现输入域。

①指定域宽的整数:如果说明了域宽,则输入域直到域宽用完时为止。

例1.int i,j;

scanf(“%3d%d”,&i,&j);

执行时输入1234 5678。

整数123被赋值i,4被赋值j。

例2.char name[20]

scanf(“%8s”,name);

若输入abcdefghi则字符串“abcdefgh”被赋给数组name。

②h,l,L:如果参数是short *(而不是int *),则转换字符d、i、n、o、u 和x的前面要加h ;如果参数是long * 则加l ;如果参数是double * (而不是float *)则转换字符e,f和g的前面要加l;如果参数是long double *,则加L。

例1.short i;

long j;

double x;

scanf(%hd%ld”,&i,&j);

scanf(“%lf”,&x);

例2. long double y;

scanf(“%lf”,&y);

③ *:如果指定了*,则输入域被跳过,不赋值。*指出按转换说明匹配相应的输入域。但转换结果不被赋值给任何变量,因此称为“虚读”。虚读用于从输入流中有选择的读取部分内容。

例如:double v1,v2,v3;

scanf(“%lf%*d%lf%*d%lf%*d”,&v1,&v2,&v3);

执行时输入:22 33 44 55 66

11.0赋予v1,33.0赋予v2,55.0赋予v3;输入域22,44,66被跳过。

3.3 简单程序设计举例

一个简单的c程序仅包含一个main函数且程序流程是顺序结构,程序的执行部分通常含三种基本操作的语句,即输入、输出、赋值语句或用于计算的其他表达式语句。

程序中出现的任何变量必须进行变量说明;如果有常量最好定义成符号常量;如果需要将处理结果暂时保存还要说明所须的辅助变量。

例1.从终端输入一个字符,如果是小写字母,则转换成大写后输出,否则原样输出。

#include

void main(void)

{int c;

pintf(“intput a charctor:”);

c=getcher();

c>=‘a’&&c<=‘z’?putcher(c+‘A’-‘a’):putchar(c);

putcher(‘\n’);

}

注意:用 putchar和printf输出换行的参数不同,前者是‘\n’而后者是”\n”.

程序中的输入提示很重要,一个没有输入提示的程序在运行时用户不知道何时应输入何值。

例2 输入一个字符,输出该字符的字符码、该字符的前导字符(字符码域少1)及后续字符(字符码增1)、字符码。

#include

void main(void)

{int c ,c1,c2;

printf(“intput a charctor:”);

c=getcher();

c1=c-1;

c2=c+1;

printf(“The value of ‘%c’is %4d\n”,c,c);

printf(“%c:%d--%c:%d--%c:%d\n”,c1,c1,c,c,c2,c2);

}

输入s并回车则输出

The value of ‘s’ is 115

r :114—s:115—t:116

例3 输入三个浮点数,找出其中的最大值

#include

void main(void)

{float a,b,c,m;

printf(input three number :”);

scanf(“%f%f%f”,&a,&b,&c);

m=(a>b)?a:b;

m=(m>c)?m:c;

printf(“max=%.2f\n”,m);

}

例4 输入无符号短整数k和p,将k的低字节作为结果的高字节,p的低字节作为结果的低字节组成一个新的无符号数。

#include

main()

{unsigned short k,p,t;

printf(input k[hex:],p[oct.] :”);

scanf(“%hx%ho”,&k,&p);

t=(p&0xff)|(k&0377)<<8;/*t为保存结果的辅助变量*/

printf(“new=%hx\n”,t);

}

作业:P52 2.7 2.10 2.11 2.15 2.17 2.22 2.14

P98 3.5 3.6 3.8

第2章 程序设计基础习题

程序设计基础 一、判断题 1.整型变量有Byte、Integer、Long类型3种。 2.Byte类型的数据,其数值范围在-255~255之间。 3.Visual Basic的Double类型数据可以精确表示其数值范围内的所有实数。 4.在逻辑运算符Not、Or、And中,运算优先级由高到低依次为Not、Or、And。 5.关系表达式是用来比较两个数据的大小关系的,结果为逻辑值。 6.一个表达式中若有多种运算,在同一层括号内,计算机按函数运算→逻辑运算→关系运算→算术运算的顺序对表达式求值。 7.赋值语句的功能是计算表达式值并转换为相同类型数据后为变量或控件属性赋值。 8.用DIM定义数值变量时,该数值变量自动赋初值为0。 9.函数InputBox的前3个参数分别是输入对话框的提示信息、标题以及默认值。 10.函数MsgBox的前3个参数分别表示默认按钮、按钮样式以及图标样式。 二、选择题 1.Integer类型数据能够表示的最大整数为________ 。 A、275 B、215-1 C、216 D、216-1 2.货币类型数据小数点后面的有效位数最多只有________ 。 A、1位 B、6位 C、16位 D、4位 3.输入对话框InputBox的返回值的类型是________ 。 A、字符串 B、整数 C、浮点数 D、长整数 4.运算符“\”两边的操作数若类型不同,则先________ 再运算。 A、取整为Byte类型 B、取整为Integer类型 C、四舍五入为整型 D、四舍五入为Byte类型 5.Int( Rnd * 100 ) 表示的是________ 范围内的整数。 A、[0,100] B、[1,99] C、[0,99] D、[1,100] 6.下列程序段的输出结果是________ 。 a=10: b=10000: x=log(b)/log(a): Print "lg(10000)=";x A、lg(10000)=5 B、lg(10000)=4 C、4 D、5 7.返回删除字符串前导和尾随空格符后的字符串,用函数________ 。 A、Trim B、Ltrim C、Rtrim D、mid 8.Print语句的一个输出表达式为________ ,则输出包括日期、时间信息。 A、Date B、Month C、Time D、Now 9. 语句Print "5*5" 的显示结果是________ 。 A、25 B、"5*5" C、5*5 D、出现错误提示 10.语句“Form1.Print Tab(10);"#"”的作用是在窗体当前输出行________ 。 A、第10列输出字符“#” B、第9列输出字符“#” C、第11列输出字符“#” D、输出10个字符“#” 三、填空题 1.语句“Dim C As________”定义的变量C,可用于存放控件的Caption的值。 2.长整型变量(Long类型)占用________ 个字节。 3.表达式Right(String(65, Asc("abc")), 3)的值是________。 1

C语言程序设计习题参考答案第四章(数组)

第四章数组参考答案 一、选择题:1、 B 2、C 3、D 4、C 5、C 6、B 7、D 8、B 9、B 10、A 二、填空题: 1、首地址 2、按行存放 3、一个字符 4、′\0′ 5、字符数组名或字符串 6、9 0 7、6 8、j-1 str[j-1] 9、62 10、s1[i]=s2[i]; 三、改错题 1、错误语句:int a[3][ ]={2,4,6,8,10,12,14,16,18}; 正确语句:int a[ ][3]={2,4,6,8,10,12,14,16,18}; 2、错误语句:if (str[2]>string) string=str[2]; 正确语句:if (strcmp(str[2],string)>0) strcpy(string,str[2]); 3、错误语句:char c[5]={'C','h ','i','n','a '}; 正确语句:char c[6]={'C','h ','i','n','a '};或char c[ ]={“China”}; 4、错误语句:int a[3]={3*0} ; 正确语句:int a[4]; 5、错误语句:scanf(“%d%d%d”,&a); 正确语句:for (i=0; i<3; i++) scanf(“%d”,&a[i]); 或scanf(“%d%d%d”, &a[0], &a[1], &a[2]); 四、编程题 1、用数组来处理,求解Fibonacci数列前40项:1,1,2,3,5,8,13,21…。 #include void main() { int i; int t[40]={1,1}; for(i=2;i<40;i++) t[i]=t[i-2]+t[i-1]; for(i=0;i<40;i++) { if(i%5==0) printf("\n"); printf("%15d",t[i]); } } 2、用选择法对20个整数排序(由大到小)。 #include void main() {int i,j,min,t,x[20]; for(i=0;i<20;i++) scanf("%d",&x[i]); for(i=0;i<19;i++) {min=i; for(j=i+1;j<20;j++) if(x[min]>x[j])min=j; t=x[i];

第二章 程序设计基础

1.结构化程序包括的基本控制结构只有三种,即顺序结构、选择结构与循环结构。 对象之间进行通信的构造叫做消息,A正确。多态性是指同一个操作可以是不同对象的行为,D 错误。对象不一定必须有继承性,C错误。封装性是指从外面看只能看到对象的外部特征,而不知道也无须知道数据的具体结构以及实现操作,B错误。 2.对象之间进行通信的构造叫做消息。多态性是指同一个操作可以是不同对象的行为。对象不一定必须有继承性。封装性是指从外面看只能看到对象的外部特征,而不知道也无须知道数据的具体结构以及实现操作。 继承是面向对象的方法的一个主要特征,是使用已有的类的定义作为基础建立新类的定义技术。广义的说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们,所以说继承是指类之间共享属性和操作的机制。 3.整数类实例包括: 十进制常量用0~9表示,不能以0开头; 八进制常量用0~7表示,必须用0开头; 十六进制常量用0~9和A~F(a~f)表示,必须以0x或0X开头。0x518。 0.518是浮点数实例,518E-2为科学计数法表示的浮点数实例。 "-518"是字符串实例, 字符实例的一般形式是用一对单引号括起来的一个字符。另外ASCII码中还有一些控制字符,C 语言中用转义字符的形式来书写这些常,转义字符一反斜杠(\)开始,后面跟1个字符或字符序列。'518'单引号中有三个字符,错误。"5"双引号为字符串,错误。'nm'单引号中有两个字符,错误。'\n'为换行符,属于字符类实例,正确。 4.数据流图从数据传递和加工的角度,来刻画数据流从输入到输出的移动变换过程。数据流图中的主要图形元素有:加工(转换)、数据流、存储文件(数据源)等。

C语言程序设计教程 清华大学出版社 陈明主编 第4章答案

第4章习题解答 一、选择题 1.在C语言中,函数返回值的类型最终取决于 A)函数定义时的函数首部所说明的函数类型B)return语句中表达式值的类型C)调用函数时主调函数所传递的实参类型D)函数定义时形参的类型 解析:函数返回值类型最终取决于定义函数时所定义的函数类型。 答案:A 2.设函数Fun()的定义形式为: void Fun(char ch, float x){} 则以下对函数Fun()的调用语句中,正确的是。 A)Fun("abc", 3.0); B)t = Fun('D', 16.5); C)Fun('65', 2.8); D)Fun(32, 32); 解析:选项A中"abc"是字符串,与形参不匹配:由于Fun函数的返回值类型为void,所以选项B中进行了赋值操作是不正确的;在选项C中,'65'是不合法的字符形式,单引号中应该是单个字符。只有选项D才是合法的函数调用形式。 答案:D 3.有以下程序: /* 文件路径名:ex4_1_3\main.c */ #include /* 标准输入/输出头文件*/ int f1(int x, int y) { return x > y ? x : y; } int f2(int x, int y) { return x > y ? y : x; } int main(void) /* 主函数main() */ { int a = 4, b = 3, c = 5, d = 2, e, f, g; /* 定义变量*/ e = f2(f1(a, b), f1(c, d)); f = f1(f2(a, b), f2(c, d));/* 调用函数*/ g = a + b + c + d - e - f; /* 算术运算*/ printf("%d,%d,%d\n", e, f, g); /* 输出e,f,g */ return 0; /* 返回值0, 返回操作系统*/ } 程序运行后的输出结果是。 A)4,3,7 B)3,4,7 C)5,2,7 D)2,5,7 解析:函数f1用于求两个数中的最大数,而函数f2用于求两个数中的最小数。因此有:e=f2(f1(a,b),f1(c,d))=f2(f1(4,3),f1(5,2))= f2(4,5)=4; f=f1(f2(a,b),f2(c,d)) =f1(f2(4,3),f2(5,2)) =f1(3,2)=3; g=a+b+c+d-e-f=4+3+5+2-4-3=7。

C语言程序设计教程第四章练习试题解析[1]

单选题 1、关于C语言中的函数,下列描述正确的是() A.函数的定义可以嵌套,但函数的调用不可以嵌套 B.函数的定义不可以嵌套,但函数的调用可以嵌套 C.函数的定义和函数的嵌套均不可以嵌套 D.函数的定义和函数的调用均不可以嵌套 答案:B 解析:函数的定义不可以嵌套,但函数的调用可以嵌套 2、定义一个函数:exce((v1, v2), (v3,v4,v5),v6); 在该函数调用时,实参的个数为()个 A.3 B.4 C.5 D.6 答案:A 解析:(v1, v2), (v3,v4,v5)和v6一共三个实参 3、关于C语言中print()函数与scanf()函数,下列描述中正确的是() A.printf()函数可以向任何地方输出数据 B.printf()只向控制台输出数据 C.scanf()只能输入英文字母和数字 D.scanf()函数可以识别输入的空格 答案:B 解析:printf()是向控制台输出的函数 4、在C语言中,内部函数需要添加的关键字是() A.extern B.static C.this D.auto 答案:B 解析:在定义内部函数时,需要在函数的返回值类型前面添加static关键字(又称为静态函数)。 5、当调用时,会调用内部函数 A.当调用时,会调用内部函数 B.当调用时,会调用外部函数 C.当调用时,会调用两次,先调用内部函数再调用外部函数 D.都不调用,会报错 答案:A 解析:当内部函数与外部函数重名时,会优先调用内部函数 6、在C语言中,声明外部函数需要添加的关键字是() A.extern B.static C.this

答案:A 解析:声明外部函数的方式是在函数的返回值类型前面添加extern关键字 7、关于C语言中的局部变量,下列描述中错误的是() A.局部变量就是在函数内部声明的变量 B.局部变量只在函数内部有效 C.局部变量只有当它所在的函数被调用时才会被使用 D.局部变量一旦被调用,其生存周期持续到程序结束 答案:D 解析:当函数调用结束时局部变量就会失去作用 8、关于C语言中的全局变量,下列描述中正确的是() A.全局变量的作用域一定比局部变量的作用域范围大 B.静态类别变量的生存周期贯穿于整个程序的运行期间 C.函数的形参都属于全局变量 D.未在定义语句中赋初值的auto变量和static变量的初值都是随机值 答案:B 解析:选项1不对:如果程序中只有一个主函数,则在整个程序运行中,局部变量都在起作用; 选项3不对:除了C++的引用类型参数,所有函数的形参都是局部变量; 选项4不对:static变量定义时就存储地全局区,初始化为0; 9、当全局变量与局部变量重名时,那么在调用时() A.局部变量会被屏蔽 B.全局变量会被屏蔽 C.都不会调用,系统会报错 D.会调用两次,先调用局部变量,再调用全局变量 答案:B 解析:当局部变量与全局变量重名时,全局变量会被屏蔽。 10、在C语言中,关于变量的作用域,下列描述中错误的是() A.局部变量只在整个函数的运行周期中有效 B.全局变量的作用域为整个程序的运行周期 C.当全局变量与局部变量重名时,局部变量会屏蔽掉全局变量 D.全局变量会覆盖掉所有与它重名的局部变量 答案:D 解析:当全局变量与局部变量重名时,全局变量会被屏蔽掉 11、在C语言中,如果在一个函数的复合语句中定义了一个变量,则该变量() A.只在该复合语句中有效,在该复合语句外无效 B.在该函数中任何位置都有效 C.在本程序的原文件范围内均有效 D.此定义方法错误,其变量为非法变量 答案:D 解析:1、2与3错:函数复合语句中定义的变量在该复合语句中引用;但如果函数含有该变量,则在函数中可以引用该变量 4对:在C++中在复合语句中定义变量为合法,但在C语言中是非法的 12、C语言程序的基本单位是()。

第二章 简单的VB程序设计习题

第二章简单的VB程序设计习题 一、选择题 1. 假定已在窗体上画了多个控件,并有一个控件是活动的,为了在属性窗口中设置窗体的属性,预先执行的操作是 ()。 (A)单击窗体上没有控件的地方(B)单击任一个控件 (C)不执行任何操作(D)双击窗体的标题栏 2. 在VB中最基本的对象是(),它是应用程序的基石,是其它控件的容器。 (A)文本框(B)命令按钮 (C)窗体(D)标签 3. 有程序代码如下:text1.text=“visual basic”则:text1、text和“visual basic”分别代表()。 (A)对象,值,属性(B) 对象,方法,属性 (C)对象,属性,值(D) 属性,对象,值 4. VB是一种面向对象的程序设计语言,()不是面向对象系统所包含的三要素。 (A)变量(B)事件(C)属性(D)方法 5. VB的一个应用程序至少包括一个()文件,该文件存储窗体上使用的所有控件对象和有关的()、 对象相应的()过程和()代码。 (A)模块、方法、事件、程序(B)窗体、属性、事件、程序 (C)窗体、程序、属性、事件(D)窗体、属性、事件、方法 6. 在VB6.0环境已有应用程序的情况下,要重新建立一个工程的操作是()。 (A)单击工具栏上的“添加工程”按钮 (B)在工程资源管理器窗口上单击右键,在弹出的快捷菜单中选择“新建工程”选项 (C)选择“文件”菜单中的“新建工程” (D)选择“视图”菜单中的“新建工程” 7. 为了把窗体上的某个控件变为活动,应执行的操作是()。 (A)单击窗体的边框(B)单击该控件的内部 (C)双击该控件(D)双击窗体 8. 确定一个控件在窗体上的位置的属性是()。 (A)Width和Height (B)Width或Height (C)Top和Left (D)Top或Left 9. 确定一个窗体或控件的大小的属性是()。 (A)Width和Height (B)Width或Height (C)Top和Left (D)Top或Left 10. 对于窗体,下面()属性可以在程序运行时进行设置。 (A)MaxButton (B)BorderStyle (C)Name (D)Left 11. 要使Print方法在Form_Load事件中起作用,要对窗体的()属性进行设置。 (A)BackColor (B)BorderStyle (C)AutoRedraw (D)Caption 12. 要使标签控件显示时不覆盖其背景内容,要对()属性进行设置。 (A)BackColor (B)BorderStyle (C)ForeColor (D)BackStyle 13. 要使对象看得见而不可操作,要对()属性设置。 (A)Enabled (B)Visible (C)BackColor (D)Caption 14. 文本框没有()属性。

c程序设计(第四版)谭浩强-课后答案.pdf(2)(最新整理)

C 语言课后习题答案-第四版- 谭浩强(1-7) 第一章 #include int main ( ) { printf ("**************************\n\n"); printf(" Very Good!\n\n"); printf ("**************************\n"); return 0; } #include int main() {int a,b,c,max; printf("please input a,b,c:\n"); scanf("%d,%d,%d",&a,&b,&c); max=a; if (max

printf("The largest number is %d\n",max); return 0; } 第3 章 #include #include int main() {float p,r,n; r=0.1; n=10; p=pow(1+r,n); printf("p=%f\n",p); return 0; } #include #include int main() {float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;

p=1000; r5=0.0585; r3=0.054; r2=0.0468; r1=0.0414; r0=0.0072; p1=p*((1+r5)*5); // 一次存5 年期 p2=p*(1+2*r2)*(1+3*r3); // 先存2 年期,到期后将本息再存3 年期 p3=p*(1+3*r3)*(1+2*r2); // 先存3 年期,到期后将本息再存2 年期 p4=p*pow(1+r1,5); // 存1 年期,到期后将本息存再存1 年期,连续存5 次p5=p*pow(1+r0/4,4*5); // 存活期存款。活期利息每一季度结算一次 printf("p1=%f\n",p1); // 输出按第1 方案得到的本息和 printf("p2=%f\n",p2); // 输出按第2 方案得到的本息和 printf("p3=%f\n",p3); // 输出按第3 方案得到的本息和 printf("p4=%f\n",p4); // 输出按第4 方案得到的本息和 printf("p5=%f\n",p5); // 输出按第5 方案得到的本息和 return 0; } #include #include

C程序设计第四版谭浩强完整版课后习题答案

C程序设计第四版谭浩强完整版课后习题答案集团标准化办公室:[VV986T-J682P28-JP266L8-68PNN]

C程序设计(第四版)(谭浩强)第一章课后习题答案 P006 向屏幕输出文字. #include<>代码均调试成功,若有失误大多不是代码问题.自已找找. int main() { printf("Welcome to \n"); return 0; } P008 求两个数的和. #include<> int main() { int a,b,sum; a=5; b=4; sum=a+b; printf("The sum is %d .\n",sum);

return 0; } P008 调用函数比较两个数的大小. #include<> int main() { int max(int x,int y); int a,b,c; scanf("%d,%d",&a,&b); c=max(a,b); printf("The max is %d .\n",c); return 0; } int max(int x,int y) { int z; if (x>y) z=x; else z=y; return(z); }

P015 三个数的大小.(数字0表示课后练习题) #include<> int main() { int a,b,c,d; int max(int x , int y , int z); printf("Please input 3 numbers :\n"); scanf("%d %d %d",&a,&b,&c); d=max(a,b,c); printf("The max is :%d .\n",d); } int max(int x , int y , int z) { int m; if (x>y && x>z) m=x; if (y>x && y>z) m=y; if (z>y && z>x) m=z; return (m); }

C语言程序设计第二版第四章第七章课后答案

1、输入函数scanf的参数错误,应该为:scanf("%f",&k); 2、|1234 1234 | 3、ff10 4、1,3,1 5、原字符串左边加空格再加字符串本省,字符个数总和为5个 6、scanf("%d,%d,%c,%c",&a1,&a2,&c1,&c2); 7、 printf("a+b=%d\n",a+b); printf("a-b=%d\n",a-b); printf("a*b=%d\n",a*b); printf("a/b=%d\n",a/b); printf("(float)a/b=%f\n",(float)a/b); printf("a%b=%d\n",a%b); 8、 void main() { float r; float s,c; printf("please input the number:"); scanf("%f",&r); if(r>=0) { s = 3.14*r*r; c = 2*3.14*r; printf("s = %f, c = %f\n",s,c); } else printf("you input number is error!"); } 9 void main() {int n; printf("please input the number:"); scanf("%d",&n); if(n>=100 && n <= 999) printf("%d%d%d",n%10,(n/10)%10,n/100); else printf("you input number is error!"); } 10、 void main() { int i,j,k; scanf("%d,%d,%d",&i,&j,&k); ((i%2 != 0?1:0) + (j%2 != 0?1:0)+(k%2 != 0?1:0)) == 2?printf("YES\n"):printf("NO\n"); } 11、 void main()

第2章 简单的C#程序设计 习题

第2章简单的C#程序设计 一.选择题 1.C#中程序的入口方法是【】方法。 A) main B) Main C) begin D) Program 2.假设变量x的值为25,要输出x的值,下列正确的语句是【】。 A) System.Console.writeline(“x”);B) System.Console.WriteLine(“x”); C) System.Console.WriteLine(“x={0}”,x);D) System.Console.WriteLine(“x={x}”); 3.要退出应用程序的执行,应执行下列的【】语句。 A) Application.Exit(); B) Application.Exit; C) Application.Close(); D) Application.Close; 4.关于C#程序的书写,下列不正确的说法是【】。 A) 区分大小写 B) 一行可以写多条语句 C) 一条语句可以写成多行 D) 一个类中只能有一个Main()方法,因此多个类中可以有多个Main()方法。 5.公共语言运行库即【】。 A) CRL B) CLR C) CRR D) CLS 6..NET平台是一个新的开发框架,【】是.NET的核心部分。 A) C# B) .NET Framework C) https://www.doczj.com/doc/8118378925.html, D) 公共语言运行库 7.C#应用程序项目文件的扩展名是【】。 A) csproj B) cs C) sln D) suo 8.C#应用程序解决方案文件的扩展名是【】。 A) csproj B) cs C) sln D) suo 9.运行C#程序可以通过按【】键实现。 A) F5B) Alt+F5 C) Ctrl+F5 D) Alt+Ctrl+F5 10.C#语言中类模块代码文件的扩展名是【】。 A) csproj B) cs C) sln D) suo 11.构建桌面应用程序需要.NET提供的类库是【】。 A) https://www.doczj.com/doc/8118378925.html, B) Windows Form C) XML D) https://www.doczj.com/doc/8118378925.html, 12.C#中导入某一命名空间的关键字是【】。 A) use B) using C) import D) include 13..NET Framework将【】定义为一组规则,所有.NET语言都应遵守这个规则,才能创建可以与其他语言互操作的应用程序。 A) JIT B) CLR C) MSIL D) https://www.doczj.com/doc/8118378925.html, 14.在https://www.doczj.com/doc/8118378925.html,中,在【】中可以查看当前项目的类和类的层次信息。 A) 解决方案资源管理器B) 类视图窗口 C) 对象浏览器窗口D) 属性窗口 15.在.NET Framewor中,MSIL是指【】 A) 接口限制B)中间语言C) 核心代码D) 类库16.【】是独立于CPU的指令集,它可以被高效地转换为本机机器语言。

C程序设计(第四版)(谭浩强)完整版_课后习题答案

C程序设计(第四版)(谭浩强)第一章课后习题答案 P006 1.1 向屏幕输出文字. #include//预编译. 代码均调试成功,若有失误大多不是代码问题.自已找找. int main() { printf("Welcome to https://www.doczj.com/doc/8118378925.html,\n"); return 0; //与int main对应,为了程序可移植性,建议全用int main + return 0;. } P008 1.2 求两个数的和. #include int main() { int a,b,sum; a=5; b=4; sum=a+b; printf("The sum is %d .\n",sum); return 0; } P008 1.3 调用函数比较两个数的大小. #include int main() { int max(int x,int y); //被调用函数在主函数后面,用前先声明. int a,b,c; scanf("%d,%d",&a,&b); //输入时要按格式来,此处的逗号,用空格会发生错误. c=max(a,b); //a,b作为实参传入被调用函数中. printf("The max is %d .\n",c); return 0; } int max(int x,int y) //定义了两个形参. {

int z; //z属于局部变量,可与主函数中相同名字. if (x>y) z=x; else z=y; return(z); //z作为整个程序的出口值,赋给主函数中的c. } #include int main() { int a,b,c,d; //d是用于存储最大值的. int max(int x , int y , int z); //测试可知,在VS2008中,可以不预先声明. printf("Please input 3 numbers :\n"); scanf("%d %d %d",&a,&b,&c); d=max(a,b,c); //调用函数中有三个形参,这里需要传入三个实参,才可运算. printf("The max is :%d .\n",d); // d可以换成max(a,b,c). } int max(int x , int y , int z) { int m; if (x>y && x>z) //求三者之大的一种方法. m=x; if (y>x && y>z) m=y; if (z>y && z>x) m=z; return (m); //返回值m给主函数中的d. } C程序设计(第四版)(谭浩强)第2章课 后习题答案 算法——程序的灵魂

c语言程序设计第四版第四章答案谭浩强

第四章 什么是算术运算什么是关系运算什么是逻辑运算 解:略。 C语言中如何表示“真”和“假”系统如何判断一个量的“真”和“假” 解:设有一个逻辑表达式,若其结果为“真”,则以1表示;若其结果为“假”,则以0表示。但是判断一个逻辑量的值时,以0代表“真”,以非0代表“假”。例如3&&5的值为“真”,系统给出3&&5的值为1。 写出下面各逻辑表达式的值。设a=3,b=4,c=5。 (1) a+b>c&&b==c (2) a||b+c&&b-c (3) !(a>b)&&!c||1 (4) !(x=a)&&(y=b)&&0 (5) !(a+b)+c-1&&b+c/2 解: (1) 0 (2) 1 (3) 1 (4) 0 (5) 1 有3个整数a、b、c,由键盘输入,输出其中最大的数。 解: 方法一 #include <> main() { int a,b,c; printf("请输入3个整数:"); scanf("%d,%d,%d",&a,&b,&c); if(a main() { int a,b,c,temp,max; printf("请输入3个整数:"); scanf("%d,%d,%d",&a,&b,&c); temp=(a>b)a:b; /* 将a和b中的大者存人temp中 */ max=(temp>c)temp:c; /* 将a和b中的大者与c比较,取最大者*/ printf("3个整数的最大数是%d\n”,max); }

最新C++程序设计基础课后答案--第四章

4.1 阅读下列程序,写出执行结果 1.#include void main() { int i, conut=0, sum=0 ; float average ; int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 } ; for( i=0; i<10; i++ ) { if( a[i] % 2 == 0 ) continue ; sum += a[ i ] ; conut ++ ; } average = sum / conut ; cout << "conut = " << conut << '\t' << "average = " << average << endl ; } 2.#include void main() { int a[9] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 } ; int *p = a , sum = 0 ; for( ; p='A' && x<='Z') { x=x+32; /*是大写,转换为小写,至于为什么要+32吗,请看看 大小写字母的ASCII码差值*/ } else if( x>='a' && x<='z') { x=x-32; /*是小写,转换为大写*/ } /*其它不用理*/ printf("%c\n",x); } 2:输入一个大写字母实现,输出字母表中的前后字母,但是当时A 或是Z时提示输出的“没有前面的字母”,“没有后面的字母” #include void main() {char x; printf("输入一个大写字母x:\n"); scanf("%c",&x); if (x=='A') {printf("没有前面的字母");} if( x=='Z') { printf("没有后面的字母");} else// (x>'A'||x<'Z') {printf("%c, %c",x-1,x+1);} } 3:实现的是对百分制的评等级

#include void main() { float x; printf("请输入学生的成绩x的值\n"); scanf("%f",&x); if(x>=90&&x<=100) {printf("等级为A ");} else { if (x>=80&&x>=89) {printf("等级为B "); } else if (x>=70&&x<=79) {printf("等级为C "); } else if (x>=60&&x<=69) {printf("等级为D "); } else { printf("等级为E "); } } } 4:知道今天的日期,年月日,求出明天的年月日 #include int main() { int year,month,day; int maxdays[]={31,28,31,30,31,30,31,31,30,31,30,31}; printf("请输入年月日,中间用空格隔开!\n"); scanf("%d %d %d",&year,&month,&day); if(year%400==0 || (year%4==0 && year%100!=0)) maxdays[1]=29;//闰年二月最大值是29 if(month>12 || month<1) { printf("日期不合法!\n"); return 0; } if(day>maxdays[month-1])

C程序设计课后习题1-3(答案)

C程序设计课后习题 第一章习题 1.选择题 (1)C语言程序的执行总是从(A)开始。 A.main函数的入口 B.编译预处理命令 C.源程序的第一个函数 D.源程序的第一行语句 (2)在C语言的源程序中,主函数的位置(C)。 A.必须在编译预处理命令的后面 B.必须在源程序的最后 C.任意 D.必须在源程序的开头 (3)下列变量名中合法的是(C)。 A. B.C.Tom B.3a6b C._6a7b D.$ABC (4)下面两对用户定义标识符哪个可读性更强:(C) A.checkquality B.salarytotal C.check_quality C.sal_ary_tot_al (5)C程序是由(D)组成。 A.若干个过程 B.若干子程序 C.一个主程序和若干子程序 D.若干函数 2.填空题 (1)一个函数一般由两部分组成,它们分别是_函数首部______和__函数体____。 (2)编译预处理命令___是_____(填“是”或“不是”)C语

言文本的一部分。 (3)一个C语言程序至少应包含一个__主函数或main()__。 (4)C语言的标准输入函数是_scanf()__,标准输出函数是 ___printf()____。 (5)函数体用___{______符号开始,用_____}______符号结束。 (6)注释的开始和结束标志分别为__/*____和____*/____。为 增强程序的__可读性___,应该为程序写上清晰的注释。 3.编程题:参考本章例题,编写一个C程序,输出以下信息。 ********************** *The data is * * 2005-03-23 * ********************** 程序如下: #include Void main() {printf(“**********************\n”); printf(“*The data is *\n”); printf(“* 2005-03-23 *\n”); printf(“**********************\n”); }

C语言程序设计 第四章

C语言程序设计 第四章分支结构程序设计 1、分支(选择)结构的基本形式: If (表达式) 语句 注:if(表达式)后面没有“;” 2、分支(选择)结构的标准形式: If (表达式)语句1 else 语句2 3、多分支(选择)结构的形式: if (表达式)语句1 else if (表达式)语句2 else if (表达式)语句3 … else if (表达式)语句n else 语句n+1 4、对if语句的说明如下: ①三种形式的if语句中在if后面都有表达式,一般为逻辑表达式或关系表达式,但也可以是其他表达式,如赋值表达式等,甚至可以是一个变量。 例如,if(a=5);语句、if(b);语句都是允许的。只要表达式的值为非0,即为“真”。 如在if(a=5)…;中表达式的值永远为非0,所以其后的语句总是要执行的,当然这种情况在程序中不一定会出现,但在语法上是合法的。 ②第二、第三种形式的if语句中,在每个else前面有一个分号,整个语句结束处有一个分号。 ③在if和else后面可以只含有一个内嵌的操作语句,也可以由多个操作语句组成,此时用花括号{}将几个语句括起来组成一个符合语句。 5、if语句的嵌套: C语言规定,缺省{}时,else总是与上面最近的、没有匹配过的if匹配。 例如:改写下列if语句,使else和第一个if配对。 If(X<2) If(X<1)Y=X+1; else Y=X+2:; ①通过添加{}改变配对关系: If(X<2) { If(X<1)Y=X+1; } else Y=X+2:; ②或者,通过添加else语句改变配对关系: If(X<2) If(X<1)Y=X+1; else;

C语言程序设计第3版何钦铭颜晖第4章循环结构

第4章循环结构 【练习 4-1】在例 4-1 程序中,如果对 item 赋初值 0,运行结果就是什么?为什么?如果将精度改为 10-3,运行结果有变化不?为什么? 解答: 如果对 item 赋初值 0,则程序运行结果就是 pi=0,因为 item 为 0 时不满足 while 循环的执行条件,即不执行循环,故 pi 值为 0。如果将精度改为10-3,运行结果会有变化,因为精度改变意味着 while 循环的条件改变,精度变大使得 while 循环次数减少,必然影响到π的值。 【练习 4-2】运行例 4-2 程序时,如果将最后一个输入数据改为-2,运行结果有变化不?如果第一个输入数据就是 -1,运行结果就是什么?为什么? 解答: 如果将最后一个输入数据改为-2,运行结果没有变化,因为最后一个负数就是一结束标志,不进行统计,故任意一个负数都可以。如果第一个输入数据就是-1,运行结果就是:Grade averageis 0,因为第一个输入就就是-1,则 while 循环条件不成立,不执行循环体。 【练习 4-3】序列求与(1-1/4+1/7-1/10+1/13-1/16+…):输入一个正实数 eps,计算序列1-1/4+1/7-1/10+1/13-1/16+…的值,精确到最后一项的绝对值小于eps(保留6位小数)。试编写相应程序。 解答: #include #include int main(void) { int denominator, flag; double item, s,eps; printf(“Input eps:”); scanf(“%lf”,&eps); flag = 1; denominator = 1 ; item = 1、0; s = 0; while(fabs (item) >= eps) { item = flag * 1、0 / denominator; s = s + item; flag = -flag; denominator = denominator +3; } printf ( “s = %f\n”, s);

第2章 程序设计基础

第二章程序设计基础 程序设计方法与风格 1.源程序文档化 源程序文档化应考虑如下几点: (1)符号名的命名:符号名的命名应具有一定的实际含义,以便于对程序功能的理解。 (2)程序注释:正确的注释能够帮助读者理解程序。 (3)视觉组织:为使程序的结构一目了然,可以在程序中利用空格、空行、缩进等技巧使程序层次 2.数据说明的方法 一般应注意: (1)说明次序规范化 (2) 变量说明有序化:语句说明多个变量时,变量按照字母顺序排序为好。 (3)使用注释来说明复杂数据的结构。 3.语句的结构 程序应该简单易懂,语句构造应该简单直接 不应该为提高效率而把语句复杂化。一般应注意如下 (1)在一行内只写一条语句: (2)程序编写应优先考虑清晰性; (3)除非对效率有特殊要求,程序编写要做到清晰第一,效率第二。 (4)首先要保证程序正确,然后才要求提高速度: (5)避免使用临时变量而使程序的可读性下降; (6)避免不必要的转移; 7)尽可能使用库函数; (8)避免采用复杂的条件语句: (9)尽量减少使用“否定”条件的条件语句; (10)数据结构要有利于程序的简化; (11)要模块化,使模块功能尽可能单一化; (12)利用信息隐蔽,确保每一个模块的独立性 (13)从数据出发去构造程序: (14)不要修补不好的程序,要重新编写: 4.输入和输出 在设计和编程时都应该考虑如下原则: (1)对所有的输入数据都要检验数据的合法性; (2)检查输入项的各种重要组合的合理性; (3)输入格式要简单,以使得输入的步骤和操作尽可能简单; (4)输入数据时,应允许使用自由格式: (5)应允许缺省值; (6)输入一批数据时,最好使用输入结束标志: (7)在以交互式输入/输出方式进行输入时,要在屏幕上使用提示符明确提示输入的请求,同时在数据输入过程中和输入结束时,应在屏幕上给出状态信息; (8)当程序设计语言对输入格式有严格要求时,应保持输入格式与输入语句的一致性;给所有的输 出加注释,并设计输出报表格式。

相关主题
文本预览
相关文档 最新文档