算法分析与设计程序设计题

算法分析与设计程序设计题
算法分析与设计程序设计题

第三章习题

5.编程打印形如以下规律的”X”方阵。

l l l 1 1 1 l 1 1 1 l

l 2 2 2 2 1 1 2 2 2 1

l 2 3 3 2 l 1 2 3 2 l

1 2 3 3 2 l l 2 2 2 1

l 2 2 2 2 1 1 l l l l 。

1 1 1 1 1 1

(1)

#include

using namespace std;

int main()

{

int i=0,j,n;

for (i=0;i<7;i++){

for (j=0;j<7;j++){

n=((abs(3-j)-abs(3-i))<=0)+(abs(3-i)<=2)+(abs(3-i)<=1 && abs(3-j)<=2)+(i==3 && abs(3-j)<=1);

printf("%d ",n);

}

printf("\n");

}

}

(2)

/* Note:Your choice is C IDE */

#include "Stdio.h"

#include "Conio.h"

int main(void)

{

int i; /*层数*/

int j; /*i 层内每边中行或列的下标*/

int m;

int a[ 100][100];

int n;/*方阵的阶*/

char ch;

start:

printf("\nPlease enter the number of row :" );

scanf("%d",&n);

/*逐层摆放数据*/

if(n%2==0)

{

for(m=0;m

for(i=m;i

for(j=m;j

{

a[i][j]=m+1;

}

}

else

{

for(m=0;m<(n+1)/2;m++)

for(i=m;i

for(j=m;j

{

a[i][j]=m+1;

}

}

for(i=0;i

{

printf("\n");/*打完一行后换行*/

printf("\n"); /*每行之间有一个空行*/

for(j=0;j

printf("%d ",a[i][j]);

}

/*可根据用户的需求打印出多个方阵*/

printf("\nPress 'Y'to continue or other to exit!\n");

ch=getche();

if(ch=='Y')

goto start;

else

return(0);

getch();

}

11.有52张牌,使它们全部正面朝上,第一轮是从第2张开始,凡是2的倍数位置上的牌翻成正面朝下;第二轮从第3张牌开始,凡是3的倍数位置上的牌,正面朝上的翻成正面朝下,正面朝下的翻成正面朝上;第三轮从第4张牌开始,凡是4的倍数位置上的牌按上面相同规则翻转,以此类推,直到翻的牌超过104张为止。统计最后有几张牌正面朝上,以及它们的位置号。

算法设计:定义有100个元素的a数组,它的每个下标变量a[i]视为一张牌,i表示其编号。a[i]=0表示第i张牌正面朝上,a[i]=1表示第i张牌正面朝下。通过算术运算a[i]=1-a[i],模拟翻牌的操作。

算法分析:翻牌的主要操作是a[i]=1-a[i]:

第一次翻的牌是:2,4,6,8,10……

第二次翻的牌是:3,6,9,12,15……

第u次翻的牌是:u,2u,3u,4u,……

设置条件语句while(i*k<=52&&m<=104),使语句在条件内循环执行。

问题分析:该问题与狱吏转动狱锁属同类问题。

(1)

#include

using namespace std;

void main()

{

int a[100],i,k,p=0,m=0,u=2;

for(i=1;i<=52;i++)

a[i]=0;//全部正面朝上

for(i=u;i<=52;i++)//第u张牌开始

{

k=1;

while(i*k<=52&&m<=104)//i*k为牌编号

{

a[i*k]=1-a[i*k];

k++;

m++;

}

u++;

}

cout<<"The right side up cards are:"<<"\n";

for(i=1;i<=52;i++)

if(a[i]==0)

{

cout<<"\t"<

p++; // 张数增加

}

cout<

cout<<"The number of right side up cards is="<

}

(2)

分析:第i次翻的是i,2i,3i,4i,……张牌,是起点为i,公差为i的等差数列。#include

using namespace std;

void main()

{

int a[100],i,k=0,p=0,m=0,u=2;

for(i=1;i<=52;i++)

a[i]=0;//全部正面朝上

for(i=u;i<=52;i++)//第u张牌开始

{

for(m=0;m<=104;m++)

{ for(k=i;k<=52;k=k+i)

{ a[i]=1-a[i] } }

u++;

}

cout<<"The right side up cards are:"<<"\n";

for(i=1;i<=52;i++)

if(a[i]==0)

{

cout<<"\t"<

p++; // 张数增加

}

cout<

cout<<"The number of right side up cards is="<

}

17.求这样的两个数据:五位数=2X四位数,9个数字互不相同。

法分析:四位数的2倍是一个五位数,所以,这个五位数的范围应该在10000-20000之间,并确定这两个数值,通过N%10来拆分这两个数,并存到数组中,如果分解后的数存在就让数组加1,来判断这两个数是否符合条件,符合条件的输出打印,不符合的舍掉。

#include

using namespace std;

void judgement(int x,int y)

{

int a[10];

int m=x;

for(int i=0;i<=9;i++)//初始化

a[i]=0;

while(x)//取出每个位,并统计这个数出现的次数

{

a[x%10]++;

x/=10;

}

while(y)

{

a[y%10]++;

y/=10;

}

int sign=0;

for(i=0;i<=9;i++)//查看所有数字出现的次数。

if(a[i]>1)//查看到大于1则说明有重复的数字

{ sign=1;

break;

}

if(sign==0)

cout<<"五位数:"<

}

int main()

{

for(int n=10000;n<20000;n++)

{

if(n%2==0)

judgement(n,n/2);

}

return 0;

}

第二种方法;

#include "stdafx.h"

#include

using namespace std;

//求这样的两个数:五位数=2*四位数,9个数字互不相同

int main(int argc,char* argv[])

{

int num5,num4;

for(int i=0;i<10;i++){

if (i==1){continue;}

for (int j=0;j<10;j++){

if (j==1||j==i){continue;}

for (int k=0;k<10;k++){

if (k==1||k==i||k==j){continue;}

for (int l=0;l<10;l++){

if (l==1||l==i||l==j||l==k){continue;}

for (int m=0;m<10;m++){

if (m==1||m==i||m==j||m==k||m==l){continue;}

for (int n=0;n<10;n++){

if (n==1||n==i||n==j||n==k||n==l||n==m){continue;}

for (int o=0;o<10;o++){

if (o==1||o==i||o==j||o==k||o==l||o==m||o==n){continue;}

for (int p=0;p<10;p++){

if (p==1||p==i||p==j||p==k||p==l||p==m||p==n||p==o){continue;}

num5=10000+1000*i+100*j+10*k+l;

num4=1000*m+100*n+10*o+p;

if (num5==2*num4)

{

cout<

}

}

}

}

}

}

}

}

}

return 0;

}

23.乘式还原。有乘法运算如下:

OOO

X O

OOOO

式中8个O位置上的数字全部是素数(1、3、5或7),请还原这个算式。

#include "Stdio.h"

#include "Conio.h"

int main()

{

int i,j,k,m;

int n;

int a[] = {2, 3, 5, 7};

for(i = 0; i < 4; ++i){

for(j = 0; j < 4; ++j){

for(k = 0; k < 4; ++k){

for(m = 0; m < 4; ++m){

n = (100*a[i] + 10*a[j] + a[k]) * a[m];

if((n/1000==2)

||(n/1000==3)||(n/1000==5)||(n/1000==7))

if(((n%1000)/100 == 2) ||((n%1000)/100 == 3)

||((n%1000)/100 == 5) ||((n%1000)/100 == 7))

if((((n%1000)%100)/10 == 2) ||(((n%1000)%100)/10 == 3) ||(((n%1000)%100)/10 == 5) ||(((n%1000)%100)/10 == 7))

if((((n%1000)%100)%10 == 2) ||(((n%1000)%100)%10 == 3) ||(((n%1000)%100)%10 == 5) ||(((n%1000)%100)%10 == 7))

printf("%d*%d=%d\n",(100*a[i] + 10*a[j] +

a[k]),a[m],(100*a[i] + 10*a[j] + a[k]) * a[m]); }}}}

return 0;

}

第四章

习题

4.一个实数列共有N 项,已知:

()

60)n i (1211<<<+-=+-d a a a i i i

键盘输入N 、a n 、d 。、n ,输出a n 。

分析:

根据公式ai=(ai-1-ai+1)/2+d 变形得,ai+1=ai-1-2ai+2d ,因此该数列的通项公式为:ai=ai-2-2ai-1+2d ,已知a1,如果能求出a2,这样就可以根据公式递推求出am

∵ ai=ai-2-2ai-1+2d ……①

=ai-2-2(ai-3-2ai-2+2d )+2d

=-2ai-3+5(ai-4-2ai-3+2d )-2d

=5ai-4-12ai-3+8d

……

一直迭代下去,直到最后,可以建立ai 和a1与a2的关系式。

设ai=Pia2+Qid+Ria1,我们来寻求Pi,Qi,Ri 的变化规律。

∵ ai=ai-2-2ai-1+2d

∴ ai=Pi-2a2+Qi-2d+Ri-2a1-2(Pi-1a2+Qi-1d+Ri-1a1)+2d

=(Pi-2-2Pi-1)a2+(Qi-2-2Qi-1+2)d+(Ri-2-2Ri-1)a1

∴ Pi=Pi-2-2Pi-1 ……②

Qi=Qi-2-2Qi-1+2 ……③

Ri=Ri-2-2Ri-1 ……④

显然,P1=0 Q1=0 R1=1 (i=1)

P2=1 Q2=0 R2=0 (i=2)

将初值P1、Q1、R1和P2、Q2、R2代入②③④可以求出Pn 、Qn 、Rn ∵ an=Pna2+Qnd+Rna1

∴ a2=(an-Qnd+Rna1)/Pn

然后根据公式①递推求出am ,问题解决。

但仔细分析,上述算法有一个明显的缺陷:在求由于在求a2要运用除法,因此会存在实数误差,这个误差在以后递推求an 的过程又不断的扩大。在实际中,当n 超过30时,求出的an 就明显偏离正确值。显然,这种算法虽简单但不可靠。 为了减少误差,我们可设计如下算法:

∵ ai=Pia2+Qid+Ria1

=Pi-1a3+Qi-1d+Ri-1a2

=Pi-2a4+Qi-2d+Ri-2a3

……

=Pi-2+kak+Qi-2+kd+Ri-2+kak-1

∴ an=Pn-k+2ak+Qn-k+2d+Rn-k+2ak-1

ak=(an-Qn-k+2d+Rn-k+2ak-1)/Pn-k+2 ……⑤

根据公式⑤,可以顺推a2、a3、…、an 。虽然仍然存在实数误差,但由于Pn-k+2递减,因此最后得出的an 要比直接利用公式①精确得多。

程序如下:

#include

#include

int main()

{

int N = 0;

double d = 0.0;

double A[60] ={0.0};

int m = 0;

printf( "输入 N d A1 AN m:\n ");

scanf( "%d %lf ",&N,&d);

scanf( "%lf %lf %d ",&A[0],&A[N-1],&m);

for(int i=0;i <10000;i++)

{

for(int j=1;j

{

A[j] = (A[j-1]-A[j+1])/2+d;

}

} /* 输出 */

for(int k=0;k

{

printf( "A%d = %8.2lf ",k+1,A[k]);

if(k+1 == m) printf( "\t\t // !!! ");

printf( "\n ");

}

return 0;

}

10.利用分治法求一组数据的和。

在算法设计中每次一个问题分解成的子问题个数一般是固定的,每个子问题的规模也是平均分配的。

二分法当每次都将问题分解为原问题规模的一半时,称为二分法。

二分法是分治法较常用的分解策略,数据结构课程中的折半查找、归并排序等算法都是采用此策略实现的。

#include

main()

{

int a[10]={1,3,5,7,9,10,8,6,4,2};

int i,max1=0,max2=0,min1=0,min2=0;

for(i=0;i<10;i++)

{

if(a[max1]

max1=i;

if(a[min1]>a[i])

min1=i;

}

if(max1==0)

max2=1;

if(min1==0)

min2=1;

for(i=0;i<10;i++)

{

if(i==max1||i==min1)

continue;

if(a[max2]

max2=i;

if(a[min2]>a[i])

min2=i;

}

printf("max1=%d\nmax2=%d\nmin1=%d\nmin2=%d\n",a[max1],a[max2],a[min1] ,a[min2]);

}

16.N块银币中有一块不合格,已知不合格的银币比正常银币重,现用一天平,请利用它找不合格的银币,并且用天平的次数最少。

方法一:

#include

#include

using namespace std;

int main()

{

int n;

while(cin>>n)

{

if(n <= 0)

break;

int result = (int)ceil(log((double)n)/log(3.0));

cout<<"Times:"<

}

return 0;

}

方法二:

#include

#include

int main()

{ int N;

int t=0;

scanf("%d",&N);

N=N/3;

t++;

while(N)

{

N=N/3;

t++;

}

printf("%d\n",t);

system("PAUSE");

return 0;

}

方法三:

/* 在最坏情况下求使用天平的最少次数*/

#include

#include

int main()

{

int t=0,m=1;

scanf("%d",&N);

while(m

m=m*3;

t++;

}

printf("%d\n",t);

system("PAUSE");

return 0;

}

2 求3个数的最小公倍数

算法1分析:

最小公倍数的定义以及用短除法求这3个数的最小公倍数,甚至想到了最大公约数与最小公倍数的换算公式……。其实,与问题相关的每一个经验和思路,都可能是解决这个问题的一种方法,下面就给出用这4种思路进行算法设计的过程。

给出三个数x,y,z,求这三个数的最小公倍数c,其中c是每一个数的倍数,且是他们三个

的最小的公倍数

3个数据最小公倍数的定义为“3个数的公倍数中最小的一个”。直接用最小公倍数的定义进行算法设计,其实就是用蛮力法进行算法设计。按定义将其中一个数逐步从小到大扩大1,2,3,4,5,……自然数的倍数,直到它的某一倍数正好也是其他两个数据的倍数,也就是说,能被其他两个数据整除,这就找到了问题的解。

为了提高求解的效率,先选出3个数的最大值,然后对这个最大值从1开始,扩大自然数的倍数,直到这个积能被全部3个数整除为止,这个积就是它们的最小公倍数了。

Least_common_multiplel()

{

Int x1,x2,x3,x0;

Print("input 3 number:");

Input(x1,x2,x3);

x0=max(x1,x2,x3);

i=1;

While(1)

{

j=x0*i;

if(j mod x1=0 and j mod x2=0 and j mod x3=0) break;

i=i+1;

}

print(x1,x2,x3,"Least_common_multiplel is",j);

} max(int x,int y,int z)

{

if(x>y and x>z)return(x);

else if(y>x and y>z)return(y);

else return(z);

}}

n

F(n)=∑1=n

i=1

按照算法设计1,只需一重循环就能解决问题

算法的时间复杂性为O(n)。

算法2分析:

先看求解两个数最小公倍数的方法。记两个正整数a、b的最小公倍数是d,最大公约数为c。则最小公倍数d=a*b/c。

则求解三个数的最小公倍数方法为:先求两个数x、y的最小公倍数,记为s,再求s、z的最小公倍数,这样就求出3个数的最小公倍数了。

#include

void main()

{

int n1,n2,n3;

int a,b,c;

cin>>n1>>n2>>n3;

a = n1;

b = n2;

c = n3;

while(a!=b)

/*利用展转相加法求出n1,n2

的最小公倍数,存a,b中*/

{

if (a < b)

a+=n1;

else

b+=n2;

}

while(a!=c)

/*利用展转相加法求出a,n3的最小公倍数,存a,c中*/

{ if(a < c)

a+=b;

else

c+=n3;

} cout<

}

j

F(n)=∑1=j

i=1

按照算法设计2,只需一重循环就能解决问题

算法的时间复杂性为O(n)。

函数least_common_multiple()的功能就是求几个数的最小公倍数,使用辗转相乘法实现的。

算法3设计:

1)用短除法求三个已知数的最小公倍数的过程就是求它们的因数之积,这个因数可能是三个数共有的、两个数共有或一个数独有的三种情况。

2)在手工完成这个问题时,我们的大脑可以判断三个数含有哪些因数,及属于哪种情况。用算法实现就只能利用尝试法了。尝试的范围应该是2——三个数中最大数之间的因数。

3)再看例子2,4,8中2是的因数,为避免因数重复计算,一定要用2整除这三个数得到1,2,4。注意到2仍是(1,2,4)的因数,所以在尝试某数是否是三个数的因数时,不是用条件语句if,而是要用循环语句while,以保证将三个数中所含的某个因数能全部被找出,直到三个数都不含这个数做因数时循环结束。

4)由于某数i是已知三个数的因数有多种情况,以上讨论了三大类,后两类又能细分出更小的类别,如果是其中的两个数共有的因数时,可能是第一、第三个数的因数,或是第一、第二数的因数,或是第二个、第三个数的因数。总之,很难用一个简单的逻辑表达式来表示各种复杂的情况。

用表达式:K=(x1 mod i=0)+ (x2 mod i=0)+ (x3 mod i=0)的值,可以区分某数i是否为已知3个数的因数,k=0表示i不是3个数的因数,k>0表示i是3个数的因数。

为避免因数重复计算,每次都需要除掉3个整数中已找到的因数。而以上逻辑表达式无

法识别i具体是哪一个数的因数,要对那个数进行整除i的运算。

main( )

{ int x1,x2,x3,t=1,i,flag,x0;

print(“Input 3 number:”); input(x1,x2,x3);

x0=max(x1,x2,x3);

for (i=2;i<=x0;i=i+1)

{flag=1;

while(flag=1)

{ flag=0;

if (x1 mod i=0) {x1=x1/i; flag=1;}

if(x2 mod i=0) {x2=x2/i; flag=1;}

if(x3 mod i=0) {x3=x3/i; flag=1;}

if (flag=1) t=t*i; }//while结束符

x0=max(x1,x2,x3) }//for结束符

print(“The result is ”,t);

}

在while循环体外将flag置为1,是为了能进入循环。一进入循环马上将其置为0,表示假设i不是3个数的因数,以下用3个条件语句测试;发现i是某个数的因数,则用因数去除对应整数,并将flag置为1,表示i某数的因数;循环体最后测试flag的值,若为1则累乘i因数;否则,i不是任意一个数的因数。

通过以上算法设计过程应该看到,可以依赖以前学到的解决问题方法,改进有关步骤以便能通过机械的计算机操作(准确地说是通过程序设计语言)来实现。

高中信息技术《算法与程序设计》试题

高中信息技术《算法与程序设计》试题 一、单选题(每小题3分,20小题,共60分) 1、用计算机解决问题时,首先应该确定程序“做什么?”,然后再确定程序“如何做?”请问“如何做?”是属于用计算机解决问题的哪一个步骤?() A、分析问题 B、设计算法 C、编写程序 D、调试程序 2、在调试程序过程中,下列哪一种错误是计算机检查不出来的?() A、编译错误 B、执行错误 C、逻辑错误 D、任何错误计算机都能检查出来 3、下列关于算法的叙述中,错误的是() A、一个算法至少有一个输入和一个输出 B、算法的每一个步骤必须确切地定义 C、一个算法在执行有穷步之后必须结束 D、算法中有待执行的运算和操作必须是相当基本的。 4、流程图中表示判断的是()。 A、矩形框B、菱形框C、圆形框D、椭圆形框 5、任何复杂的算法都可以用三种基本结构组成,下列不属于基本结构的是() A、顺序结构 B、选择结构 C、层次结构 D、循环结构 6、能够被计算机直接识别的语言是() A、伪代码 B、高级语言 C、机器语言 D、汇编语言 7、在VB语言中,下列数据中合法的长整型常量是() A、08A B、2380836E C、88.12345 D、1.2345E6 8、求Mid(“ABCDEFG”,3,2)的结果是() A、“ABC” B、“CD” C、“ABCDEF” D、“BCD” 9、表达式 A+B+C=3 OR NOT C<0 OR D>0 当A=3,B=4,C=-5,D=6时的运算结果是() A、0 B、1 C、TRUE D、FALSE 10、在循环语句 For x=1 to 100 step 2 …… Next x 中,x能达到的最大值是() A、100 B、99 C、98 D、97 11、在下列选项中,不属于VB的对象的是() A、窗体的背景颜色 B、命令按钮 C、文本框 D、标签 12、在调试程序的时候,经常要设置断点,设置断点的快捷键是()

算法设计与分析考试题及答案

算法设计与分析考试题 及答案 Company number:【WTUT-WT88Y-W8BBGB-BWYTT-19998】

一、填空题(20分) 1.一个算法就是一个有穷规则的集合,其中之规则规定了解决某一特殊类型问题的一系列运算,此外,算法还应具有以下五个重要特性:确定性 有穷性 可行性 0个或多个输入 一个或多个输出 2.算法的复杂性有时间复杂性 空间复杂性之分,衡量一个算法好坏的标准是 时间复杂度高低 3.某一问题可用动态规划算法求解的显着特征是 该问题具有最优子结构性质 4.若序列X={B,C,A,D,B,C,D},Y={A,C,B,A,B,D,C,D},请给出序列X 和Y 的一个最长公共子序列{BABCD}或{CABCD}或{CADCD } 5.用回溯法解问题时,应明确定义问题的解空间,问题的解空间至少应包含一个(最优)解 6.动态规划算法的基本思想是将待求解问题分解成若干_子问题 ,先求解_子问题 ,然后从这些子问题 的解得到原问题的解。 7.以深度优先方式系统搜索问题解的算法称为回溯法 背包问题的回溯算法所需的计算时间为o(n*2n ) ,用动态规划算法所需的计算时间为o(min{nc,2n }) 9.动态规划算法的两个基本要素是最优子结构 _和重叠子问题 10.二分搜索算法是利用动态规划法实现的算法。 二、综合题(50分) 1.写出设计动态规划算法的主要步骤。 ①问题具有最优子结构性质;②构造最优值的递归关系表达式; ③最优值的算法描述;④构造最优解; 2. 流水作业调度问题的johnson 算法的思想。 ①令N 1={i|a i =b i };②将N 1中作业按a i 的非减序排序得到N 1’,将N 2中作业按b i 的非增序排序得到N 2’;③N 1’中作业接N 2’中作业就构成了满足Johnson 法则的最优调度。 3. 若n=4,在机器M1和M2上加工作业i 所需的时间分别为a i 和b i ,且 (a 1,a 2,a 3,a 4)=(4,5,12,10),(b 1,b 2,b 3,b 4)=(8,2,15,9)求4个作业的最优调度方案,并计算最优值。 步骤为:N1={1,3},N2={2,4}; N 1’={1,3}, N 2’={4,2}; 最优值为:38 4. 使用回溯法解0/1背包问题:n=3,C=9,V={6,10,3},W={3,4,4},其解空间有长度为3的0-1向量组成,要求用一棵完全二叉树表示其解空间(从根出发,左1右0),并画出其解空间树,计算其最优值及最优解。 解空间为{(0,0,0),(0,1,0),(0,0,1),(1,0,0),(0,1,1),(1,0,1), (1,1,0),(1,1,1)}。 解空间树为: 该问题的最优值为:16 最优解为:(1,1,0) 5. 设S={X 1,X 2,···,X n }是严格递增的有序集,利用二叉树的结点来存储S 中的元素,在表示S 的二叉搜索树中搜索一个元素X ,返回的结果有两种情形,(1)在二叉搜索树的内结点中找到X=X i ,其概率为b i 。(2)在二叉搜索树的叶结点中确定X ∈(X i ,X i+1),其概率为a i 。在表示S 的二叉搜索树T 中,设存储元素X i 的结点深度为C i ;叶结点(X i ,X i+1)的结点深度为d i ,则二叉搜索树T 的平均路长p 为多少假设二叉搜索树T[i][j]={X i ,X i+1,···,X j }最优值为m[i][j],W[i][j]= a i-1+b i +···+b j +a j ,则m[i][j](1<=i<=j<=n)递归关系表达式为什么 .二叉树T 的平均路长P=∑=+n i 1 Ci)(1*bi +∑=n j 0 dj *aj

2015年算法分析与设计期末考试试卷B卷

西南交通大学2015 — 2016学年第(一)学期考试试卷 课程代码 3244152课程名称 算法分析与设计 考试时间 120分钟 阅卷教师签字: __________________________________ 填空题(每空1分,共15分) 1、 程序是 (1) 用某种程序设计语言的具体实现。 2、 矩阵连乘问题的算法可由 (2) 设计实现。 3、 从分治法的一般设计模式可以看出,用它设计出的程序一般是 (3) 4、 大整数乘积算法是用 (4) 来设计的。 5、 贪心算法总是做出在当前看来 (5) 的选择。也就是说贪心算法并不从整体最优 考虑,它所做出的选择只是在某种意义上的 (6) o 6、 回溯法是一种既带有 (7) 又带有 (8) 的搜索算法。 7、 平衡二叉树对于查找算法而言是一种变治策略,属于变治思想中的 (9) 类型 8、 在忽略常数因子的情况下,0、门和0三个符号中, (10) 提供了算法运行时 间的一个上界。 9、 算法的“确定性”指的是组成算法的每条 (11) 是清晰的,无歧义的。 10、 冋题的(12) 是该冋题可用动态规划算法或贪心算法求解的关键特征。 11、 算法就是一组有穷 (13),它们规定了解决某一特定类型问题的 (14) o 12、 变治思想有三种主要的类型:实例化简,改变表现, (15) o 、 ___________________________________________________________________________________ L 线订装封密 线订装封密 、 __________________ 二 线订装封密 级班 选择题(每题2分,共20 分)

《算法与程序设计》试题带答案

《算法与程序设计》试题 学校:_____________ 班级:____________ 学号:____________ 姓名:____________ 一、单选题(每小题3分,20小题,共60分) 1、用计算机解决问题时,首先应该确定程序“做什么?”,然后再确定程序“如何做?”请问“如何做?”是属于用计算机解决问题的哪一个步骤?() A、分析问题 B、设计算法 C、编写程序 D、调试程序 2、在调试程序过程中,下列哪一种错误是计算机检查不出来的?() A、编译错误 B、执行错误 C、逻辑错误 D、任何错误计算机都能检查出来 3、下列关于算法的叙述中,错误的是() A、一个算法至少有一个输入和一个输出 B、算法的每一个步骤必须确切地定义 C、一个算法在执行有穷步之后必须结束 D、算法中有待执行的运算和操作必须是相当基本的。 4、流程图中表示判断的是()。 A、矩形框B、菱形框C、圆形框D、椭圆形框 5、任何复杂的算法都可以用三种基本结构组成,下列不属于基本结构的是() A、顺序结构 B、选择结构 C、层次结构 D、循环结构 6、能够被计算机直接识别的语言是() A、伪代码 B、高级语言 C、机器语言 D、汇编语言 7、在VB语言中,下列数据中合法的长整型常量是() A、08A B、2380836E C、88.12345 D、1.2345E6 8、求Mid(“ABCDEFG”,3,2)的结果是() A、“ABC” B、“CD” C、“ABCDEF” D、“BCD” 9、表达式 A+B+C=3 OR NOT C<0 OR D>0 当A=3,B=4,C=-5,D=6时的运算结果是() A、0 B、1 C、TRUE D、FALSE

高二算法与程序设计试题及答案

高二信息技术(算法与程序设计)试题卷 一、单项选择题(每小题2.5分共50分将正确答案填到答题卷相应题号下) 1、一同学想通过程序设计解决“鸡兔同笼”的问题,他制定的如下工作过程中,更恰当的是()。 A、提出问题、设计算法、编写程序、得到答案 B、提出问题、编写程序、运行程序、得到答案 C、编写程序、设计算法、调试程序、得到答案 D、设计程序、提出问题、编写程序、运行程序 2、下列常量说明中,符合语法的是()。 A、CONST color=red B、CONST const=10*5 C、CONST xl:=3.9; D、CONST color=”abcd” 3、下列代数式的Visual Basic表达式是( )。 A、(x^5-cos(29*3.14))/(sqr(exp(x)+log(y))) B、(x^5-cos(29))/(sqr(exp(x)+ln(y))+5) C、(x^5-cos(29*3.14/)/(sqr(exp(x)+ln(y))+5) D、(x^5-cos(0.506))/(sqr(exp(x)+log(y))+5) 4、下列变量名写法错误的是()。 A、abc B、abc123 C、abc_123 D、123abc 5、visual basic程序设计语言是一种()。 A、高级语言 B、汇编语言 C、机器语言 D、数据库语言 6、下列给出的赋值语句中正确的是()。 A、4 = M B、-M =M C、B=A-3 D、x + y = 0 7、下列Visual Basic中,下列()的表达式的值不等于4。 A、int(4.1) B、fix(4.9) C、Abs(int(-3.9)) D、Abs(int(-4.5)) 8、下面程序运行后的输出S结果为()。 i=1 do WHILE i<8 i=i+2:s=2*i+3 loop PRINT s A、17 B、19 C、21 D、23 9、下列Visual Basic中,下列()类型属于字符串型。 A、Integer B、Single C、String D、Boolean 10、在VB中表达式11\3+11 mod 3 的运算结果值是()。 A、3 B、4 C、5 D、6 11、下列程序执行后,整型变量n的值为( )。 n=0: for I=1 to 100: if I mod 4=0 then n=n+1: next I A、5050 B、25 C、26 D、33 12、以下选项中,不是Visual Basic控件的是( )。 A、文本框 B、定时器 C、窗体 D、命令按钮 13、使用Visual Basic编程,我们把工具箱在的工具称为( )。 A、事件 B、工具 C、控件 D、窗体 14、结构化程序设计由三种基本结构组成,下面哪个不属于这三种基本结构()。 A、顺序结构 B、输入、输出结构 C、选择结构 D、循环结构 15、语句if 3*4>=10 then a=1 else a=2 执行后,a的值为()。 A、12 B、10 C、1 D、2 16、下列结果为True的逻辑表达式是( )。 A、Not (3<8) B、(3<9) And (5>10) C、(3<8) And (5<10) D、(3>8) Or (5>10) 17、要交换变量X和Y之值,应使用的语句组是( )。 A、X=Y;Y=Z;Z=X B、C=X;X=Y;Y=C C、X=Y;Y=X D、Z=Y;Y=X;Y=Z 18、以下程序中的循环体执行的次数是()。

算法设计与分析考试题及答案

1.一个算法就是一个有穷规则的集合,其中之规则规定了解决某一特殊类型问题的一系列运算,此外,算法还应具有以下五个重要特性:_________,________,________,__________,__________。 2.算法的复杂性有_____________和___________之分,衡量一个算法 好坏的标准是______________________。 3.某一问题可用动态规划算法求解的显著特征是 ____________________________________。 4.若序列X={B,C,A,D,B,C,D},Y={A,C,B,A,B,D,C,D},请给出序列X 和Y的一个最长公共子序列_____________________________。 5.用回溯法解问题时,应明确定义问题的解空间,问题的解空间至少应包含___________。 6.动态规划算法的基本思想是将待求解问题分解成若干____________,先求解___________,然后从这些____________的解得到原问题的解。 7.以深度优先方式系统搜索问题解的算法称为_____________。 8.0-1背包问题的回溯算法所需的计算时间为_____________,用动态规划算法所需的计算时间为____________。 9.动态规划算法的两个基本要素是___________和___________。 10.二分搜索算法是利用_______________实现的算法。 二、综合题(50分) 1.写出设计动态规划算法的主要步骤。 2.流水作业调度问题的johnson算法的思想。

算法分析与设计试卷

《算法分析与设计》试卷(A) (时间90分钟满分100分) 一、填空题(30分,每题2分)。 1.最长公共子序列算法利用的算法是( B )。 A、分支界限法 B、动态规划法 C、贪心法 D、回溯法2.在对问题的解空间树进行搜索的方法中,一个活结点最多有一次机会成为活结点的是( B ). A.回溯法 B.分支限界法 C.回溯法和分支限界法 D.回溯法求解子集树问题 3.实现最大子段和利用的算法是( B )。 A、分治策略 B、动态规划法 C、贪心法 D、回溯法4..广度优先是( A )的一搜索方式。 A、分支界限法 B、动态规划法 C、贪心法 D、回溯法5.衡量一个算法好坏的标准是( C )。 A 运行速度快 B 占用空间少 C 时间复杂度低 D 代码短 6.Strassen矩阵乘法是利用( A)实现的算法。 A、分治策略 B、动态规划法 C、贪心法 D、回溯法 7. 使用分治法求解不需要满足的条件是( A )。 A 子问题必须是一样的 B 子问题不能够重复 C 子问题的解可以合并 D 原问题和子问题使用相同的方法解 8.用动态规划算法解决最大字段和问题,其时间复杂性为( B ). A.logn B.n C.n2 D.nlogn 9.解决活动安排问题,最好用( B )算法 A.分治 B.贪心 C.动态规划 D.穷举 10.下面哪种函数是回溯法中为避免无效搜索采取的策略( B ) A.递归函数 B.剪枝函数C。随机数函数 D.搜索函数11. 从活结点表中选择下一个扩展结点的不同方式将导致不同的分支限界法,以下除( C )之外都是最常见的方式. A.队列式分支限界法 B.优先队列式分支限界法 C.栈式分支限界法 D.FIFO分支限界法 12. .回溯算法和分支限界法的问题的解空间树不会是( D ). A.有序树 B.子集树 C.排列树 D.无序树 13.优先队列式分支限界法选取扩展结点的原则是( C )。 A、先进先出 B、后进先出 C、结点的优先级 D、随机14.下面是贪心算法的基本要素的是( C )。 A、重叠子问题 B、构造最优解 C、贪心选择性质 D、定义最优解15.回溯法在解空间树T上的搜索方式是( A ). A.深度优先 B.广度优先 C.最小耗费优先 D.活结点优先 二、填空题(20分,每空1分)。 1.算法由若干条指令组成的又穷序列,且满足输入、输出、 确定性和有限性四个特性。 2.分支限界法的两种搜索方式有队列式(FIFO)分支限界法、优先队列式分支限界法,用一个队列来存储结点的表叫活节点表。

算法与程序设计试题带答案

高一第二学期《算法与程序设计》学分认定试题 学校:_____________ 班级:____________ 学号:____________ 姓名:____________ 一、单选题(每小题3分,20小题,共60分) 1、用计算机解决问题时,首先应该确定程序“做什么”,然后再确定程序“如何做”请问“如何做”是属于用计算机解决问题的哪一个步骤() A、分析问题 B、设计算法 C、编写程序 D、调试程序 2、在调试程序过程中,下列哪一种错误是计算机检查不出来的() A、编译错误 B、执行错误 C、逻辑错误 D、任何错误计算机都能检查出来 3、下列关于算法的叙述中,错误的是() A、一个算法至少有一个输入和一个输出 B、算法的每一个步骤必须确切地定义 C、一个算法在执行有穷步之后必须结束 D、算法中有待执行的运算和操作必须是相当基本的。 4、流程图中表示判断的是()。 A、矩形框B、菱形框C、圆形框D、椭圆形框 5、任何复杂的算法都可以用三种基本结构组成,下列不属于基本结构的是() A、顺序结构 B、选择结构 C、层次结构 D、循环结构 6、能够被计算机直接识别的语言是() A、伪代码 B、高级语言 C、机器语言 D、汇编语言 7、在VB语言中,下列数据中合法的长整型常量是() A、08A B、2380836E C、 D、 8、求Mid(“ABCDEFG”,3,2)的结果是() A、“ABC” B、“CD” C、“ABCDEF” D、“BCD” 9、表达式A+B+C=3 OR NOT C<0 OR D>0 当A=3,B=4,C=-5,D=6时的运算结果是() A、0 B、1 C、TRUE D、FALSE 10、在循环语句For x=1 to 100 step 2 …… Next x 中,x能达到的最大值是() A、100 B、99 C、98 D、97 11、在下列选项中,不属于VB的对象的是() A、窗体的背景颜色 B、命令按钮 C、文本框 D、标签 12、在调试程序的时候,经常要设置断点,设置断点的快捷键是()A、F1 B、F8 C、F9 D、F12 13、算法描述可以有多种表达方法,下面哪些方法不可以描述“闰年问题”的算法() A、自然语言 B、流程图 C、伪代码 D、机器语言 14、以下不属于非法用户自定义标识符(常量和变量命名)的是() A、8ad B、ad8 C、_a8d D、const 15、已知A,B,C,D是整型变量,且都已有互不相同的值,执行语句B=0;A=C;D=A;D=B;后,其值相等的变量是() A、A,D B、A,C C、C,B D、B,A 16、要交换变量A和B的值,应使用的语句组是( ) A、A=B;B=C;C=A B、C=A;A=B;B=C C、A=B;B=A D、C=A;B=A;B=C 17、VisualBasic中以单引号开头一行文字称为注释,它对程序的运行() A、起一定作用 B、有时候起作用 C、不起任何作用,但是必须的 D、不起任何作用,但能增加程序的可阅读性 18、要使一个命令按钮显示文字“确定”,正确的设置是把该命令按钮的()。 A、属性Font设置为“确定” B、属性.ForeColor设置为“确定” C、属性Caption设置为“确定” D、属性BorderStyle设置为“确定” 19、要从文本框TXTShowOut中输出"中国您好!",代码为( ) A ="中国您好!" B ="中国您好!" C ="中国您好!" D Val=“中国您好!” 20、下列Visual Basic程序段运行后,变量max的值为()。 a=11; b=15; max=a IF b>max Then max =b A、15 B、11 C、15或11都有可能 D、以上都不是 二、阅读程序写结果(第1~2小题每题5分,第3小题10分,共20分) 1、Private Sub Form_Load() N=InputBox(“请输入N的值:”,“输入”) S=1 For i=1 to N S=S*i Next i MsgBox “S=”+Str(s),0,”计算结果” End Sub 当N=5时,运行的结果是__________________。

算法与程序设计真题2017级整理版-选择题

end if A 25 B 26 C 10 D 5 25、以下程序段运行后,整型变量s的值是()。 s=1 For i=1 To 10 Step 3 s=s*i Next i Print s A 55 B 3640 C 28 D 280 25、以下程序段执行后,输出结果为()。 m=29 If m Mod 3 <> 0 Then Print m & “不能被3整除” Else Print m & “能被3整除” End If A n能被3整除 B n不能被3整除 C 29不能被3整除 D 29能被3整除 26.以下程序段语句执行后,y的值是() X=16 If x<0 then Y=abs(x) Else Y=sqr(x) End if A 其他三项答案都不对 B 256 C 4 D 16 24.如图所示,三个文本框自上而下的顺序是Text1,text2, text3,在文本框text1中输入3,在文本框text2中输入4。单击命令按钮“计算”后,文本框text3中显示的内容是() “计算”按钮事件过程代码: Private sub command1_click() Dim a as integer Dim b as integer A=val(text1.text) B=val(text2.text) Text3.text=2*(a+b) End sub A 14 B 24 C 7 D 12 25.下列程序段执行后,变量s的值是()。 S=0 For i=1 To 10 s=s+i Next I A 10 B 0 C 1 D 55 24.下列程序段运行后,输出“*”的个数是() For I =2 to 10 Print “ * ” Next i

(完整版)算法设计与分析期末考试卷及答案a

一.填空题(每空 2 分,共30分) 1.算法的时间复杂性指算法中的执行次数。 2.在忽略常数因子的情况下,O、和三个符号中,提供了算法运行时间的一个上界。 3.设D n表示大小为n的输入集合,t(I)表示输入为I时算法的运算时间, p(I)表示输入 I 出现的概率,则算法的平均情况下时间复杂性A(n)= 。 4.分治算法的时间复杂性常常满足如下形式的递归方程: f (n) d , n n0 f(n) af(n/c) g(n) , n n0 其中,g(n)表示。 5. 分治算法的基本步骤包括。6.回溯算法的基本思想是。 7.动态规划和分治法在分解子问题方面的不同点是。 8.贪心算法中每次做出的贪心选择都是最优选择。 9.PQ 式的分支限界法中,对于活结点表中的结点,其下界函数值越小,优先级 10.选择排序、插入排序和归并排序算法中,算法是分治算法。 11.随机算法的一个基本特征是对于同一组输入,不同的运行可能得到的结果。12. 对于下面的确定性快速排序算法,只要在步骤3 前加入随机 化步骤,就可得到一个随机化快速排序算法,该随机化步骤的功能是。 算法QUICKSORT 输入:n 个元素的数组A[1..n] 。 输出:按非降序排列的数组 A 中的元素

1. quicksort(1, n) end QUICKSORT _ _ 过程 quicksort(A, low, high) _ _ // 对 A[low..high] 中的元素按非降序排序。 _ 号 学 2. if low

算法设计与分析试卷(2010)

内部资料,转载请注明出处,谢谢合作。 算法设计与分析试卷(A 卷) 一、 选择题 ( 选择1-4个正确的答案, 每题2分,共20分) (1)计算机算法的正确描述是: A .一个算法是求特定问题的运算序列。 B .算法是一个有穷规则的集合,其中之规则规定了一个解决某一特定类型的问题的运算序列。 C .算法是一个对任一有效输入能够停机的图灵机。 D .一个算法,它是满足5 个特性的程序,这5个特性是:有限性、确定性、能 行性、有0个或多个输入且有1个或多个输出。 (2)影响程序执行时间的因素有哪些? A .算法设计的策略 B .问题的规模 C .编译程序产生的机器代码质量 D .计算机执行指令的速度 (3)用数量级形式表示的算法执行时间称为算法的 A .时间复杂度 B .空间复杂度 C .处理器复杂度 D .通信复杂度 (4)时间复杂性为多项式界的算法有: A .快速排序算法 B .n-后问题 C .计算π值 D .prim 算法 (5)对于并行算法与串行算法的关系,正确的理解是: A .高效的串行算法不一定是能导出高效的并行算法 B .高效的串行算法不一定隐含并行性 C .串行算法经适当的改造有些可以变化成并行算法 D. 用串行方法设计和实现的并行算法未必有效 (6)衡量近似算法性能的重要标准有: A .算法复杂度 B .问题复杂度 C .解的最优近似度 D .算法的策略 (7)分治法的适用条件是,所解决的问题一般具有这些特征: A .该问题的规模缩小到一定的程度就可以容易地解决; B .该问题可以分解为若干个规模较小的相同问题; C .利用该问题分解出的子问题的解可以合并为该问题的解 D .该问题所分解出的各个子问题是相互独立的。 (8)具有最优子结构的算法有: A .概率算法 B .回溯法 C .分支限界法 D .动态规划法 (9)下列哪些问题是典型的NP 完全问题: A .排序问题 B .n-后问题 C .m-着色问题 D .旅行商问题 (10)适于递归实现的算法有: A .并行算法 B .近似算法 C .分治法 D .回溯法 二、算法分析题(每小题5分,共10分) (11)用展开法求解递推关系: (12)分析当输入数据已经有序时快速排序算法的不足,提出算法的改进方案。 ???>+-==1 1)1(211)(n n T n n T

2014山东省信息技术学考算法与程序设计试题答案附后讲解

2014山东省信息技术学考算法与程序设计试题答案附后讲解

山东省学考算法与程序设计试题 选择题 1、下列VB表达式中: ⑴Sqr(x) ⑵Text1.text ⑶Command1.caption ⑷"45"+"34" ⑸45+34值为字符串类型的是() A⑴⑵⑶ B⑵⑶⑷ C ⑴⑶⑸ D⑵⑷⑸ 2、如果给出三条线段的长分别为a、b、c,且已知a≤b≤c,要问这三条线段能否构成三角形,仅需下列选项中的哪个判定条件即可?() A 其他选项都不对 B a+c>b C a+b>c D b+c>a 3、VB程序中“Dim n As Integer”这条语句的作用是() A 定义一个事件过程 B 定义一个数据输入方法 C 定义一个变量 D 定义一个数据处理方法 4、关于算法的描述,下列选项中正确的是() A 算法的每一步骤必须有确切的含义 B 算法必须有输入 C 算法的步骤可以是无穷的 D 算法本身就是一种程序设计语言 5、关于算法的描述,正确的是() A同一种算法只能用一种程序语言实现 B算法就是数值计算的方法 C描述算法的方法只有流程图 D算法是描述解决问题的方法和步骤 6、算法的描述方法有多种,下列选项中不适合描述算法的是() A机器语言 B自然语言 C流程图 D伪代码 7、长度分别为a、b、c的三条线段,能够组成三角形的条件是() A a+b>c Or a+c>b Or b+c>a B a+b>c or a+c>b And b+c>a C a+b>c Or a+c>b And b+c>a D a+b>c And a+c>b And b+c>a 8、已知海伦公式:()()() p p a p b p c ---p=1 2 (a+b+c),a、b、c分别为三角形的三条 边长。利用海伦公式求三角形面积的算法属于() A 排序法 B 解析法 C 穷举法 D 查找法 9、以下程序段中循环体执行的次数是() s=0 i=0 Do While s<10 i=i+1 s=s+i*i Loop A 1 B 3 C 2 D 4 10、下列VB表达式中,能正确表达不等式方程|x|>1的解的是() A x>-1 and x<1 B x>-1 or x<1 C x<-1 and x>1 D x<-1 or x>1 11、一元二次方程ax2+bx+c=0(a≠0)的两个实数根分别为: x 1 24 b b ac -+- 2 24 b b ac ---下列表达式正确的是() A x 2=-b-sqr(b^2-4*a*c)/(2*a) B x 1 =(-b+sqr(b^2-4ac))/(2*a)

算法与程序设计模块(选择题)汇总

算法与程序设计模块(选择题) 1.用流程图描述算法中表示“条件判断”的图形符号是 A. B. C. D. 答案:A 2.以下为求0到1000以内所有奇数和的算法,从中选出描述正确的算法 A. ①s=0; ②i=1; ③s=s+i; ④i=i+2; ⑤如果i≤1000,则返回③; ⑥结束 B. ①s=0; ②i=1; ③i=i+2; ④s=s+i; ⑤如果i≤1000,则返回③; ⑥结束 C. ①s=1; ②i=1; ③s=s+i; ④i=i+2; ⑤如果i≤1000,则返回③; ⑥结束 D. ①s=1;

②i=1; ③i=i+2; ④s=s+i; ⑤如果i≤1000,则返回③; ⑥结束 答案:A 3.在VB语言中,下列数据中合法的长整型常量是 A. 123456 B. 1234.56 C. 12345A D. A12345 答案:A 4.在VB语言中可以作为变量名的是 A. Print B. ab=cd C. 123abc D. abc_123 答案:D 5.设置TextBox的字体时,应改变TextBox的 A. Text属性 B. Font属性 C. ForeColor属性 D. Name属性 答案:B 7.代数式a ac b 24 2 对应的VB表达式是 A. sqr(b*b-4*a*c)/2*a B. sqr(b*b-4*a*c)/2/a C. sqr(b*b-4*a*c)/(2/a) D. sqr(b*b-4*a*c)/2a

答案:B 8.在VB语言中,下列正确的赋值语句是 A. I=I+1 B. I+1=I C. I*3=I D. 2I=I+1 答案:A 9.下列计算机程序设计语言中不属于高级语言的是 A. C++ B. Visual Basic C.机器语言 D. Java 答案:C 计算机程序设计语言:机器语言010*******汇编语言高级语言10.在VB语言中,下列逻辑表达式的值为"假"的是 A. #1/11/2009# > #11/15/2008# B. #1/11/2009# < #11/15/2008# C. 5 > 3 and 6 < 9 D. 5 > 3 or 6 > 9 答案:B 11.用流程图描述算法中表示“开始/结束”的图形符号是 A. B. C. D. 答案:B

算法设计与分析试卷及答案

湖南科技学院二○年学期期末考试 信息与计算科学专业年级《算法设计与分析》试题 考试类型:开卷试卷类型:C卷考试时量:120分钟 题号一二三四五总分统分人 得分 阅卷人 复查人 一、填空题(每小题3 分,共计30 分) 1、用O、Ω与θ表示函数f与g之间得关系______________________________。 2、算法得时间复杂性为,则算法得时间复杂性得阶为__________________________。 3、快速排序算法得性能取决于______________________________。 4、算法就是_______________________________________________________。 5、在对问题得解空间树进行搜索得方法中,一个活结点最多有一次机会成为活结点得就是_________________________。 6、在算法得三种情况下得复杂性中,可操作性最好且最有实际价值得就是_____情况下得时间复杂性。 7、大Ω符号用来描述增长率得下限,这个下限得阶越___________,结果就越有价值。。 8、____________________________就是问题能用动态规划算法求解得前提。 9、贪心选择性质就是指____________________________________________________________________________________________________________________。 10、回溯法在问题得解空间树中,按______________策略,从根结点出发搜索解空间树。 二、简答题(每小题10分,共计30分) 1、试述回溯法得基本思想及用回溯法解题得步骤。 2、有8个作业{1,2,…,8}要在由2台机器M1与M2组成得流水线上完成加工。每个作业加工得顺序都就是先在M1上加工,然后在M2上加工。M1与M2加工作业i所需得时间分别为: M110 2 8 12 6 9414

最新高中信息技术《算法与程序设计》试题精品版

2020年高中信息技术《算法与程序设计》 试题精品版

新课标高中信息技术《算法与程序设计》试题一、单选题(每小题3分,20小题,共60分) 1、用计算机解决问题时,首先应该确定程序“做什么?”,然后再确定程序“如何做?”请问“如何做?”是属于用计算机解决问题的哪一个步骤?() A、分析问题 B、设计算法 C、编写程序 D、调试程序 2、在调试程序过程中,下列哪一种错误是计算机检查不出来的?() A、编译错误 B、执行错误 C、逻辑错误 D、任何错误计算机都能检查出来 3、下列关于算法的叙述中,错误的是() A、一个算法至少有一个输入和一个输出 B、算法的每一个步骤必须确切地定义 C、一个算法在执行有穷步之后必须结束 D、算法中有待执行的运算和操作必须是相当基本的。 4、流程图中表示判断的是()。 A、矩形框B、菱形框C、圆形框D、椭圆形框 5、任何复杂的算法都可以用三种基本结构组成,下列不属于基本结构的是( ) A、顺序结构 B、选择结构 C、层次结构 D、循环结构 6、能够被计算机直接识别的语言是() A、伪代码 B、高级语言 C、机器语言 D、汇编语言 7、在VB语言中,下列数据中合法的长整型常量是() A、08A B、2380836E C、88.12345 D、1.2345E6 8、求Mid(“ABCDEFG”,3,2)的结果是() A、“ABC” B、“CD” C、“ABCDEF” D、“BCD” 9、表达式 A+B+C=3 OR NOT C<0 OR D>0 当A=3,B=4,C=-5,D=6时的运算结果是() A、0 B、1 C、TRUE D、FALSE 10、在循环语句 For x=1 to 100 step 2 ……

历年算法与程序设计学业水平考试真题带答案

一、选择题 1、流程图是描述()的常用方式。 A、程序 B、算法 C、数据结构 D、计算规则 2、下面不属于算法描述方式的是()。 A、自然语言 B、伪代码 C、流程图 D、机器语言 3、以下运算符中运算优先级最高的是()。 A、+ B、^ C、>= D、* 4、某程序中三个连续语句如下: a=1 b=2 c=b+a 它属于() A、顺序结构 B、选择结构 C、循环结构 D、以上三种都不是 5、穷举法的适用范围是() A、一切问题 B、解的个数极多的问题 C、解的个数有限且可一一列举 D、不适合设计算法 6、在现实生活中,人工解题的过程一般分为() A、理解分析问题→寻找解题方法→用工具计算→验证结果

B、寻找解题方法→理解分析问题→用工具计算→验证结果 C、用工具计算→验证结果→寻找解题方法→理解分析问题 D、用工具计算→验证结果→理解分析问题→寻找解题方法 7、下列关于算法的特征描述不正确的是() A、有穷性:算法必须在有限步之内结束 B、确定性:算法的每一步必须确切的定义 C、输入:算法必须至少有一个输入 D、输出:算法必须至少有一个输出 8、下列哪一个不是用于程序设计的软件() A、BASIC B、C语言 C、Word D、Pascal 9、下列可以作为合作变量名的是() A、a7 B、7a C、a-3 D、8 10、编程求1+2+3+........+1000的和,该题设计最适合使用的控制结构为()。 A、顺序结构 B、分支结构 C、循环结构 D、选择结构 11、下列步骤不属于软件开发过程的是() A、任务分析与系统设计 B、软件的销售 C、代码编写与测试 D、软件测试与维护12.以下程序段运行时,语句k=k+1 执行的次数为()次。

算法分析与设计复习题及答案

算法分析与设计复习题及答案一、单选题 1.D 2.B 3.C 4.D 5.D 6.D 7.C 8.D 9.B 10.C 11.D 12.B 13.D 14.C 15.C 16.D 17.D 18.D 19.D 20.C 1.与算法英文单词algorithm具有相同来源的单词是()。 A logarithm B algiros C arithmos D algebra 2.根据执行算法的计算机指令体系结构,算法可以分为()。 A精确算法与近似算法B串行算法语并行算法 C稳定算法与不稳定算法D32位算法与64位算法 3.具有10个节点的完全二叉树的高度是()。 A6B5C3D 2 4.下列函数关系随着输入量增大增加最快的是()。 Alog2n B n2 C 2n D n! 5.下列程序段的S执行的次数为( )。 for i ←0 to n-1 do for j ←0 to i-1 do s //某种基本操作 A.n2 B n2/2 C n*(n+1) D n(n+1)/2 6.Fibonacci数列的第十项为( )。 A 3 B 13 C 21 D 34 7.4个盘子的汉诺塔,至少要执行移动操作的次数为( )。 A 11次 B 13次 C 15次 D 17次 8.下列序列不是堆的是()。 A 99,85,98,77,80,60,82,40,22,10,66 B 99,98,85,82,80,77,66,60,40,22,10 C 10,22,40,60,66,77,80,82,85,98,99 D 99,85,40,77,80,60,66,98,82,10,22 9.Strassen矩阵乘法的算法复杂度为()。 AΘ(n3)BΘ(n2.807) CΘ(n2) DΘ(n) 10.集合A的幂集是()。 A.A中所有元素的集合 B. A的子集合 C. A 的所有子集合的集合 D. 空集 11.与算法英文单词algorithm具有相同来源的单词是()。 A logarithm B algiros C arithmos D algebra 12.从排序过程是否完全在内存中显示,排序问题可以分为()。 A稳定排序与不稳定排序B内排序与外排序 C直接排序与间接排序D主排序与辅助排序 13.下列()不是衡量算法的标准。 A时间效率B空间效率 C问题难度D适应能力 14.对于根树,出度为零的节点为()。 A0节点B根节点C叶节点D分支节点 15.对完全二叉树自顶向下,从左向右给节点编号,节点编号为10的父节点编号为()。 A0B2C4D6 16.下列程序段的算法时间的复杂度为()。 for i ←0 to n do for j ←0 to m do

算法与程序设计试题

算法与程序设计试题 一、选择题(每题两分,共14分每题2分) 1、要进行元旦晚会比赛,学校请你设计一个能够对元旦晚会节目分数自动排序的软件,你接到任务后,准备开始设计此软件,比较好的方法和步骤是() A、设计算法,编写程序,提出问题,调试程序 B、分析问题,编写程序,设计算法,调试程序 C、分析问题,设计算法,编写程序,调试程序 D、设计算法,提出问题,编写程序,调试程序 2、数值型数据包括两种。 A、整型和长整型 B、整型和浮点型 C、单精度型和双精度型 D、整型、实型和货币型 3、具有输出数据功能的控件是:() A、窗体控件和标签控件 B、复选框控件和文本框控件 C、标签控件和文本框控件 D、选项框按钮控件和复选框控件 4、要使循环体至少执行一次,应使用循环。 5、下列程序段是计算公式的: s=0;t=1 for I =1 to 10 t:=t*I s:=s+t Next I A、s=1+2+3+......10B、s=1*2*3* (10) C、s=1!+2!+3! ......10! D、s=1+2*3+3*4+4*5+......9*10 6、在窗体(Name属性为Formal)上画两个文本框(其Name属性分别为Text1和Text2)和一个命令按钮(Name属性为Command1),然后编写如下两个事件过程: Private Sub Command1_Click() A = Text1Text + Text2.Text Print a End Sub Private Sub Formal_Load() Text1.Text = " " Text2.Text = " " End Sub 程序运行后,在第一个文本框(Text1)和第二个文本框(Text2)中分别输入123和321,然后单击命令按钮,则输出结果为()。 A、444 B、321123 C、123321 D、132231 7、使用函数与过程是为了。 A、使程序模块化B、使程序易于阅读

相关文档
最新文档