程序设计基础辅导材料6

程序设计基础辅导材料6
程序设计基础辅导材料6

第6章算法和问题求解

本章我们来学习算法的基本概念。首先我们要了解算法,掌握算法的描述方法,进一步我们要学习算法的三种基本结构,然后要了解常见的、典型的算法,并要学习如何设计自己的简单算法。

6.1 算法的描述方法

1、用自然语言表达

所谓的“自然语言”指的是日常生活中使用的语言,如汉语、英语或数学语言。

例如:我们想计算1到N的累加和,为简单起见,设N的值不大于1000。

这就是用自然语言配合数学语言描述算法。

用自然语言描述的算法通俗易懂,而且容易掌握,但算法的表达与计算机的具体高级语言形式差距较大,通常是用于介绍求解问题的一般算法。

2、用伪代码表示

伪代码是一种介于自然语言与计算机语言之间的算法描述方法。它结构性较强,比较容易书写和理解,修改起来也相对方便。其特点是不拘泥于语言的语法结构,而着重以灵活的形式表现被描述对象。它利用自然语言的功能和若干基本控制结构来描述算法。

伪代码没有统一的标准,可以自己定义,也可以采用与程序设计语言类似的形式。3、用传统流程图描述算法

流程图也叫框图,它是是用各种几何图形、流程线及文字说明来描述计算过程的框图。

用流程图描述算法的优点是:直观,设计者的思路表达得清楚易懂,便于检查修改。

表6.1是用传统流程图描述算法时常用的符号。

表6.1流程图常用符号

用流程图描述算法时,一般要注意以下几点:

(1)应根据解决问题的步骤从上至下顺序地画出流程图,各图框中的文字要尽量简洁。

(2)为避免流程图的图形显得过长,图中的流程线要尽量短。

(3)用流程图描述算法时,流程图的描述可粗可细,总的原则是:根据实际问题的复杂性,流程图达到的最终效果应该是,依据此图就能用某种程序设计语言实现相应的算法(即完成编程)。

4、N-S结构化流程图

N-S结构化流程图主要特点是取消了流程线,全部算法由一些基本的矩形框图顺序排列组成一个大矩形表示,即不允许程序任意转移,而只能顺序执行,从而使程序结构化。

N-S图也是流程图的一种很好的表示方法,对应于三种基本结构的N-S图如图6.2所

示。

(1)顺序结构 (2)选择结构

(3)循环结构

图6.2 N-S 图的三种基本控制结构

图中“S1”或“S2”既可以是简单功能的操作,如数据赋值、数据的输入或输出等,也可以是三种基本控制结构中的1种。

在我们的教材中有一些简单的例题,比较详细地示范了如何使用这些算法的描述方法进行算法描述,请大家认真进行自学,通过例题,体会一下这些常用的算法描述方法。

6.2 算法设计中的基本方法

人们希望计算机求解的问题是千差万别的,所设计的求解算法也千差万别,一般来说,算法设计没有什么固定的方法可循。但是通过大量的实践,人们也总结出某些共性的规律,其中包括递归方法、分治方法、贪心法、回溯法、动态规划法以及平衡原则等等。

在我们的课程中不可能对每一种算法都进行深入的讲解,我们只选择最基本、最典型的的穷举法进行一些讨论,以使大家对于算法和算法设计方法有一个初步的了解。

1、程序设计的一般步骤

我们在拿到问题之后,不可能马上就动手编程解决问题,要经历一个思考、编程的过程,对于一般的小问题,我们可以进行简单处理,按照下面给出的5步进行求解:

第1步:明确问题的性质,分析题意

我们可以将问题简单地分为:数值型问题和非数值型问题。不同类型的问题可以有针对性地采用不同的方法进行处理。

第2步:建立问题的描述模型

对于数值型问题,我们可以建立数学模型,通过数学模型来描述问题。对于非数值

型问题,我们一般可以建立一个过程模型,通过过程模型来描述问题。

第3步:设计/确定算法

对于数值型的问题,我们可以采用数值分析的方法进行处理。在数值分析中,有许多现成的固定算法,我们可以直接使用,当然我们也可以根据问题的实际情况设计算法。

对于非数值型问题,我们可以通过数据结构或算法分析与设计进行处理。也可以选择一些成熟的方法进行处理,例如:穷举法,递推法,递归法,分治法,回溯法等。

在算法确定之后,我们要使用上一节中介绍的算法描述方法对算法进行描述。

第4步:编程调试

根据算法,采用一种编程语言编程实现,然后上机调试,得到程序的运行结果。

第5步:分析运行结果

对于运行结果要进行分析,看看运行结果是否符合预先的期望,如果步符合,要进行判断问题出在什么地方,找出原因对算法或程序进行修正,直到得到正确的结果。

下面我们采用穷举法对数值型问题进行求解,让大家首先来体会一下求解数值问题的思考过程。

2、使用穷举法解决数值型问题

穷举法也叫枚举法或蛮干法。其基本思想是根据面临的问题,逐一列举各种可能的情况,并判断每种情况是否满足题设条件。这种方法的好处是最大限度考虑了各种情况,从而为求出最优解创造了条件。

例1:百钱百鸡问题。中国古代数学家张丘建在他的《算经》中提出了著名的“百钱百鸡问题”:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,翁、母、雏各几何?

问题分析与算法设计

这是一个典型的数值型问题,我们要首先建立这个问题的数学模型,数学模型也就是我们平时说的数学方程。

假设:我们要买x只公鸡,y只母鸡,z只小鸡,根据题目的意思可以得到两个方程:x+y+z=100 ①

5x+3y+z/3=100 ②

根据题目的意思,我们可以确定x和y的取值范围:0 <= x、y、z <= 100。

我们可以采用穷举法进行求解。对于变量x,y,z的不同组合,看它们是否满足上面的两个方程,如果满足了,就是问题的一个解。如果不满足,就不是问题的解。

我们可以采用三重嵌套的循环对变量x,y,z进行组合。我们可以写出程序1。

程序1:

#include

main( )

{int x, y, z, j=0; /* j为计数器,记录解的数量*/

for (x=0; x<=100; x++) /* 穷举变量x */

for (y=0; y<=100; y++) /* 穷举变量y */

for (z=0; z<=100; z++) /* 穷举变量z */

if ( x+y+z==100 && 5*x+3*y+z/3==100 ) /* 判断是否满足两个方程*/

printf("%2d:cock=%2d hen=%2d chicken=%2d\n", ++j, x, y, z);

}

运行上面的程序,可以得到运行结果:

1: cock= 0 hen=25 chicken=75

2: cock= 3 hen=20 chicken=77

3: cock= 4 hen=18 chicken=78

4: cock= 7 hen=13 chicken=80

5: cock= 8 hen=11 chicken=81

6: cock=11 hen= 6 chicken=83

7: cock=12 hen= 4 chicken=84

分析程序的运行结果,我们应该可以注意到有有三组解有问题,第2、4、6组解中,小鸡的数量不能被3整除。问题到底出在什么地方呢?我们进行进一步分析,将这些解代入方程②:5x+3y+z/3=100,可以看到:

5*3+3*20+77/3=15+60+25.67=100.67≠100

5*7+3*13+80/3=35+39+26.67=100.67≠100

5*11+3*6+83/3=55+18+27.67=100.67≠100

显然,这三组解不满足数学方程,但由于我们在C语言中,进行int型除法时,77/3的结果就是25,80/3的结果就是26,83/3的结果就是27,这也是计算机在处理整型数据时的特点,在进行除法运算时,对于商的小数部分不再进行处理,直接截断。所以就造成了在数学上本来不成立的方程,在计算机中成立了。

产生这个问题的根本原因就是我们在分析问题的过程中忽略了一个重要条件,变量z 要能够被3整除。为了解决这个问题我们要在原来两个方程的基础上增加一个判断条件:z%3==0

经过修改后,我们可以得到新的程序2:

程序2:

#include

main( )

{ int x, y, z, j=0;

for (x=0; x<=20; x++)

for (y=0; y<=33; y++)

for (z=0; z<=100; z++)

if ( z%3==0 && x+y+z==100 && 5*x+3*y+z/3==100 ) /* 增加了z%3==0 */

printf("%2d:cock=%2d hen=%2d chicken=%2d\n", ++j, x, y, z ) ;

}

再次运行程序,可以得到正确的结果:

1: cock= 0 hen=25 chicken=75

2: cock= 4 hen=18 chicken=78

3: cock= 8 hen=11 chicken=81

4: cock=12 hen= 4 chicken=84

为了保证变量z能够整除3,我们还可以换一个思路,在与z有关的for循环上作文章。程序2的循环中变量z每次+1,这样z就很可能不时3的倍数,我们可以对此进行优化,让变量z每次循环不是加1,而是加3,这样就可以保证变量z一定是3的倍数,因此我们就可以省略判断z是否可以被3整除的过程。

按照这样的思路,我们可以得到程序3。

程序3:

#include

main( )

{int x, y, z, j=0; /* j为计数器,记录解的数量*/

for (x=0; x<=100; x++) /* 穷举变量x */

for (y=0; y<=100; y++) /* 穷举变量y */

for (z=0; z<=100; z+=3) /* 穷举变量z,每次增加的步长为3 */

if ( x+y+z==100 && 5*x+3*y+z/3==100 ) /* 判断是否满足两个方程*/

printf("%2d:cock=%2d hen=%2d chicken=%2d\n", ++j, x, y, z);

}

运行程序3,也可以得到正确的结果。

进一步分析程序3,我们还可以看到:穷举变量x的取值范围过大了,x的取值范围只应该在0~20之间,并且,一旦确定了变量x和变量z的值,我们就可以利用方程①直接计算出变量y的值,这样就可以去掉对变量y的穷举过程。

于是我们可以得到程序4。

程序4:

#include

main( )

{ int x, y, z, j=0; /* j为计数器,记录解的数量*/

for (x=0; x<=20; x++)

for (z=0; z<100; z+=3)

{ y = 100-x-z;

if ( 5*x+3*y+z/3==100 )

printf("%2d:cock=%2d hen=%2d chicken=%2d\n", ++j, x, y, z ) ;

}

很显然,程序4的循环减少了一层,变量x的穷举范围也减少了。

我们进一步分析程序,变量z的穷举次数还是太多,我们可以对变量y进行穷举。

在变量x确定的情况下,我们利用方程②:5x+3y+z/3=100,就可以减少求出变量y 的穷举范围,这样可以得到程序5。

#include

main( )

{ int x, y, z, j=0; /* j为计数器,记录解的数量*/

for (x=0; x<=20; x++)

for ( y=0; y<=(100-5*x)/3; y++ )

{ z = 100-x-y;

if ( z%3==0 && 5*x+3*y+z/3==100 )

printf("%2d:cock=%2d hen=%2d chicken=%2d\n", ++j, x, y, z ) ;

}

程序5不仅是正确的,而且运行的效率也是比较高的。

例2:小明有5本新书,要借给A、B、C三位小朋友,若每人每次只能借一本,则可有多少种不同的借法?

问题分析与算法设计

这是一个数学中的排列问题,即求从5中取3的排列数。

我们可以对5本书从1至5进行编号,假设三个人分别借这5本书中的1本。当a=i 时,表示a借了编号为i的书。

当3个人所借的书的编号都不相同时,就是满足题意的一种借阅方法。

假设:三个人为a、b、c,则它们的取值范围为:

1 <= a、b、c <= 5

且当:a!=b && a!=c && b!=c 时,即为一种可能的借书方法。

使用穷举法,我们可以得到以下程序:

#include

main( )

{int a, b, c, count=0; /* count为借书方案计数器*/

for ( a=1; a<=5; a++ )

for ( b=1; b<=5; b++ )

for ( c=1; a!=b && c<=5; c++)

/* 当前两个人借不同的书时,穷举第三个人的借本情况*/

if ( c!=a && c!=b )

printf( count%8 ? "%2d:%d,%d,%d" : "%2d:%d,%d,%d\n", ++count, a, b, c );

}

通过这两个例子我们可以看到,我们首先要建立数学模型,这是我们能够正确处理问题的基础,然后要确定合理的穷举范围,如果穷举的范围过大,则运行效率会比较低,如果穷举的范围太小了,则可能丢失正确的结果。

3、使用逐步求精的思想设计算法

我们知道,对于复杂的问题,我们不可能一下就得到程序,正确的可行方法是:先将问题中简单的部分明确出来,再逐步对复杂部分进行细化,然后一步一步推出完整程序。这样一种逐步向前推进的思想就是逐步求精法。

下面我们通过典型输出简单图形的例题,来体会一下使用逐步求精法的思维过程。

例3:打印边长为m 的正方型。要求:从键盘输入m 值,输出m 行每行m 个*号组成的正方型。例:输入m=4,输出的图形如下:

* * * *

* * * *

* * * *

* * * *

算法分析与设计

对于上面的问题,我们可以将整个程序的过程分为两大步,写出第1个基本的分析过程:

分析过程1:

1. 从键盘输入m ,

2. 重复打印m 行,每行打印m 个*;

分析过程1中我们使用的就是自然语言的算法描述。

显然,分析过程1中的第1步比较容易实现,第2步要实现的难度就比较大了,我们可以先对第2步中自然语言的算法描述进行加细,采用类似C语言的循环语句进行细化,这样可以得到分析过程。

分析过程2:

1. 输入m ;

2. for ( k=1; k<=m; k++)

打印一行中的m 个* ;

在分析过程2中,我们采用一个for循环,表示了前一步分析过程中“重复打印m行”

这样的自然语言的描述。显然,分析过程2中的描述比分析过程1中的描述要进了一步。

下面,我们可以将“打印一行中的m个*”进行进一步细化,分为两个动作:首先打印m个*,然后在屏幕上换一个新行。这样可以得到更新的分析过程。

分析过程3:

1. 输入m;

2. for ( k=1; k<=m; k++)

2.1 { 打印m 个* ;

2.2 换新行;

}

我们可以继续将分析过程3中的“打印m个*”进行细化,采用一个for循环输出m 个*。将“换新行”直接变为“输出1个\n”。这样就可以得到分析过程4。

分析过程4:

1. 输入m;

2. for ( k=1; k<=m; k++)

{ for ( j=1; j<=m; j++ )

输出1个*;

输出1个\n ;

}

此时,分析过程4已经非常接近程序了,算法的每一步都可以使用C语言的语句实现了,我们进行整理,按照编写C语言程序的要求,加上必要的函数和变量说明,就可以得到程序如下:

#include

main ( )

{ int k, m, j;

scanf ( ”%d”, &m );

for ( k=1; k<=m; k++ ) /* 控制打印m 行*/

{ for ( j=1; j<=m; j++ ) /* 打印一行中的m个*号*/

printf (”*”);

printf(”\n”);

}

}

以上这个过程就是一个典型的采用逐步求精法对问题进行逐步分析,最终得到正确程序的全过程。

下面我们再来看一个例子。

例4:从键盘输入h值,输出h行用*号组成等腰三角形。例:输入h=4,输出的图形如下:

*

* * *

* * * * *

* * * * * * *

●算法分析

根据图形的要求,我们可以分析出下列结论:

1、图形按行输出,共输出h 行。

2、整个图形的每一行中,前面先输出空格,后面再输出*。所以程序的关键是:要找出每一行(第k行)中,输出的空格的数量和*的数量。

3、对于图形中的第k 行(1<=k<=h):则要输出h-k 个空格和2k-1 个*

●算法设计

模仿例3的分析过程,我们可以写出第一个分析过程。

分析过程1:

1.输入h;

2.重复打印h行。对于第k 行,每行h-k 个空格和2k-1 个*

我们对分析过程1中的第2步进行加细,可以得到进一步的过程:

分析过程2:

1.输入h;

2. for ( k=1; k<=h; k++ ) /* h行*/

{ 重复打印h-k 个空格;

重复打印2k-1 个*;

换行;

}

到了分析过程2,我们就可以非常容易地继续借助例3中的细化方法推出最后的程序。

●程序:

#include

main ( )

{ int h, k, j;

scanf (”%d”, &h);

for ( k=1; k<=h; k++) /* 控制打印h 行*/

{ for ( j=1; j<=h-k; j++) /* 打印空格*/

printf (””);

for ( j=1; j<=2*k-1; j++)/* 打印* 号*/

printf (”*”);

printf(”\n”) ;

}

}

6.3 算法设计要求与评价方法

最后我们来看看算法设计的要求与评价办法。

算法设计的一般要求应该包括:

1.正确性。

2.可读性。

3.健壮性。

4.效率高与低存储量需求。

除了上面的几个方面外,算法设计的要求最主要的是算法的正确性和算法的运行效率。

1.算法的正确性

算法的正确性是最起码的,也是最重要的。一个正确的算法(或程序)应当对所有合法的输入数据都能得到应该得到的结果。

对于那些简单的算法(或程序),可以通过上机调试验证其正确与否。调试用的数据要精心挑选那些具有“代表性”的,甚至有点“刁钻性”的,以保证算法对“所有的”数据都是正确的。

但是,一般来说,调试并不能保证算法对所有数据都正确,只能保证算法对部分数据正确,调试只能验证算法有错,不能证明算法无错。就是说只要找出一组数据使算法失败(即计算结果不对),就能否定整个算法的正确性。但调试往往不能穷尽所有可能的情况,所以,即使算法有错,也不一定能通过调试在短时间内发现。不少大型软件在使用多年后,仍然还能发现其中的错误就是这个道理。

要保证算法的正确性,通常要用数学归纳法去证明。

2.算法的运行效率

评价算法性能另一个要考虑的因素就是算法的运行效率,也就是要估计一下按算法编制的程序在计算机上执行所耗费时间和所占用空间,即程序运行时,大致需要耗用多少时间,占用多少内存单元,其时间、空间需求量能否满足客观要求。

评价算法运行效率的主要技术指标是:算法运行的时间复杂度和空间复杂度。

《程序设计基础》试卷B及答案

黄淮学院计算机科学系2007-2008学年度第一学期 期末考试《程序设计基础》B 卷 注意事项:本试卷适用于计科系06级本科计算机科学与技术专业学生。 1.__ ____函数是程序启动时惟一的入口。 2.算法的复杂性包含两方面: 和 。 3.已知 char c= 'a' ; int x=2,k; 执行语句k=c&&x++ ; 则x 为 ,k 为 。 4.数值0x34对应的十进制为 。 5.已知int a ; 则表达式”(a=2*3 , 3*8), a*10”的结果为_ _ ____,变量a 的值为___ ___。 6.面向对象程序开发步骤为: 、 和面向对象实现。 1.下列程序设计语言中( )是面向对象语言。 A. FORTRAN B. C 语言 C. C++ D. 汇编语言 2.下列关于注释的说法哪个是错误的( )。 A. 注释不是程序中的可执行语句 B. 注释对于程序的执行有很重要的意义 C. 注释将在程序的编译阶段被编译器剔除 D. 编程时在程序中添加适当的注释是一个良好的编程风格 3.算法设计应该遵守( )的设计原则。 A. 自底向上,逐步求精 B. 自顶向下,逐步求精 C. 自底向上,同步扩展 D. 自顶向下,同步扩展 4.下列语句执行后a 的值为( )。 int a=4, &z=a, k=3; a=k; z+=2; k++; A. 0 B. 4 C. 1 D. 5 5.以下程序执行后,屏幕输出为( )。 #include “iostream.h ” void fun(int d) {d++;} void main() { int d=3; fun(d); d++; cout<=’a ’)&&(d<=’z ’) B. ‘a ’<=d<=’z ’ C. (d>=’a ’)||(d<=’z ’) D. ‘A ’<=d<=’Z ’ 8.已知:int k=7, x=12; 则执行语句( )后x 的值为0。 A. x+=k-x%5; B. x+=(x-k%5); C. x%=(k-=5); D. (x-=k)-(k+=5); 9.运行下列程序,其输出结果为( )。 #include “iostream.h ” void main() { int x(5),y(5),z(5); y--&&++x&&z--||y++; cout<

程序设计基础辅导材料6

第6章算法和问题求解 本章我们来学习算法的基本概念。首先我们要了解算法,掌握算法的描述方法,进一步我们要学习算法的三种基本结构,然后要了解常见的、典型的算法,并要学习如何设计自己的简单算法。 6.1 算法的描述方法 1、用自然语言表达 所谓的“自然语言”指的是日常生活中使用的语言,如汉语、英语或数学语言。 例如:我们想计算1到N的累加和,为简单起见,设N的值不大于1000。 这就是用自然语言配合数学语言描述算法。 用自然语言描述的算法通俗易懂,而且容易掌握,但算法的表达与计算机的具体高级语言形式差距较大,通常是用于介绍求解问题的一般算法。 2、用伪代码表示 伪代码是一种介于自然语言与计算机语言之间的算法描述方法。它结构性较强,比较容易书写和理解,修改起来也相对方便。其特点是不拘泥于语言的语法结构,而着重以灵活的形式表现被描述对象。它利用自然语言的功能和若干基本控制结构来描述算法。 伪代码没有统一的标准,可以自己定义,也可以采用与程序设计语言类似的形式。3、用传统流程图描述算法 流程图也叫框图,它是是用各种几何图形、流程线及文字说明来描述计算过程的框图。

用流程图描述算法的优点是:直观,设计者的思路表达得清楚易懂,便于检查修改。 表6.1是用传统流程图描述算法时常用的符号。 表6.1流程图常用符号 用流程图描述算法时,一般要注意以下几点: (1)应根据解决问题的步骤从上至下顺序地画出流程图,各图框中的文字要尽量简洁。 (2)为避免流程图的图形显得过长,图中的流程线要尽量短。 (3)用流程图描述算法时,流程图的描述可粗可细,总的原则是:根据实际问题的复杂性,流程图达到的最终效果应该是,依据此图就能用某种程序设计语言实现相应的算法(即完成编程)。 4、N-S结构化流程图 N-S结构化流程图主要特点是取消了流程线,全部算法由一些基本的矩形框图顺序排列组成一个大矩形表示,即不允许程序任意转移,而只能顺序执行,从而使程序结构化。 N-S图也是流程图的一种很好的表示方法,对应于三种基本结构的N-S图如图6.2所

计算机科学导论第4章 程序设计基础(答案)

第4章程序设计基础 习题 一、选择题 1. A 2.D 3.C 4. A 5. B 6.D 7.A 8.B 9.C 10. B 11. D 12. A 13.B 14.D 15.C 二、简答题 1.结构化程序设计的思想是什么? 答:结构化程序设计的基本思想就是采用自顶向下、逐步求精的设计方法和单入口单出口的控制结构。 2.结构化程序设计的原则是什么? 答:结构化程序设计的原则是: (1) 使用顺序、选择、循环3种基本控制结构表示程序逻辑。 (2)程序语句组织成容易识别的语句模块,每个模块都是单入口、单出口。 (3)严格控制GOTO语句的使用。 3.结构化程序设计语言采用自顶向下的方法进行程序设计的特点是什么? 答:利用结构化程序设计语言采用自顶向下的方法进行程序设计的特点是: (1) 问题分解成子问题的结构必须与3种基本程序结构之一相对应。 (2) 问题的划分决定了程序的结构。一方面,子问题的划分决定了这一层次的程序是3种基本结构中的哪一种结构;另一方面,一个问题该如何划分成子问题是灵活的,并不是只有一种分解方法。分解的好坏就决定了设计的质量,也决定了程序的不同结构。 (3) 问题的边界应该清晰明确。只有这样才能精确地解决这些子问题,否则就会模棱两可,无从下手。 4.简述面向对象和结构化程序设计的区别。 答:面向对象是从本质上区别于传统的结构化方法的一种新方法、新思路。它吸收了结构化程序设计的全部优点,同时又考虑到现实世界与计算机之间的关系,认为现实世界是由一系列彼此相关并且能够相互通信的实体组成,这些实体就是面向对象方法中的对象,每个对象都有自己的自然属性和行为特征,而一类相似对象的共性的抽象描述,就是面向对象方法中的核心——类。 5. 从互联网上面搜索选择结构的使用方式。 答案略。 6.简述模块化方法的原理。

程序设计基础(知识点)

第三部分程序设计基础 3.1 程序、程序设计、程序设计语言的定义 ⑴程序:计算机程序,是指为了得到某种结果而可以由计算机等具有信息处理能力的装置执行的代码化指令序列,或者可以被自动转换成代码化指令序列的符号化指令序列或者符号化语句序列。 ⑵程序设计:程序设计是给出解决特定问题程序的过程,是软件构造活动中的重要组成部分。程序设计往往以某种程序设计语言为工具,给出这种语言下的程序。程序设计过程应当包括分析、设计、编码、测试、排错等不同阶段。 ⑶程序设计语言:程序设计语言用于书写计算机程序的语言。语言的基础是一组记号和一组规则。根据规则由记号构成的记号串的总体就是语言。在程序设计语言中,这些记号串就是程序。程序设计语言有3个方面的因素,即语法、语义和语用。 3.2 高级语言和低级语言的概念及区别 ⑴高级语言:高级语言(High-level programming language)是高度封装了的编程语言,与低级语言相对。

它是以人类的日常语言为基础的一种编程语言,使用一般人易于接受的文字来表示(例如汉字、不规则英文或其他外语),从而使程序编写员编写更容易,亦有较高的可读性,以方便对电脑认知较浅的人亦可以大概明白其内容。 ⑵低级语言:低级语言分机器语言(二进制语言)和汇编语言(符号语言),这两种语言都是面向机器的语言,和具体机器的指令系统密切相关。机器语言用指令代码编写程序,而符号语言用指令助记符来编写程序。 ⑶区别: 高级语言:实现效率高,执行效率低,对硬件的可控性弱,目标代码大,可维护性好,可移植性好低级语言:实现效率低,执行效率高,对硬件的可控性强,目标代码小,可维护性差,可移植性差 了解知识:CPU运行的是二进制指令,所有的语言编写的程序最终都要翻译成二进制代码。越低级的语言,形式上越接近机器指令,汇编语言就是与机器指令一一对应的。而越高级的语言,一条语句对应的指令数越多,其中原因就是高级语言对底层操作进行了抽象和封装,

程序设计基础练习题(全答案版)

《程序设计基础——C#.NET》练习 参考答案: 一、选择题 https://www.360docs.net/doc/0d13354168.html,的目的就是将____A____作为新一代操作系统的基础,对互联网的设计思想进行扩展。A.互联网 B. Windows C. C# D. 网络操作系统 2.假设变量x的值为10,要输出x值,下列正确的语句是__C__。 A.System.Console.writeline(“x”) B. System.Cosole.WriteLine(“x”) C. System.Console.WriteLine(“x={0}”,x) D. System.Console.WriteLine(“x={x}”) 3.要退出应用程序的执行,应执行下列的_A___语句。 A. Application.Exit(); B. Application.Exit; C. Application.Close(); D. Application.Close; 4.关于C#程序的书写,下列不正确的说法是__D________。 A.区分大小写 B.一行可以写多条语句 C.一条语句可以写成多行 D.一个类中只能有一个Main()方法,因此多个类中可以有多个Main()方法 5. 在C#语言中,下列能够作为变量名的是__C__。 A.if B. 3ab C. b_3a D. a-bc 7. 能正确表示逻辑关系“a≥5或a≤0”的C#语言表达方式是__D__。 A.a>=5 or a<=0 B. a>=5|a<=0 C. a>=5&&a<=0 D. a>=5||a<=0 8. 以下程序的输出结果是___C_____。 A. 5 B. 4 C. 6 D. 不确定 9. If语句后面的表达式应该是__A___。 A.逻辑表达式 B. 条件表达式 C. 算术表达式 D. 任意表达式10.有如下程序:

第10章 程序设计基础_习题参考答案

第10章习题参考答案 一、选择题 1.编写程序时,不需要了解计算机内部结构的语言是( C )。 A.机器语言B.汇编语言 C.高级语言D.指令系统 2.能够把由高级语言编写的源程序翻译成目标程序的系统软件叫( D )。 A.解释程序B.汇编程序 C.操作系统D.编译程序 3.结构化程序设计主要强调的是( B )。 A.程序的规模B.程序的可读性 C.程序的执行效率D.程序的可移植性 4.在面向对象方法中,一个对象请求另一个对象为其服务的方式是通过发送( D )。 A.调用语句B.命令C.口令D.消息 5.下列程序段的时间复杂度是( A )。 t=i; i=j; j=t; A.O(1) B.O(3) C.O(n) D.O(3n) 6.一位同学用C语言编写了一个程序,编译和连接都通过了,但就是得不到正确结果,那么下列说法正确的是( C )。 A.程序正确,机器有问题B.程序有语法错误 C.程序有逻辑错误D.编译程序有错误 二、填空题 1.程序设计的基本步骤是(分析问题,确定数学模型)、(设计算法,画出流程图)、(选择编程工具,按算法编写程序)、(调试程序,分析输出结果)。 2.用高级语言编写的程序称为(源程序),把翻译后的机器语言程序叫做(目标程序)。 3.结构化程序设计的3种基本逻辑结构为顺序、选择和(循环)。 4.面向对象程序设计以(对象)作为程序的主体。 5.在面向对象方法中,信息隐蔽是通过对象的(封装)性来实现的。 6.在最坏情况下,冒泡排序的比较次数为(n(n-1)/2)。 三、问答题 1.什么是程序?什么是程序设计? 程序是计算机指令的集合,这些指令描述了计算机的一系列操作步骤。 使用计算机解决实际问题,通常是先要对问题进行分析并建立数学模型(对数值计算问题)或提出对数据处理的需求(对非数值计算问题),然后进行算法设计,并用某一种程序设计语言编写程序,最后调试程序,使之运行后能产生预期的结果。这个过程称为程序设计。 2.什么是算法?它有何特征?如何描述算法? 计算机解决问题的方法和步骤,就是计算机解题的算法。 算法具有5个特性:有穷性、确定性、有效性、一般要有数据输入、要有结果输出。 描述算法有多种不同的工具:自然语言、流程图、结构化流程图和伪代码等。 3.简述冒泡排序、折半查询的基本思想。 冒泡法排序法是每趟将相邻的两个数两两进行比较,若满足排序次序,则进行下一次比较,若不满足排序次序,则交换这两个数,直到最后。总的比较次数为n-1次,此时最后的

计算机程序设计基础习题册含答案

《计算机程序设计基础》 计算机程序设 计基础_基础知识(一) 班级 学号 姓名 成 绩 一、 单选题 习题册

1.C++源程序文件的默认扩展名为A。 2.A) cpp B) exe C) obj D) lik 3.由C++源程序文件编译而成的目标文件的默认扩展名为C。 4.A) cpp B) exe C) obj D) lik 5.由C++目标文件连接而成的可执行文件的默认扩展名为B。 6.A) cpp B) exe C) obj D) lik 7.编写C++程序一般需经过的几个步骤依次是B。 8.A)编译、编辑、连接、调试 B)编辑、编译、连接、调试 C)编译、调试、编辑、连接 D)编辑、调试、编辑、连接9.程序中主函数的名字为 A 。 10.A) main B) MAIN C) Main D) 任意标识 符 11.下面四个选项中,均是不合法的 用户标识符的选项的是 C。 12.A) A p_o do B)float lao _A C)b-a goto int D)_123 temp INT 13.下列变量名中合法的是 C。 14.A) B)C)Tom B) 3a66 C) _6a7b D) $ABC 15.存储以下数据,占用存储字节最 多的是 D 。 16.A) 0 B) ‘0’

C) “0” D) 17.在C++语言中,字符型数据在内存中的存储形式是D。 18.A) 补码 B) 反码 C) 原码 D) ASCII码 19.若有说明语句:char c =’\072’;则变量c A。 20.A) 包含1个字符 B) 包含2个字符 C) 包含3个字符 D) 说明不合法,变量的值不确定 二、填空题 1.C++头文件和源程序文件的扩展名分别为.h和.cpp 。 2.C++语言规定,标识符只能由字母、数字、下划线三种字符组成,而且第一个字符必须是字母或下划线。 3.一条表达式语句必须以__分号_;___作为结束符。 4.用于从键盘上为变量输入值的标准输入流对象是___cin____;用于输出表达式值的标准输出流对象是__cout____。 5.在一个C++程序文件中,若要包含另外一个头文件或程序文件,则应使用以_#include___标识符开始的预处理命令 计算机程序设计基础_基础知识(二) 班级学号姓名成绩 一、单选题 1.下列哪一个是C++语言中合法的变量 C A) 8ZSe B) ±A0 C) X0_2 D) ’x0’2.已知ch是字符型变量,下面不正确的赋值语句是A 3.A) ch='a+b' B) ch='\0'

C语言 程序设计基础试题六及答案

《程序设计基础》考试试卷六 班级姓名学号____________ 一.选择题(20分): 1.判断下面标识符中哪个是C语言中合法的用户定义标识符: A. 2a1b B. a%bd C. typedef D. _123 2.下列表达式的值哪些不等于0? A. 2>>1 B. –a&a C. 1>5 D. a^a 3.设有一分段函数:a=b 则下列程序段哪个是正确的? A. if(ab) D. if (a>=b) If(c==d) {if (c==d) if (c==d) x=2; x=1; x=1; x=1; else else x=2; else x=2;} else x=2; {if(c==d) x=1;} 4.下列描述中不正确的是 A 字符型数组中可以存放字符串 B 可以对字符型数组进行整体输入、输出 C 可以对整型数组进行整体输入、输出 D 不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值 5. 若有两条语句:static char x[]=”abcde”; static char y[]={…a?,?b?,?c?,?d?,?e?}; 则下列说法中正确的是:。 A. x数组和y数组长度相同 B.x数组长度大于y数组长度 C.x数组长度小于y数组长度 D.以上三种说法均错误。 6. 返回值为void的函数,其含义是: A.调用函数之后,被调用的函数没有返回值; B.调用函数之后,被调用的函数不返回 C.调用函数之后,被调用的函数返回值为任意类型 D.以上三种说法均不正确。 7. 以下说法中正确的是: A #define和printf都是C语句 B #define是C语句,而printf不是 C printf是C语句,但#define不是 D #define和printf都不是C语句 8. 假设指针px和py是指向占8个字节的double数据类型,今设px=2048, py=1024,则px-py= 。 A. 1024 B. 256 C. 128 D. 64

程序设计基础习题

7.8习题 1.编制一个 C 程序,从键盘输入一个正整数,如果该数为素数,则输出该素数,否则输出该数的所有因子(除去1 与自身)。 2.编制一个 C 程序,从键盘输入一个正整数N,然后计算并输出 1 2 |N | S=1 2 2 2 最后计算并输出 T= 1 1 2 1 3 K ( 1) 1 1 K 其中K S 的整数部分。 3.编制一个 C 程序,计算并输出多项式的值 5. ( 0.5 1)05.( 0.5 1)( 05.2) 2 3 S 1 05.x x x n 2!3! 5. ( 0.5 1) ( 0.5 n 1) n! x n 的值,直到|S n-S n-1|<0.000001 为止。其中x 从键盘输入。 4. 编制一个 C 程序,计算下列级数和: s n=1+(2/1)+(3/2)+(5/3)+(8/5)+(13/8)+ , +(a n/a n-1) 其中n≥1,由键盘输入; s1=1。 5.编制一个 C 程序,计算并输出下列级数之和: x e 1 x 2 3 n x x x 2! 3! n! 其中n 与x 从键盘输入。 6.编制一个 C 程序,输出能写成两个数平方之和的所有三位数。 7.如果一个数恰好等于它的所有因子(包括1 但不包括自身)之和,则称之为“完数”。例如,6 的因子为1、2、3,且1+2+3=6 ,即 6 是一个“完数”。编制一个 C 程序,计算并输 出1000 以内的所有“完数”之和。 8.编制一个 C 程序,从键盘输入30 个实数,分别计算并输出以下 5 个量:所有正数之和,所有负数之和,所有数的绝对值之和,正数的个数,负数的个数。 9. 100 元钱买100 只鸡,母鸡 3 元/只,公鸡 2 元/只,小鸡0.5 元/只。编制一个 C 程序,制 定买鸡方案 。 10.设A,B,C,D,E 五人,每人额头上贴了一张或黑或白的纸。五人对坐,每人都可以 看到其他人额头上的纸的颜 色 ,但都不知道自己额头上的纸的颜色 。五人相互观察后开始说 话: A 说:我看见有三人额头上贴的是白纸,一人额头上贴的是黑纸。 B 说:我看见其他四人额头上贴的都是黑纸。 C 说:我看见有一人额头上贴的是白纸,其他三人额头上贴的是黑纸。 D 说:我看见四人额头上贴的都是白纸。 E 什么也没说。 现在已知额头上贴黑纸的人说的都是真话,额头上贴白纸的人说的都是假 话。编制一个 C 程序,确定这五人中谁的额头上贴白纸,谁的额头上贴黑纸?

java语言程序设计基础篇第十版第十四章练习答案

01 import class Exercise14_01 extends Application { @Override Not needed for running from the command line. */ public static void main(String[] args) { launch(args); } } 02 import class Exercise14_02 extends Application { @Override Not needed for running from the command line. */ public static void main(String[] args) { launch(args); } } 03 import class Exercise14_03 extends Application { @Override One is to use the hint in the book. ArrayList list = new ArrayList<>(); for (int i = 1; i <= 52; i++) { (i); } HBox pane = new HBox(5); ; ().add(new ImageView("image/card/" + (0) + ".png")); ().add(new ImageView("image/card/" + (1) + ".png")); ().add(new ImageView("image/card/" + (2) + ".png")); Not needed for running from the command line. */ public static void main(String[] args) { launch(args); } } 04 import class Exercise14_04 extends Application { @Override dd(txt); }

程序设计基础习题

7.8 习题 1. 编制一个C程序,从键盘输入一个正整数,如果该数为素数,则输出该素数,否则输出该数的所有因子(除去1与自身)。 2. 编制一个C程序,从键盘输入一个正整数N,然后计算并输出 最后计算并输出 3. 编制一个C程序,计算并输出多项式的值 的值,直到|S n-S n-1|<0.000001 为止。其中x从键盘输入。 4. 编制一个C程序,计算下列级数和: s n=1+(2/1)+(3/2)+(5/3)+(8/5)+(13/8)+…+(a n/a n-1) 其中n≥1,由键盘输入;s1=1。 5. 编制一个C程序,计算并输出下列级数之和: 其中n与x 6. 编制一个C程序,输出能写成两个数平方之和的所有三位数。 7. 如果一个数恰好等于它的所有因子(包括1但不包括自身)之和,则称之为“完数”。例如,6的因子为1、2、3,且1+2+3=6,即6是一个“完数”。编制一个C程序,计算并输出1000以内的所有“完数”之和。 8. 编制一个C程序,从键盘输入30个实数,分别计算并输出以下5个量:所有正数之和,所有负数之和,所有数的绝对值之和,正数的个数,负数的个数。 9. 100元钱买100只鸡,母鸡3元/只,公鸡2元/只,小鸡0.5元/只。编制一个C程序,制定买鸡方案。 10. 设A,B,C,D,E五人,每人额头上贴了一张或黑或白的纸。五人对坐,每人都可以看到其他人额头上的纸的颜色,但都不知道自己额头上的纸的颜色。五人相互观察后开始说话: A说:我看见有三人额头上贴的是白纸,一人额头上贴的是黑纸。 B说:我看见其他四人额头上贴的都是黑纸。 C说:我看见有一人额头上贴的是白纸,其他三人额头上贴的是黑纸。 D说:我看见四人额头上贴的都是白纸。 E什么也没说。 现在已知额头上贴黑纸的人说的都是真话,额头上贴白纸的人说的都是假话。编制一个

程序设计基础作业答案

《程序设计基础(C)》作业 第1章C语言的基本构成 一、选择题 1.(A)是构成C语言程序的基本单位。 (A)函数(B)过程 (C)子程序(D)文件 2.(B)是C语言提供的合法的数据类型关键字。 (A)Float (B)signed (C)integer (D)Char 3.以下选项中不合法的用户标识符是(A)。 (A)abc.c (B)file (C)Main (D)PRINTF 4.以下选项中不合法的用户标识符是(AB)。 (A)l23 (B)printf (C)A$(D)Dim 5.合法的C语言长整型常数是(A)。 (A)0L (B)5712700 (C)(D) 6.C语言中,要求运算数必须是整型的运算符是(A)。 (A)% (B) / (C)< (D)! 7.以下选项中正确的整型常量是(B)。 (A)12. (B)-20 (C)l,000 (D)0458 8.以下选项中不正确的实型常量是(B)。 (A)-1 (B). (C)(D)456e-2 9.C语言中运算对象必需是整型的运算符是(D)。 (A) \ (B) + (C) * (D) % 二、程序调试题 1.编辑、调试以下程序 步骤1:在Visual C++环境下新建文件可用[开始]→[程序]→[Microsoft Visual C++] →[Microsoft Visual C++] →[文件] →[新建]→[文件] →[C++ Sourse File],输入文件名,

z=x+y; return z; } int main( ) { int add(int,int); /* 函数的说明,告诉系统在主函数中要调用add函数 */ int a,b,c; /* 变量的定义*/ scanf("%d %d\n",&a,&b); c=add(a,b); /* 函数调用 */ printf("%d+%d=%d\n",a,b,c); /* 调用系统输出函数printf,%d为格式控制符,依次用后面的变量值填充,以整数形式输出 */ } 请思考文件由几个函数构成? 由个函数构成 调用了那几个系统函数? 调用2个系统函数,分别是scanf和printf 此程序中用到了哪几个保留字?哪几个用户自定义标识符? 保留字:int,return 自定义表示符:z,x,y,a,b,c 步骤3: 编译并运行程序,程序运行时输入两个整数,20 40 ,观察程序运行的结果。 20+40=60 2.编辑、调试以下程序 步骤1:在Visual C++环境下新建文件可用[开始]→[程序]→[Microsoft Visual C++] →[Microsoft Visual C++] →[文件] →[新建]→[文件] →[C++ Sourse File],输入文件名步骤2:在文本编辑器中输入以下C程序 #include<> /*文件预处理,包含标准输入输出库,程序可调用输入、输出函数*/ #include<1-2-2> int main( ) { int and(int,int); /* 函数的说明,告诉系统在主函数中要调用and函数 */ int or(int,int); /* 函数的说明,告诉系统在主函数中要调用and函数 */ int a,b,c; /* 变量的定义*/ scanf("%d %d",&a,&b); c=and(a,b); /* 函数调用 */ printf("%d && %d=%d\n",a,b,c); /*调用系统输出函数printf,%d为格式控制符,依次用后面的变量值填充,以整数形式输出 */ c=or(a,b); /* 函数调用 */ printf("%d || %d=%d\n",a,b,c); } int and(int a,int b) {

java语言程序设计基础篇第十章第三题参看答案

10.3 /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ /** * * @author Administrator */ class MyInteger{ int value; String value1; MyInteger(int value){ this.value=value; } MyInteger(String value1){ this.value1=value1; } int getValue(){ return value; } boolean isEven(){ return value%2==0?true:false; } boolean isOdd(){ return value%2!=0?true:false; } boolean isPrime(){ for(int i=2;i

计算机二级 C语言 程序设计基础试题六

《程序设计基础》考试试卷六 1.判断下面标识符中哪个是C语言中合法的用户定义标识符: A. 2a1b B. a%bd C. typedef D. _123 2.下列表达式的值哪些不等于0? A. 2>>1 B. –a&a C. 1>5 D. a^a 3.设有一分段函数:a=b 则下列程序段哪个是正确的? A. if(ab) D. if (a>=b) If(c==d) {if (c==d) if (c==d) x=2; x=1; x=1; x=1; else else x=2; else x=2;} else x=2; {if(c==d) x=1;} 4.下列描述中不正确的是 A 字符型数组中可以存放字符串 B 可以对字符型数组进行整体输入、输出 C 可以对整型数组进行整体输入、输出 D 不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值 5. 若有两条语句:static char x[]=”abcde”; static char y[]={…a?,?b?,?c?,?d?,?e?};则下列说法中正确的是:。 A. x数组和y数组长度相同 B.x数组长度大于y数组长度 C.x数组长度小于y数组长度 D.以上三种说法均错误。 6. 返回值为void的函数,其含义是: A.调用函数之后,被调用的函数没有返回值; B.调用函数之后,被调用的函数不返回 C.调用函数之后,被调用的函数返回值为任意类型 D.以上三种说法均不正确。 7. 以下说法中正确的是: A #define和printf都是C语句 B #define是C语句,而printf不是 C printf是C语句,但#define不是 D #define和printf都不是C语句 8. 假设指针px和py是指向占8个字节的double数据类型,今设px=2048, py=1024,则px-py= 。 A. 1024 B. 256 C. 128 D. 64 9. .指出下列程序段中那个语句是不正确的? (int x,y,z[10],*px,*py) A. px=&x,py=px B. px=x C. py=&y D. px=z 10. 设char b[5],*p=b; 以下赋值语句正确的是。 A. p=100 B. p=?abcd? C. p=?abcd? D. *p=”abcd” 11. C语言中,运算对象必须是整型的运算符是。 A. % B./ C.%和/ D.>= 12. 为表示关系x≥y≥z,应使用C语言表达式。 A. (x≥y)&&(y≥z) B. (x>=y) and(y>=z) C. (x>=y)&&(y>=z) D. (x>=y)‖(y>=z) 13. 以下对C语言函数的有关描述中,正确的是:

java程序设计方案基础第十章第一题

10.1 设计一个名为Time的类。这个类包含:表示时间的数据域hour、minute和secon d。 一个以当前时间创建Time对象的无参构造方法(数据域的值表示当前时间)。 一个构造Time对象的构造方法,这个对象有一个特定的时间值,这个值是以毫秒表示的、从1970年1月1日午夜开始到现在流逝的时间段(数据域的值表示这个时间)。一个构造带特定的小时、分钟和秒的Time对象的构造方法、 三个数据域hour、minute和second各自的get方法。 一个名为setTime(long elapseTime)的方法使用流逝的时间给对象设置一个新时间。代码: class Time{ long hour,minute,second。 long time。 public Time(){ time=System.currentTimeMillis()。 } public Time(long time){ this.time=time。 } public Time(long hour,long minute,long second){ time= (hour*3600+minute*60+second)*1000。 } public long getHour() { second = (time / 1000)。 minute = (second / 60)。 return hour = ( minute/ 60) % 24+8。 } public long getMinute() {

second = (time / 1000)。 return minute = (second/ 60) % 60。 } public long getSecond() { return second = (time / 1000) % 60。 } public void setTime(long elapseTime) { time = elapseTime。 } } public class XiTi101 { public static void main(String[] args){ Time t1=new Time()。 System.out.println("时间:"+t1.getHour()+":"+t1.getMinute()+":"+ t1.getSecond())。 Time t2=new Time(555550000-8*60*60*1000)。 System.out.println("时间:"+t2.getHour()+":"+t2.getMinute()+":"+t2.getSecond())。 } } /*未来获得北京时间,必须加上8小时,所以之后必须减去8小时,即减去8*60*60*1000毫秒*/

程序设计基础

《程序设计基础(VB)》考试A卷 3 选择题(每题2分,10题,共20分) 1 Visual Basic 6.0的窗体文件的扩展名是()。 A vbp B frm C cls D doc 2 Visual Basic 6.0 属于()。 A 机器语言 B 汇编语言 C 高级语言 D 二进制 3 以下用来设置对象是否可用的属性是()。 A visible B enabled C hide D windowstate 4 当单击一个对象时引发的事件是()。 A dblclick B click C unload D load 5 能够将大写字母变为小写字母的函数是()。 A len() B ucase() C lcase() D sqr() 6 用来弹出一个对话框的语句是()。 A print B msgbox C cls D end 7 程序的基本控件结构是() A 顺序结构、多分支结构和单分支结构 B For......Next结构、Do......Loop结构和Select......Case 结构。 C 顺序结构、选择结构和循环结构 D 单行结构和多行结构。 8 下列程序执行的结果为( ) x=10 : y=20 z=x=y Print x;y;z A 10 20 False B 10 20 20 C 20 20 False D False 20 False 9 以下程序的运行结果是()。 S=9 if s mod 3=0 then s=s+5 else s=s-5 endif print s A 9 B 3 C 14 D 4 10 下面有一段循环程序,该循环的循环次数是()。 x=1 Do x=x+3 Print x Loop Until x>=8 A 1 B 2 C 3 D 4

C语言 程序设计基础试题一及答案

《程序设计基础》考试试卷一 班级姓名学号____________ 一、选择题(20分) 1.算法具有五个特性,以下选项中不属于算法特性的是 (A)有穷性(B)简洁性(C)可行性(D)确定性 2.以下选项中可作为C语言合法常量的是 (A)-80. (B)-080 (C) (D) 3.以下叙述中正确的是 (A)用C语言实现的算法必须要有输入和输出操作 (B)用C语言实现的算法可以没有输出但必须要有输入 (C)用C程序实现的算法可以没有输入但必须要有输出 (D)用C程序实现的算法可以既没有输入也没有输出 4.以下不能定义为用户标识符是 (A)Main (B) _0 (C) _int (D) sizeof 5.以下选项中,不能作为合法常量的是 (A) (B) (C)+4 (D) 6.数字字符0的ASCII值为48,若有以下程序 main() {char a='1',b='2'; printf("%c,",b++); printf("%d\n",b-a);} 程序运行后的输出结果是 (A)3,2 (B)50,2 (C)2,2 (D)2,50 7.有以下程序 main(){

int m=12,n=34; printf("%d%d",m++,++n); printf("%d%d\n",n++,++m);}程序运行后的输出结果是 (A) (B) (C) (D) 8.有以下语句:int b;char c[10];,则正确的输入语句是 A)scanf("%d%s",&b,&c); B) scanf("%d%s",&b,c); (C)scanf("%d%s",b,c); D)scanf("%d%s",b,&c); 9.有以下程序 main(){ int m,n,p; scanf("m=%dn=%dp=%d",&m,&n,&p); printf("%d%d%d\n",m,n,p); } 若想从键盘上输入数据,使变量M中的值为123,N中的值为456,P中的值为789,则正确的输入是 A)m=123n=456p=789 B)m=123 n=456 p=789 C)m=123,n=456,p=789 D)123 456 789 10.有以下程序 main(){ int a,b,d=25; a=d/10%9;b=a&&(-1); printf("%d,%d\n",a,b); } 程序运行后的输出结果是 A)6,1 B)2,1 C)6,0 D)2,0 11.有以下程序 main(){ int i=1,j=2,k=3; if(i++==1&&(++j==3||k++==3)) printf("%d %d %d\n",i,j,k);}程序运行后的输出结果是 (A)1 2 3 (B)2 3 4 (C)2 2 3 (D)2 3 3 12.若整型变量a、b、c、d中的值依次为:1、4、3、2。则条件表达式a

第6章___程序设计基础

二、填空题 1. S = S + X * X X = X + 1 2. 1 + 2 + ……+ 9 + 10 3.25 4. "" , 1 , right(X,(LEN(X)-2)) 5. X(I, J) = W I = J I + J = 5 6.24 SUBSTR(XY, 5, 4) 7.TRPN 8. FEDCBA 9.X%3==0 10.21 11.13 21 注意:12至16如果不把题中的ThisForm.Text1.Value=.T.改为ThisForm.Text1.Value=T,则答案均为T,一下为修改后的答案。 12.20 13.3 14.9 15.10 16.123 17.REPLACE 等级WITH “优秀” 18."通过" 19.编号%8==1 20.1534 21.97+i 22. a%i==0 AND b%i==0 23.a*b STEP 1 24.i/100i%10 25. ========================== 二.选择题 1.有如下程序: A = 10 IF A = 10 S = 0 ENDIF S = 1 ? S

上面程序的执行结果是(B)。 A.0 B.1 C.程序出错 D.结果无法确定 2.有如下程序: SET TALK OFF STORE 2 TO S, K DO WHILE S < 14 S = S + K K = K + 2 ENDDO ? S, K SET TALK ON RETURN 程序运行后的输出结果是(C)。 A.22 10 B.22 8 C.14 8 D.14 10 3.有如下程序: SET TALK OFF DIME A(6) K = 2 DO WHILE K <= 6 A(K) = 20 – 2 * K K = K + 1 ENDDO K = 5 DO WHILE K >= 2 A(K) = A(K) / (A(4) – 10) K = K – 1 ENDDO ? A(1), A(6) ?A(2) SET TALK ON RETURN 程序运行第一个?的输出结果是(D)。 A.10 4 B.10 8 C. .T. D. .F. 8 4.阅读下面这段程序: SET TALK OFF S = 0 I = 1 DO WHILE I <= 10 S = S + I I = I + 1 ENDDO ? I, S

相关文档
最新文档