1、程序设计基础作业二一、选择题1、 C 语言中,使用变量的要求是( A )。A 要先定义后使用 B 要先使用后定义C 不需要定义,可以直接使用 D 没有明确的要求2、 不是 C 语言的基本数据类型是( D )。A int B double C char D bool3、 编程语言提供的三种基本控制结构是( D )。A 输入、处理和输出结构 B 常量、变量和表达式结构C 表达式、语句和函数结构 D 顺序、选择和循环结构4、 在 C 语言中,决定 int 数的表示范围的因素是( A )。A int 类型占用的字节数量 B 人为事先的约定和习惯C 所存储的数据是否有符号 D 数在内存中的编码方式5、
2、C 语言中,关于运算符的正确概念是( D )。A 运算符具有优先级,同优先级的运算符由括号决定运算次序B 在不同优先级运算符进行混合运算时,运算的先后次序取决于结合性C 在同优先级的运算符参与运算时,先计算左侧的运算符D 运算符具有优先级和结合性6、 在 C 语言中关于循环语句的结论中,错误的是( D )。A do-while 语句构成的循环至少要执行一次B while 语句和 for 语句可以相互替代C for 和 while 语句的循环控制条件都是当条件成立时执行循环体D do-while 语句的循环控制条件是当条件不成立时继续执行循环体二、填空题1、 最基本的程序控制有三种,它们是 顺序
3、执行 , 分支控制 和 循 环 控制 。这三种执行控制的任意组合和重复、嵌套就可以描述任意复杂的程序。2、 C 语言中分支语言是 if 语句和 switch 语句。3、 C 语言中循环语言是 while 语句, for 语句和 do-while 语句。4、 C 语言中自增运算符是 + ,求余数的运算符号是 % 。5、 C 语言中要改变循环语句的流程可以使用语句 break , continue 和 goto 。 三、简答题1、请简要介绍面向过程式语言中的三种程序设计的基本结构。答 : 顺 序 结 构 是 指 按 先 后 顺 序 从 前 到 后 执 行 的 语 句 序 列 。 这 些 语 句 逻
4、 辑 上 可 能 有 明确 的 顺 序 关 系 , 即 后 一 个 程 序 语 句 依 赖 于 前 一个语句,也可能它们之间没有明确的顺序关系,即某些语句的先后顺序并不重要,一个语句逻辑上并不从属于另一些语句。选择结构是指根据判定条件控制一些语句是否执行的语句。选择结构可用 if-then、if-then-else 或 case(或 switch)等语句进行描述。当判定条件成立时需要执行一组语句,且不成立时不需要执行这些语句,那么应当采用 if-then 语句。当判定条件成立时需要执行一组语句,否则需要执行另一组语句时,可采用 if-then-else 语句。当根据表达式的取值情况在多个动作中
5、选取其一执行时,可采用 case 语句。循环结构是指可重复执行一组语句(称为循环体) 的程序语句。根据重复方式的不同,循环结构可分为 while 型循环、until 型循环和 for 型循环。while 型循环是在指定的条件(称为循环条件)成立时,重复执行循环体,其特点是执行循环体前先判定循环条件,因此可能一次也不执行循环体。until 型循环将重复执行循环体,直到循环条件成立才 结 束该 重 复 , 其 特 点 是 每 执 行 一 次 循 环 体 后 判 定 循 环 条 件 , 因 此 至 少 执 行 一 次 循 环 体 。for 型 循 环 将 循 环 体 重 复 执 行 给 定 次 数
6、, 其 特 点 是 循 环 开 始 前 可 确 定 循 环 次 数 。2、什么是面向过程式语言?有什么特点?答:面向过程式语言,也叫命令式语言或强制式语言,它是通过指明一列可执行的运算及运算的次序来描述计算过程的语言。命令式语言以冯诺依曼式计算机体系结构为背景。机器语言与汇编语言是最早问世的命令式语言。FORTRAN,ALGOL,COBOL,PASCAL,C,Ada 等高级语言也属过程式语言,其变量对应于存储单元,对变量的访问就是对相应存储单元的访问。各个语句在程序中的顺序以及转向语句等控制语句则明确规定了机器的执行步骤,这就是冯诺依曼式体系 结 构 的 思 维 方 式 在 程 序 设 计 中
7、 的 反 映 。过 程 式 语言程序的本质是重复地、按步地计算低级(非抽象)值并将之赋给变量(对象),这就迫使程序人员去关心比较低级的细节,而这不适用于设计复杂算法。因此,几十年来过 程 式 语言一直向着隐蔽低级机器属性、提高程序层次与抽象性的方向发展。3、结构化程序设计方法的主要技术是什么?答:结构化程序设计方法的主要技术是自顶向下、逐步求精。具体地说,就是在接受一个任务之后,纵观全局,先设想好整个任务分为几个子任务,每一个子任务又可以进行细分,直到不需要细分为止。这种方法就叫做“自顶向下、逐步求精”。采用这种方法考虑问题比较周全,结构清晰,层次分明。用这种方法也便于验证算法的正确性。在向下
8、一层细分之前应检查本层设计是否正确,只有上一层是正确的才可以继续细分。如果每一层设计都没有问题,则整个算法就是正确的。由于每一层向下细分时都不太复杂,因此容易保证整个算法的正确性。检查时也是由上而下逐层检查,这样做思路清晰,可以有条不紊地一步一步地进行,既严谨又方便。4、结构化程序设计的主要特征与风格是什么?答:结构化程序设计的主要特征与风格如下所述。(1)一个程序按结构化程序设计方式构造时,由三种基本控制结构:顺序结构、选择结构和循环结构构成。(2)有限制地使用 goto 语句。鉴于 goto 语句的存在使程序的静态书写顺序与动态执行顺序十分不一致,导致程序难读难理解,容易存在潜在的错误,难
9、于证明正确性,有人主张程序中禁止使用 goto 语句,但有人则认为 goto 语句是一种有效设施,不应全盘否定而完全禁止使用。结构程序设计并不在于是否使用 goto 语句,因此作为一种折衷,允许在程序中有限制地使用 goto 语句。(3)往往藉助于体现结构化程序设计思想的所谓结构化程序设计语言来书写结构化程序,并采用一定的书写格式以提高程序结构的清晰性,增进程序的易读性。(4)它强调了程序设计过程中人的思维方式与规律,是一种自顶向下的程序设计策略,它通过一组规则、规律与特有的风格对程序设计细分和组织。对于小规模程序设计,它与逐步精化的设计策略相联系,即采用自顶向下、逐步求精的方法对其进行分析和
10、设计;对于大规模程序设计,它则与模块化程序设计策略相结合,即将一个大规模的问题划分为几个模块,每一个模块完成一定的功能。5、程序的最基本控制结构有几种?分别叫什么?如何组成千变万化的程序?答:最基本的程序控制有以下三种:顺序执行、分支控制和循环控制。这三种执行控制的任意组合和重复、嵌套就可以描述任意复杂的程序。四、写出程序的运行结果1、写出程序运行结果。#include main ( ) int a=3, b=7;printf (“%dn“, +a + +b); /* */printf (“%dn“, b%a); /* */程序运行结果是: 12 02、阅读下面的程序并回答问题。#includ
11、e main( ) int a,b,m,n;scanf ( ”%d%d“, m = n = 1;if (a0) m = m+n;if (amain ( ) char i, j;for ( i=0, j=9; imain ( ) int a, b, c;a=1; b=2; c=3;if (ab)if (ac)printf(“%d“, a);else printf (“%d“, b);printf (“%dn“, c);运行结果是: 3 5、阅读程序写出程序的输出结果。#include main( ) int i=0,j=0,k=0,m;for ( m=0;mvoid main( ) int a=
12、1,b=4,c=2; a=(a+b)/c;printf(“%d n”,-a);运行结果: 1 7void main ( ) char c1=67; /*A的 ASCII 码值为 65 */if (A main() int x = 1,a = 0,b = 0; switch(x) case 0; b + +;case 1; a + +;case 2; a + +;b + +;printf (“a = % d ,b = % d n”,a,b);运行结果: a=1,b=1 11、写出程序的运行结果。#include main( ) int a=2, b=-1, c=2; if ( amain ( )
13、 char ch;ch = getchar ( );switch ( ch ) case 65:printf (”%c”, A);case 66:printf (”%c”, B);default:printf (”%sn”, ”other”);如程序可以正常运行,当从键盘输入字母 A 时,输出结果为 。运行结果是: ABother 13、写出程序运行结果。main () int x=23, y=10;doprintf(”%d %d”, x-,+y);while ( ! x );该程序的执行结果是 23 11 。14、写出程序运行结果。#include main( ) int k=1, j=0;
14、while ( k+j j ) j=j+2;else k = k+2;printf ( “%d %dn“, k, j );该程序的执行结果是 5 和 6 15、阅读程序,写出程序的输出结果。main ( ) int a=0, n=5;for ( ; ; ) a+; n-;printf(“%d,”,a);a=n;if (n=0) break;printf(“%d”,a);运行结果: 1, 5, 4, 3, 2, 0 16、阅读下面的程序并回答问题。#include main ( ) int a=13, b=-7;printf (“%dn“, a/b); /* */printf (“%dn“, b
15、/a*a); /* */程序运行结果是: 1 和 017、阅读程序,写出程序的输出结果。#include main ( ) int i=1, j=2;if ( i != j )printf(“YESn“);else printf(“NOn“);运行结果是: YES 18、阅读程序,写出程序的输出结果。main ( ) int a=0;for ( a=0; amain( ) char c=A;if ( 0main ( ) int i,j;for ( i=0, j=10; i8; y=+i )printf (”%d %d ”, x-, y);运行结果: 10 10 9 1 22、以下程序的输出结果
16、是_ 。void main()int x=17,y=26;printf(“%d n“,y/=(x%6);运行结果: 5 五、程序设计1、编写一程序,从键盘输入 10 个实数,计算并输出这 10 个数的平均值。#include main( ) int i;double x, sum=0; for (i=1; xmain()int i,j,n;double sum=0,fact=1; printf(“Please input n:”); scanf(“%d”, for (i=1;1main ( ) int h, k, j;scanf (”%d”, for ( k=1; kmain ( ) int
17、h, k, j, m, n ;printf (“Enter H:“);scanf (“%d“, for (j=1; jmain ( ) int h, k, j; scanf (”%d”, for ( k=1; k=h; k+) /* 控制打印 h 行 */ for ( j=1; j=h-k; j+) /* 打印空格 */printf (” ”);for ( j=1; j=k; j+) /* 打印 * 号 */printf (”*”);printf(”n”) ;6、输入两个数 a 和 b,交换它们的值后输出 a 和 b 的值。void main()int a,b,t;scanf(“%d%d“,printf(“%d,%dn“,a,b);t=a;a=b;b=t;printf(“%d,%d“,a,b);