当前位置:文档之家› 信息学竞赛典型例题程序汇集

信息学竞赛典型例题程序汇集

信息学竞赛典型例题程序汇集
信息学竞赛典型例题程序汇集

信息学竞赛复习1.斐波拉契数列(1000000以内的数字)

#include “stdio.h”

#include “stdlib.h”

void main()

{

long fib1=1,fib2=1,fib=0;

printf("1000000以内的数字:\n\n");

printf("%d\n%d\n",fib1,fib2);

while (fib<1000000)

{

fib=fib1+fib2;

fib1=fib2;

fib2=fib;

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

}

system("pause");

}

2.约瑟夫问题

(1)约瑟夫问题_数组

#include "stdio.h"

#include "stdlib.h"

#define Length 100

void main()

{

int i,j;

int len; //输入的总节点数

int n,m; //输入的每次数几个

int remain; //剩下的节点数

int current; //当前数到那个数字

int a[Length];

for(i=0;i

{

a[i]=1;

}

printf("请输入约瑟夫问题节点总数:");

len=41; //scanf("%d",&len);

printf("请输入每次数的节点数字:");

n=3; //scanf("%d",&n);

remain=len; //剩下的节点数

current=0; //当前数到那个数字

m=0; //计数到n,m=n时清零

//从1开始数

//循环到剩下的节点数为0

printf("出列的节点的编号依次为:");

while(remain>0)

{

current++;

while(current>len)

{

current-=len;

}

if(a[current]==1)

{

m++;

if(m==n)

{

a[current]=0;

remain--;

printf("%d, ",current);

m=0;

}

}

}

system("pause");

}

(2)约瑟夫问题_数组环

#include "stdio.h"

#include "stdlib.h"

void main()

{

int a[100];

int i,len,n; //i循环 len总数 n每次数几个

int cur,m,remain; //cur当前是哪个 m 计数 remain 剩下几个//int t1,t2;

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

{

a[i]=i+1;

}

printf("请输入约瑟夫问题节点总数:");

len=41; //scanf("%d",&len);

printf("请输入每次数的节点数字:");

n=3; //scanf("%d",&n);

a[len]=1; //首尾相连

remain=len; //开始前,剩余数为总数

cur=1; //当前从第1个开始

m=1; //计数从1开始

while(remain>0)

{

cur=a[cur];

m++;

if(m==n-1)

{

printf("%d, ",a[cur]);

//t1=a[cur];

//t2=a[a[cur]];

a[cur]=a[a[cur]];

remain--;

m=0;

}

}

system("pause");

}

(3)约瑟夫问题_链表

#include "stdio.h"

#include "stdlib.h"

struct people

{

int num;

struct people *next;

};

typedef struct people node;

node *create(int m)

{

int i;

node *h,*p1,*p2;

h=p1=p2=(node *)malloc(sizeof(node));

h->num=1;

for(i=1;i

{

p1=(node *)malloc(sizeof(node));

p2->next=p1;

p1->num=i+1;

p2=p1;

}

p1->next=h;

return h;

}

node *findout(node *tp,int n)

{

int i;

node *p;

p=tp;

for(i=1;i

{

p=p->next;

}

return p;

}

node *moveaway(node *tp)

{

node *c,*p1,*p2;

c=tp;

p1=c->next;

p2=p1->next;

c->next=p2;

printf("%d, ",p1->num);

free(p1);

return p2;

}

void main()

{

node *p;

int len,i,n;

printf("请输入约瑟夫问题节点总数:");

len=41; //scanf("%d",&len);

printf("请输入每次数的节点数字:");

n=3; //scanf("%d",&n);

p=create(len);

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

{

p=moveaway(findout(p,n));

}

system("pause");

}

(4)约瑟夫问题_双向链表

#include "stdio.h"

#include "stdlib.h"

struct people

{

int num;

struct people *next;

struct people *prior;

};

typedef struct people node;

node *create(int m)

{

int i;

node *h,*p1,*p2;

h=p1=p2=(node *)malloc(sizeof(node));

h->num=1;

for(i=1;i

{

p1=(node *)malloc(sizeof(node));

p2->next=p1;

p1->prior=p2;

p1->num=i+1;

p2=p1;

}

p1->next=h;

h->prior=p1;

return h;

}

node *findout(node *tp,int n)

{

int i;

node *p;

p=tp;

for(i=1;i

{

p=p->next;

}

return p;

}

node *moveaway(node *tp)

{

node *c,*p1,*p2;

c=tp;

p1=c->prior;

p2=c->next;

p1->next=p2;

p2->prior=p1;

printf("%d, ",c->num);

free(c);

return p2;

}

void main()

{

node *p;

int len,i,n;

printf("请输入约瑟夫问题节点总数:");

len=41;//scanf("%d",&len);

printf("请输入每次数的节点数字:");

n=3;//scanf("%d",&n);

p=create(len);

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

{

p=moveaway(findout(p,n));

}

system("pause");

}

3.数字7 和5

(1)统计含有数字7,但不能被7整除的5位整数的个数#include

#include

void main()

{

int sum=0;//统计个数

int b;//起数

int a[6];

int have7;

int j;

int tempb;

for(b=10000;b<100000;b++)

{

//分离数字到数组

tempb=b;

for(j=0;j<5;j++)

{

a[5-j]=tempb-(tempb/10)*10;

tempb=tempb/10;

}

//判断是否含7

have7=0;

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

{

if(a[j]==7)

{

have7++;

}

}

if(have7>0 && b%7!=0)

{

//printf("%d\n",b);

sum++;

}

}

printf("sum=%d\n",sum);

system("pause");

}

(2)统计含有2个数字7,但不能被7整除的5位整数的个数#include

#include

void main()

{

int sum=0;//统计个数

int b;//起数

int a[6];

int have7;

int j;

int tempb;

for(b=10000;b<100000;b++)

{

//分离数字到数组

tempb=b;

for(j=0;j<5;j++)

{

a[5-j]=tempb-(tempb/10)*10;

tempb=tempb/10;

}

//判断是否含7

have7=0;

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

{

if(a[j]==7)

{

have7++;

}

}

if(have7==2 && b%7!=0)

{

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

sum++;

}

}

printf("sum=%d\n",sum);

system("pause");

}

4.百钱买百鸡:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?

(1)#include

#include

void main()

{

int i,j,k;

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

{

for(j=1;j<33;j++)

{

k=100-i-j;

if(i*15+j*9+k==300)

{

printf("鸡翁%d,鸡母%d,鸡雏%d\n",i,j,k);

}

}

}

system("pause");

}

(2)#include

#include

void main()

{

int i,j,k;

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

{

for(j=1;j<33;j++)

{

k=(100-i*5-j*3)*3;

if(i+j+k==100)

{

printf("鸡翁%d,鸡母%d,鸡雏%d\n",i,j,k);

}

}

}

system("pause");

}

5.逆序乘积式

(1)两位数逆序乘积式

#include

void main()

{

int sum=0;

int a,b,c,d;

int i,j,ir,jr,m,n;

int arr[5];

int flag;

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

{

arr[1]=a=i/10;

arr[2]=b=i-a*10;

for(j=i+1;j<98;j++)

{

arr[3]=c=j/10;

arr[4]=d=j-c*10;

//检查有没有相同数字

flag=0;

for(m=1;m<4;m++)

{

for(n=m+1;n<5;n++)

{

if(arr[m]==arr[n])

{

flag=1;

break;

}

}

}

//检查完

//右侧的逆序

ir=b*10+a;

jr=d*10+c;

if(flag==0&&i*j==ir*jr&&i

{

sum++;

printf("%d:\ti=%d\t,j=%d\t,ir=%d\t,jr=%d\n",sum,i,j,ir,jr);

}

}

}

}

(2)三位数逆序乘积式

#include

void main()

{

int sum=0;

int a,b,c,d,e,f;

int i,j,ir,jr,m,n;

int arr[7];

int flag;

for(i=100;i<987;i++)

{

arr[1]=a=i/100;

arr[2]=b=i/10-a*10;

arr[3]=c=i-a*100-b*10;

for(j=i+1;j<987;j++)

{

arr[4]=d=j/100;

arr[5]=e=j/10-d*10;

arr[6]=f=j-d*100-e*10;

//检查有没有相同数字

flag=0;

for(m=1;m<6;m++)

{

for(n=m+1;n<7;n++)

{

if(arr[m]==arr[n])

{

flag=1;

break;

}

}

}

//检查完

//右侧的逆序

ir=c*100+b*10+a;

jr=f*100+e*10+d;

if(flag==0&&i*j==ir*jr&&i

{

sum++;

printf("%d:\ti=%d\t,j=%d\t,ir=%d\t,jr=%d\n",sum,i,j,ir,jr);

}

}

}

}

6.双和数组

(1)普通解法

#include

void main()

{

int s;

int a,b,c,d,e,f;

int arr[7];

int flag,i,j;

int sum=0;

for (s=11;s<=100;s++)

{

printf("s=%d:\n",s);

for(a=1;a<=s-2;a++)

{

for(b=a+1;b<=s-1;b++)

{

for(d=a+1;d<=s-2;d++)

{

for(e=d+1;e<=s-1;e++)

{

c=s-a-b;

f=s-d-e;

//检查是否有重复数字

arr[1]=a;

arr[2]=b;

arr[3]=c;

arr[4]=d;

arr[5]=e;

arr[6]=f;

if(a

{

flag=0;

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

{

for(j=i+1;j<7;j++)

{

if(arr[i]==arr[j])

{

flag=1;

}

}

if(arr[i]<0)

{

//避免负数

flag=1;

}

}

//没有重复的数字进入且符合倒数条件

if(flag==0&&(a*b*c*(e*f+f*d+d*e)==d*e*f*(b*c+c*a+a*b)))

{

sum++;

printf("s=%d;a=%d,b=%d,c=%d,d=%d,e=%d,f=%d\n",s,a,b,c,d,e,f);

}

}

}

}

}

}

}

printf("sum=%d",sum);

}

(2)优化后解法

#include

void main()

{

int s;

int a,b,c,d,e,f;

int arr[7];

int flag,i,j;

int sum=0;

for (s=11;s<=100;s++)

{

printf("s=%d:\n",s);

for(a=1;a<=s-2;a++)

{

for(b=a+1;b<=s-1;b++)

{

for(d=a+1;d<=s-2;d++)

{

for(e=d+1;e<=s-1;e++)

{

c=s-a-b;

f=s-d-e;

//检查是否有重复数字

arr[1]=a;

arr[2]=b;

arr[3]=c;

arr[4]=d;

arr[5]=e;

arr[6]=f;

flag=0;

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

{

for(j=i+1;j<7;j++)

{

if(arr[i]==arr[j])

{

flag=1;

}

}

if(arr[i]<0)

{

//避免负数

flag=1;

}

}

if(a>b||a>c||b>c)

{

flag=1;

}

if(d>e||d>f||e>f)

{

flag=1;

}

//没有重复的数字进入且符合倒数条件

if(flag==0&&(a*b*c*(e*f+f*d+d*e)==d*e*f*(b*c+c*a+a*b)))

{

sum++;

printf("s=%d;a=%d,b=%d,c=%d,d=%d,e=%d,f=%d\n",s,a,b,c,d,e,f);

}

}

}

}

}

}

}

7.八皇后问题

(1)穷举法

#include

#include

#include

#define N 8 //定义棋盘大小

void main(void)

{

int numoftimes = 0;

int count = 0;

int a[N + 1];

int flag;

int i1, i2, i3, i4, i5, i6, i7, i8, x, y, p;

printf("%d皇后问题的穷举法解决",N);

for (i1 = 1; i1 <= N; i1++)

{

a[1] = i1;

for (i2 = 1; i2 <= N; i2++)

{

a[2] = i2;

for (i3 = 1; i3 <= N; i3++)

{

a[3] = i3;

for (i4 = 1; i4 <= N; i4++)

{

a[4] = i4;

for (i5 = 1; i5 <= N; i5++)

{

a[5] = i5;

for (i6 = 1; i6 <= N; i6++)

{

a[6] = i6;

for (i7 = 1; i7 <= N; i7++)

{

a[7] = i7;

for (i8 = 1; i8 <= N; i8++)

{

a[8] = i8;

//检测是否冲突

flag = 0;

for (x = 1; x < N; x++)

{

for (y = x + 1; y <= N; y++)

{

if (a[x] == a[y] || abs(a[x] - a[y]) == y - x)

{

flag = 1;

break;

}

numoftimes++;

}

if(flag==1)

{

continue;

}

}

if (flag==0)

{

count++;

printf("第%d种解法:", count); for (p = 1; p <= N; p++)

{

printf("%d", a[p]);

}

printf("\n");

}

}

}

}

}

}

}

}

}

printf("共运行计算%d次\n", numoftimes);

printf("共找到%d种方案\n", count);

system("pause");

}

(2)递归法

#include "stdio.h"

#define N 8 //定义棋盘大小

static int count,a[N];

// count记录当前已找到解的个数

// a[N]记录皇后的位置,表示第i行的皇后放在棋盘的第a[i]列

int numoftimes = 0;

void recursive(int t)

{

//尝试第t行的放置方案

int i;

int j;

int sign = 1;

if (t == N + 1)

{

//t == N + 1

//表示放下最后一个皇后,找到解法

count++;

/* 第1种显示方法 */

// t == N + 1

// 已经得到一个解决方案

printf("第%d种解法:", count);

//Literal1.Text += string.Format("第{0}种解法:", count); for (i = 1; i <= N; i++)

{

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

//Literal1.Text += string.Format("{0}", a[i]);

}

printf("\n");

//Literal1.Text += "
";

/* 第2种显示方法

printf("第%d种解法:\n", count);

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

{

for (j = 0; j < N; j ++)

{

if (j == a[i])

{

printf("@ ");

}

else

{

printf("* ");

}

}

printf("\n");

}

printf("\n");

*/

}

else

{

//还没有放下所有的皇后

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

{

//依次尝试在第t行的第1列到第N列放置

a[t] = i;

sign = 1;

for (j = 1; j <= t - 1; j++)

{

//测试皇后在第t行第a[t]列时是否与前面已放置好的皇后相攻击。

//a[j] ==a[t] 时,两皇后在同一列上;

//abs(t - j) == abs(a[j] - a[t]) 时,两皇后在同一斜线上。

//两种情况两皇后都可相互攻击,故不符合条件。设置sign=0

//if (Math.Abs(t - j) == Math.Abs(a[j] - a[t]) || (a[j] == a[t])) if (abs(t - j) == abs(a[j] - a[t]) || (a[j] == a[t]))

{

sign = 0;

}

numoftimes++;

}

//如果没有冲突,继续尝试

if (sign == 1)

{

recursive(t + 1);

}

else

{

//有冲突的方案丢弃!

//也可以在此记录

}

}

}

}

void main(void)

{

recursive(1);//从第1行开始放置皇后

printf("运行%d次:", numoftimes);

system("pause");

}

(3)回溯法

#include

#include

#include

#define N 8

void main()

{

int numoftimes = 0;

int count = 0;//解法的个数(计数器)

int a[N+1];//i,a[i]分别代表第i行和这行中皇后放置的列数

int flag;//标记0或1,0代表有冲突;1代表没有冲突

int i,j;//循环变量

int m;

m=1;a[m] = 1;//从第1行开始第1行从第1列开始放置皇后

while (a[1] < N + 1 )

{

numoftimes++;

flag = 0;

for (i = m - 1; i >= 1; i--)

{//检查当前行放置位置,与之前的所有行有没有冲突

if (a[m] == a[i] || abs(a[m] - a[i]) == m - i)

{

flag = 1;

break;

}

}

if (flag==0 && m == N)

{

//检测是否找到合适的解

//如果所有的皇后位置没有冲突 flag==0

//并且m指向最后1行 m == N

count++;

printf("第%d种解法:", count);

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

{

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

}

printf("\n");

}

if (flag==0 && m < N)

{

//如果所有的皇后位置没有冲突 flag==0

//并且i尚未到达最后1行 m < N

m++;//到下一行

a[m] = 1;//第1列

}

else

//if(flag==1||(flag==0&&m==N))

{

//包括1 flag==1,有冲突

//包括2 没有冲突(flag==0 && m == N),已经输出的解法

//输出完后,也需要继续查找下一个解法

while (a[m] == N && m > 1)

{

//a[m] == N,已经测试完这一行的所有列,到达最后一列

// m > 1,不是第1行

m--;//退回上1行

}

a[m]++;//右移1列

}

}

printf("共运行计算%d次\n", numoftimes);

printf("共找到%d种方案\n\n", count);

system("pause");

}

8.桥本分数式

(1)穷举法

#include

#include

//桥本分数式求解

void main()

{

int sum=0,runcount;

int i1,i2,i3,i4,i5,i6,i7,i8,i9;

int flag;

int a[11];

int m,n,j;

int left,right,ab;

for(i1=1;i1<=9;i1++)

{

for(i2=1;i2<=9;i2++)

{

for(i3=1;i3<=9;i3++)

{

for(i4=1;i4<=9;i4++)

{

for(i5=1;i5<=9;i5++)

{

for(i6=1;i6<=9;i6++)

{

for(i7=1;i7<=9;i7++)

{

for(i8=1;i8<=9;i8++)

{

for(i9=1;i9<=9;i9++)

{

runcount++;

a[1]=i1;

a[2]=i2;

a[3]=i3;

a[4]=i4;

a[5]=i5;

a[6]=i6;

a[7]=i7;

a[8]=i8;

a[9]=i9;

//检查是否有重复数字

flag=0;

for(m=1;m<9;m++)

{

for(n=m+1;n<10;n++)

{

if(a[m]==a[n])

{

flag=1;

}

}

}

//检查重复完成

if(flag==0&&a[1]

{

left=i1*(i5*10+i6)*(i8*10+i9)+i4*(i2*10+i3)*(i8*10+i9);

right=i7*(i2*10+i3)*(i5*10+i6);

if(left==right)

{

sum++;

printf("%d:%d/%d%d+%d/%d%d=%d/%d%d\n",sum,i1,i2,i3,i4,i5,i6,i7,i8,i9);

}

}

}

}

}

}

}

}

}

}

}

printf("共进行检测%d次。\n", runcount);

system("pause");

}

(2)递归法

程序设计典型例题解析(2)

程序设计典型例题解析(2)

典型例题解析(2) 一、填空题 1.以顺序输入模式打开“c:\source1.txt”文件的命令是(1);以输出方式打开“c:\source2.txt”文件的命令是(2)。 分析:Print # 语句用于将把数据写入文件中。Print语句格式为: Open 文件名 [For模式] As [#] 文件号 “For 模式”为指定打开文件的模式是数据的输入模式还是输出模式。 结论:答案应为:(1)Open "c:\source1.txt" For Input As #1 (2)Open "c:\source2.txt" For Output As #2 2.在Visual Basic中,文件系统控件包括(1)、(2)和文件列表框(FileListBox)。三者协同操作可以访问任意位置的目录和文件,可以进行文件系统的人机交互管理。 分析:在Visual Basic中,文件系统控件包括驱动器列表框(DriveListBox)、目录列表

框(DirListBox)和文件列表框(FileListBox)。驱动器列表框可以选择或设置一个驱动器,目录列表框可以查找或设置指定驱动器中的目录,文件列表框可以查找指定驱动器指定目录中文件信息,三者协同操作可以访问任意位置的目录和文件,可以进行文件系统的人机交互管理。 结论:答案应为:(1)驱动器列表框(DriveListBox)(2)目录列表框(DirListBox) 3.每次重新设置驱动器列表框的Drive属性时,都将引发(1)事件。可在该事件过程中编写代码修改目录列表框的路径,使目录列表框内容随之发生改变。 分析:在Visual Basic中,每次重新设置驱动器列表框的Drive属性时,都将引发Change事件。可在Change事件过程中编写代码修改目录列表框的路径,使目录列表框内容随之发生改变。驱动器列表框的默认名称为Drive1,其Change事件过程的开头为Drive1_Change()。 结论:答案应为:(1)Change 4.目录列表框用来显示当前驱动器下目录

程序设计练习题

第六章程序设计 1、下列程序运行时,若从键盘上输入20,则屏幕上的输出是多少?Input “请输入一个数:” to x If x<=10 Y=2*x-5 Else Y=2*x+5 Endif ? Y 2、执行下列程序后,变量A的值为多少?B的值为多少? A=100 B=200 IF A-B<0 T=A A=B B=T ENDIF ? A,B 3、下列程序运行时,若从键盘上输入25时,屏幕上显示的结果是多少?INPUT “X=” TO X DO CASE CASE X>10 ? “A1” CASE X>20 ? “A2” OTHERWISE ? “A3” ENDCASE RETURN

4、执行下列程序,变量T中的值是多少? T=1 FOR I=1 TO 5 T=T*I ENDFOR ? “T=”,T 5、执行下列程序,屏幕上输出的是多少? D=”” SS=”ABCDE” FOR I=1 TO 5 D=D+SUBSTR(SS,6-I,1) ENDFOR ? D 6、执行下面程序,屏幕上输出的Y是多少? STORE 0 TO X,Y DO WHILE .T. X=X+1 DO CASE CASE INT(X/2)=X/2 LOOP CASE X>=10 EXIT OTHERWISE Y=Y+X ENDCASE ENDDO ? Y 7、下列程序运行时,若从键盘上输入5,则屏幕上输出的是_______。Input "请输入一个数:" to x Do case

Case x>10 ?"A1" Case x>20 ?"A2" otherwise ?"A3" Endcase Return 8、执行下列程序片段后,变量T中的值是_______。 T=1 FOR I=1 TO 5 T=T*I ENDFOR ? "T=",T 9、如下程序显示的结果是。 s=1 i=0 do while i<8 s=s+i i=i+2 Enddo ?s 10、如下程序的输出结果是。 i=1 DO WHILE i<10 i=i+2 ENDDO ?i 11、执行下列程序后,变量A的值为_______,变量B的值为_______。

50道经典的编程题

【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21.... 【程序2】 题目:判断101-200之间有多少个素数,并输出所有素数。 1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。 【程序3】 题目:打印出1000以内所有的"水仙花

数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。 1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。 【程序4】 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。 程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。 (2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。

【程序5】 题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。 1.程序分析:(a>b)?a:b这是条件运算符的基本例子。 【程序6】 题目:输入两个正整数m和n,求其最大公约数和最小公倍数。 1.程序分析:利用辗除法。 【程序7】

信息学奥赛基础知识习题(答案版)

信息学奥赛基础知识习题(答案版) 一、选择题(下列各题仅有一个正确答案,请将你认为是正确的答案填在相应的横线上) 1.我们把计算机硬件系统和软件系统总称为 C 。 (A)计算机CPU (B)固 件 (C)计算机系统 (D)微处 理机 2.硬件系统是指 D 。 (A)控制器,器运算 (B)存储器,控制器 (C)接口电路,I/O设备 (D)包括(A)、(B)、(C) 3. 计算机软件系统包括 B 。 A) 操作系统、网络软件 B) 系统软件、应用软件 C) 客户端应用软件、服务器端系统软件 D) 操作系统、应用软件和网络软件4.计算机硬件能直接识别和执行的只有 D 。 (A)高级语言 (B)符号语言 (C)汇编语言 (D)机器语言 5.硬盘工作时应特别注意避免 B 。 (A)噪声 (B)震动 (C)潮 湿 (D)日光 6.计算机中数据的表示形式是 C 。 (A)八进制 (B)十进制 (C)二进 制 (D)十六进制

7.下列四个不同数制表示的数中,数值最大的是 A 。 (A)二进制数11011101 (B)八进制数334 (C)十进制数219 (D)十六进制 数DA 8.Windows 9x操作系统是一个 A 。 (A)单用户多任务操作系统 (B)单用户单任务操 作系统 (C)多用户单任务操作系统 (D)多用户多任务操 作系统 9.局域网中的计算机为了相互通信,必须安装___B__。 (A)调制解调器(B)网卡(C)声卡(D)电视卡 10.域名后缀为edu的主页一般属于__A____。 (A)教育机构(B)军事部门(C)政府部门(D)商业组织 11. 在世界上注册的顶级域名是__A____。 (A)hk(B)cn(C)tw(D) 12.计算机能够自动、准确、快速地按照人们的意图进行运行的最基本思想是( D )。 (A)采用超大规模集成电路(B)采用CPU作为中央核心部件 (C)采用操作系统(D)存储程序和程序控制 13.设桌面上已经有某应用程序的图标,要运行该程序,可以 C 。 (A)用鼠标左键单击该图标 (B)用鼠标右键单击该 图标 (C)用鼠标左键双击该图标 (D)用鼠标右键双击该 图标

编译原理词法分析习题集带答案

《编译原理》习题(一)——词法分析 一、是非题(请在括号内,正确的划√,错误的划×) 1.编译程序是对高级语言程序的解释执行。(× ) 2.一个有限状态自动机中,有且仅有一个唯一的终态。(×) 9.两个正规集相等的必要条件是他们对应的正规式等价。(× ) 二、选择题 1.词法分析器的输出结果是_____。 A.( ) 记号B.( ) 相应条目在符号表中的位置 C.( ) 记号和属性二元组D.( ) 属性值 2.正规式M 1 和M 2 等价是指_____。 ! A.( ) M1和M2的状态数相等B.( ) M1和M2的有向边条数相等C.( ) M1和M2所识别的语言集相等D.( ) M1和M2状态数和有向边条数相等3.语言是 A.句子的集合B.产生式的集合 C.符号串的集合D.句型的集合 4.编译程序前三个阶段完成的工作是 A.词法分析、语法分析和代码优化 B.代码生成、代码优化和词法分析 C.词法分析、语法分析、语义分析和中间代码生成 D.词法分析、语法分析和代码优化 5.扫描器所完成的任务是从字符串形式的源程序中识别出一个个具有独立含义的最小语法单位即 [ A.字符B.单词C.句子D.句型 6.构造编译程序应掌握______。 A.( )源程序B.( ) 目标语言 C.( ) 编译方法D.( ) 以上三项都是 7.词法分析的任务是 A.识别单词B.分析句子的含义 C.识别句子D.生成目标代码 三、填空题 1.计算机执行用高级语言编写的程序主要有两种途径:___解释__和__编译___。 3.编译过程可分为(词法分析),(语法分析),(语义分析与中间代码生成),(优化)和(目标代码生成)五个阶段。 ? 6.扫描器的任务是从(源程序中)中识别出一个个(单词符号)。 17.一张转换图只包含有限个状态,其中有一个被认为是(初)态;而且实际上至少要有一个(终)态。 1.编译程序首先要识别出源程序中每个(单词),然后再分析每个(句子)并翻译其意义。3.通常把编译过程分为分析前端与综合后端两大阶段。词法、语法和语义分析是对源程序

程序设计题目

程序设计题一:学生信息管理系统 【课题内容】 学生信息的管理是每个学校必须具有的管理功能,主要是对学生的基本情况及学习成绩等方面的管理。该系统模拟一个简单的学生管理系统,要求对文件中所存储的学生数据进行各种常规操作,如:排序、查找、计算、显示等功能。通过此课题,熟练掌握文件、数组、结构体的各种操作,在程序设计中体现一定的算法思想,实现一个简单的学生信息管理系统。 【基本要求】 (1)学生信息包括: 学生基本信息文件(student.txt)(注:该文件不需要编程录入数据,可用文本编辑工具直接生成)的内容如下: 学号姓名性别宿舍号码电话号码 01 张成成男 501 87732111 02 李成华女 101 87723112 03 王成凤女 101 87723112 04 张明明男 502 87734333 05 陈东男 501 87732111 06 李果男 502 87734333 07 张园园女 102 87756122 ………………… (2)学生成绩基本信息文件(score.dat)及其内容如下:((注:该文件内容需要编程录入数据,具体做法见下面的要求) 学号课程编号课程名称学分平时成绩实验成绩卷面成绩综合成绩实得学分 01 A01 大学物理 3 66 78 82 02 B03 高等数学 4 78 -1 90 01 B03 高等数学 4 45 -1 88 02 C01 VF 3 65 76 66

…………………… (3)需要实现的功能 1)数据录入和计算功能:对score.dat进行数据录入,只录入每个学生的学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩共7个数据,综合成绩、实得学分由程序根据条件自动运算。 综合成绩的计算:如果本课程的实验成绩为-1,则表示无实验,综合成绩=平时成绩*30%+卷面成绩*70%;如果实验成绩不为-1,表示本课程有实验,综合成绩=平时成绩*15%+实验成绩*15%+卷面成绩*70% 。 实得学分的计算:采用等级学分制,综合成绩在90-100之间,应得学分=学分*100%;综合成绩在80-90之间,应得学分=学分*80%;综合成绩在70-80之间 ,应得学分=学分*75%;综合成绩在60-70之间,应得学分=学分*60%;综合成绩在60以下 ,应得学分=学分*0%。 2)查询功能:分为学生基本情况查询和成绩查询两种 (1)学生基本情况查询: ①、输入一个学号或姓名(可实现选择),查出此生的基本信息并显示输出,格式如下: ②、输入一个宿舍号码,可查询出本室所有的学生的基本信息并显示输出。(格式如上所示) (2)成绩查询: ①、输入一个学号时,查询出此生的所有课程情况,格式如下: 学号:xx 姓名:xxxxx 课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx 课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx 课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx ………………… … 共修:xx科,实得总学分为: xxx (3)删除功能:

程序设计典型例题

我先给你一些VF的例题看看吧! Vfp--程序设计典型例题 Vfp题库:程序设计基础典型例题 [例1] 在()窗口中可以控制列表框内显示的变量种类。 A.跟踪窗口 B.监视窗口 C.局部窗口 D.调动堆栈窗口 分析:局部窗口用于显示模板程序中的内存变量,并显示它们的名称.当前取值的类型。它可以控制在列表内显示的变量类型。 答案c 例2下面选项中关于ACCEPT命令说法错误的是() A.ACCEPT命令格式是:ACCEPT[<字符表达式>] TO<内存变量> B.该命令只接收字符串,但是用户在输入字符串时,必须要加上定界符 C如果不输入任何内容直接按回车键,系统就会把空串赋给指定的内存变量 D如果选用<字符表达式>,那么系统就会首先显该表达式的值,作为提示信息 分析:该命令只接收字符串,但用户在输入时不需要加定界符;否则,系统会把定界符当作字符串的一部分输出. 答案:B 例3下列关于过程的说法中不正确的是 A.过程文件可以放在任何程序文件代码的后面,也可以保存在称为过程文件的单独文件里 B.过程文件只包含过程,这些过程只能被过程文件调用 C.如果需要打开多个过程文件,可以在调用过程语句中加ADDITVE,那么在打开过程文件时, 并不关闭原先已打开的过程文件 D.关闭个别过程文件的命令格式是:RELESE PROCEDURE<过程文件> 分析:过程文件只包含过程,这些过程可以被任何其它程序调用.命令格式SETPOCEDURE TO[<过程文件>][ADDITIVE]就可以打开多个过程文件.当使用不带任何文件名的SET PROCEDURE TO命令时,将会关闭所有的过程文件,使用命令RELEASE PROCEDURE<过程文件>时,将关闭指定的过程文件. 答案:B 例4 在一个程序定义了的一些变量,选出局部变量( ) 1.PRG PUBLIC aI LOCAL a2,a3 SCORE'B'TO a4 LOCATE a5 A.a1 B.a2,a3 C.a4 D.a5 分析:A是公共变量,C是私有变量,D的命令和LOCA TE相似,但不存在这样定义变量的命令.只有B才是定义了两个局部变量. 答案:B 例5 不需要先建立就可以使用的变量是( ) A.局部变量 B.公共变量 C.私有变量 D.数组 分析:私有变量是指在程序中直接使用,由系统自动隐含建立的变量.即没有通过PUBLIC 或

2019-2020年中学生信息学奥林匹克初赛模拟试题附参考答案

2019-2020 年中学生信息学奥林匹克初赛模拟试题附参考答案 一、选择题(共20题,每题 1.5 分,共计30分。前10 题为单选题;后10题为不定项选择题) 1. 微型计算机的性能主要取决于( )。 A)内存B)主板C)中央处理器D)硬盘 E )显示器 2. 128KB 的存储器用十六进制表示,它的最大的地址码是( ) A)10000 B)EFFF C)1FFFF D)FFFFF E)FFFF 3. 能将高级语言程序转换为目标程序的是( ). A)调试程序B) 解释程序C) 编辑程序D) 编译程序E) 连接程序 4.A=11001010B,B=00001111B,C=01011100B,则A∨B∧C=( )B A)01011110 B)00001111 C)01011100 D)11001110 E)11001010 5. 计算机病毒传染的必要条件是( ) 。 A) 在内存中运行病毒程序B) 对磁盘进行读写操作 C) 在内存中运行含有病毒的可执行程序D) 复制文件E) 删除文件 6. TCP /IP 协议共有( ) 层协议 A)3 B)4 C)5 D)6 E)7 7.192.168.0.1 是属于( ). A)A 类地址B)B 类地址C)C 类地址D)D 类地址E)E 类地址 8. 对给定的整数序列(54,73,21,35,67,78,63,24,89) 进行从小到大的排序时, 采用快速排序的第一趟扫描的结果是( ). A)(24,21,35,54,67, 78,63,73,89) B)(24,35,21,54,67, 78,63,73,89) C) (24,21,35,54,67, 63,73,78,89) D)(21,24,35,54,63, 67,73,78,89) E)(24,21,35,54,67, 63,73,78,89) 9. 一棵n 个结点的完全二叉树, 则二叉树的高度h 为( ). n log 2 n A) B) log 2 n C) 2D) log 2 n 1 E)2n-1 22 10. 对右图进行广度优先拓扑排序得到的顶点序列正确的是( ). A)1,2,3,4,5,6 B)1,3,2,4,5,6 C)1,3,2,4,6,5 D) 1,2,3,4,6,5 E)1,3,2,4,5,6 11. 下列属于冯.诺依曼计算机模型的核心思想是( ). A) 采用二进制表示数据和指令B) 采用“存储程序”工作方式

c语言编程例题与答案解析

实验报告三 (四学时) 2.1 实验目的 (1)掌握函数的定义和调用; (2)了解函数间的参数传送; 2.2 基础实验 【题目3-1】编写函数实现将输入的字母转换成大写字母(若输入小写则转换,大写字母直接输出,其他字符请输出提示“请输入字母”)。 算法分析: 1、输入:通过键盘接收一个字符; 2、条件判断:调用判别函数 3、函数功能为:蒋所输入字符进行判别处理,若输入小写则转换,大写字母直接输出,其他字符请输出提示“请输入字母” 4、程序结束。 【实验3-1】代码及运行结果:

【题目3-2】从键盘输入若干个同学计算机课程期末考试成绩(学生人数可由用户输入),求该课程的期末成绩的平均分并输出。 函数功能要求:实现若干(例如5名)同学的的期末成绩输入,并统计出平均分。 算法分析: 1、输入:通过键盘接收同学个数; 2、调用求平均分函数 3、输出平均成绩 4、程序结束。

【实验3-2】代码及运行结果:

【题目3-3】请用函数编写程序实现:计算3 到100 之间所有素数的平方根之和,并输出。s=148.874270。 算法分析: 1、编写函素数判别函数,确定返回标记,如果是素数返回1,否则返回0 2、编写主函数,用一重循环遍历100以内所有数据 2.1、通过素数判别函数对循环的数据进行是否为素数的判别 2.2、返回判别为真的整数,并输出 3、程序结束。 【实验3-3】代码及运行结果: #include #include int Prime(int x) { int i ; if(x<=1) return 0; for(i=2;i<=x-1;i++) { if(x%i==0) { return 0;

第二十届全国青少年信息学奥林匹克竞赛初赛提高组C语言试题(附答案)

第二十届全国青少年信息学奥林匹克竞赛初赛 提高组C语言试题 一、单项选择题(每题1.5分,共22.5分)。 1. 以下哪个是面向对象的高级语言( ). A. 汇编语言 B. C++ C. FORTRAN D. Basic 2. 1TB代表的字节数量是( ). A. 2的10次方 B. 2的20次方 C. 2的30次方 D. 2的40次方 3. 二进制数00100100和00010101的和是( ). A. 00101000 B. 001010100 C. 01000101 D. 00111001 4. TCP协议属于哪一层协议( ). A. 应用层 B. 传输层 C. 网络层 D. 数据链路层 5. 下列几个32位IP地址中,书写错误的是( ). A. 162.105.128.27 B. 192.168.0.1 C. 256.256.129.1 D. 10.0.0.1 6. 在无向图中,所有定点的度数之和是边数的( )倍. A. 0.5 B. 1 C. 2 D. 4 7. 对长度位n的有序单链表,若检索每个元素的概率相等,则顺序检索到表中任一元素的平均检索长度为( ). A. n/2 B. (n+1)/2 C. (n-1)/2 D. n/4 8. 编译器的主要功能是( ). A. 将一种高级语言翻译成另一种高级语言 B. 将源程序翻译成指令 C. 将低级语言翻译成高级语言 D. 将源程序重新组合 9. 二进制数111.101所对应的十进制数是( ). A. 5.625 B. 5.5 C. 6.125 D. 7.625 10. 若有变量int a, float x, y, 且a=7, x=2.5, y=4.7, 则表达式x+a%3*(int)(x+y)%2/4的值大约是( ). A. 2.500000 B. 2.750000 C. 3.500000 D. 0.000000 11. 有以下结构体说明和变量定义,如图所示,指针p、q、r分别指向一个链表中的三个续结点。 struct node { data next data next data next int data; struct node *next; ↑p ↑q ↑r } *p,*q,*r; 现要将q和r所指结点的先后位置交换,同时要保持链表的连续,以下程序段中错误的是( ). A. q->next = r->next; p-> next = r; r->next = q; B. p->next = r; q->next = r->next; r->next = q; C. q->next = r->next; r->next = q; p->next = r; D. r->next = q; q->next = r->next; p->next = r; 12. 同时查找2n 个数中的最大值和最小值,最少比较次数为( ). A. 3(n-2)/2 B. 4n-2 C. 3n-2 D. 2n-2 13. 设G是有6个结点的完全图,要得到一颗生成树,需要从G中删去( )条边.

单片机程序分析试题与答案

六、设计题 1.某单片机控制系统有8个发光二极管。试画出89C51与外设的连接图并编程使它们由右向左轮流点亮。 答:图(5分) 构思(3分) MOV A,#80H (1分) UP:MOV P1,A (1分) RR A (2分) SJMP UP (1分) 2.某控制系统有2个开关K1和K2,1个数码管,当K1按下时数码管加1,K2按下时数码管减1。试画出8051与外设的连接图并编程实现上述要求。 答:图(5分) 构思(3分) 程序(4分) ORG 0000H LJMP MAIN ORG 0003H LJMP AINT0 ORG 0013H LJMP BINT1 MAIN: MOV IE,#83H SETB IT0 SETB IT1 MOV R0,#00H MOV DPTR,#TAB UP: MOV A,R0 MOVC A,@A+DPTR MOV P1,A SJMP UP AINT0: INC R0 CJNE R0,#10,AINT01 MOV R0,#0 AINT01: RETI BINT1: DEC R0 CJNE R0,#0FFH,BINT11 MOV R0,#9 BINT11: RETI 1.已知在累加器A中存放一个BCD数(0~9),请编程实现一个查平方表的子程序。 1.SQR:1NC A MOVC A,@A+PC RET TAB:DB 0,1,4,9,16 DB 25,36,49,64,81 2.请使用位操作指令实现下列逻辑操作:BIT=(10H∨P1.0)∧(11H∨C Y) 2.ORL C,11H

MOV 12H,C MOV C,P1.0 ORL C,/10H ANL C,12H MOV BIT,C RET 3.已知变量X存于V AR单元,函数值Y存于FUNC单元,按下式编程求Y值。 Y= 10 0 1 x x x > - = 0,Y=1 MOV A,#0FFH ;x<0,Y=-1 SJMP RES POSI:MOV A,#01H RES:MOV FUNC,A RET 4.已知在R2中存放一个压缩的BCD码,请将它拆成二个BCD字节,结果存于SUM开始的 单元中(低位在前)。 4. MOV R0,#SUM MOV A,R2 ANL A,#OFH MOV @R0,A ;存低字节BCD MOV A,R2 ANL A,#0F0H SW AP A 1NC R0 MOV @R0,A ;存高字节BCD RET 5.将存于外部RAM 8000H开始的50H数据传送0010H的区域,请编程实现。 5. MOV DPTR,#8000H MOV R0,#10H MOV R2,#50H LOOP:MOVX A,@DPTR ;取数 MOVX @R0,A ;存数 1NC DPTR 1NC R0 DJNZ R2,LOOP RE T

C++程序设计试题及答案

C++程序设计试题 一、单项选择题(本大题共20小题,每小题1分,共20分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。 ++源程序文件扩展名为( A ) A..cpp B..h C..1ib D..obj 2.在C++中使用流进行输入输出,其中专用于从键盘进行输入的流是( B ) 3.包含自定义头文件的预处理指令是( D ) A.#define<> B.#include C.#define D.#include"" 4.用于标识十六进制前缀或后缀是( D ) A.元 B.后缀L或e C.前缀零 D.前缀0x 5.设存在整型变量int x,则下列句与其它三项含义不同的是( A ) * p=&x; & p=x; & p=x; &p=x; 6.在定义类成员时,为产生封装性,则需使用哪个关键字( D ) 7.设函数void swap(int&,int&)将交换两形参的值,如两整型变量int a=10;int b=15; 则执行swap(a,b)后,a、b值分别为( C ) ,10 ,15

,10 ,15 8.函数默认参数在函数原型中说明,默认参数必须放在参数序列的( C) A.前部 B.中部 C.后部 D.两端 9.设存在函数int min(int,int)返回两参数中较小值,若求15,26,47三者中最小值,下列表达式中错误的是( B ) m=min(min(15,26),min(15,47)); m=min(15,26,47); m=min(15,min(47,26)); m =min(min(47,26),16); 10.下列函数不能和函数void print(char)构成重载的是(C ) print(int); print(char,char); print(char); print(int,int); 11.在下列成对的表达式中,运算结果类型相同的一对是( D ) /2和/ /和7/2 0和/2 l2.内联函数的特点是( D ) A.减少代码量,加快访问速度 B.减少代码量,减缓访问速度 C.增加代码量,减缓访问速度 D.增加代码量,加快访问速度

C语言程序设计入门经典例题

1、加法练习程序:由用户通过键盘输入加数和被加数,程序显示加法式子,用户通过键盘作答后,程序给出正确与错误提示信息。要求:利用C的选择语句if条件语句或switch 开关语句,键盘输入数据前,程序会出被输入数据的信息提示。 #include void main(){ int a,b,c; printf("please put an addend:\n");scanf("%d",&a); printf("please put an augend:\n");scanf("%d",&b); printf("please answer the question:a+b=?");scanf("%d",&c); if(a+b==c) printf("very good!"); else printf("wrong! "); } 个人感觉这个程序最不好的地方是,不管回答正确还是回答错误,程都会立即结束,所以我用了do…while实现一个回答错误之后获得再次回答机会的循环,则程序修改如下: #include void main(){ int a,b,c; printf("请输入一个加数:\n");scanf("%d",&a); printf("请输入一个被加数:\n");scanf("%d",&b); do { printf("请回答:a+b=");scanf("%d",&c); if(a+b!=c) printf("请再想一想\n"); } while(a+b==c) printf("回答正确!"); } 2、判闰年程序:判断某一年是否闰年? 要求:程序首先提示用户从键盘输入4位数年份,程序能显示“XXXX年是闰年”或“XXXX年不闰年”的输出信息。 算法:year 是闰年,即year能被4整除但不能被100整除,或 year 能被 400 整除。其对应的C逻辑表达式为:(year % 4 = = 0 && year % 100 != 0) || (year % 400 = = 0) 或: (!(year % 4) && year % 100) || !(year % 400 ) 程序中可设置1个变量leap来代表是否闰年的信息,闰年:leap=1; 不闰年:leap=0。 #include void main() int year; printf("请输入4位数年份:");scanf("%d",&year); if(year%4==0&&year%100!=0||year%400==0)//闰年就是能被4整除但不能被100整除及能被400整除的

青少年中学生信息学奥赛试题精选33题(附带题解)

青少年中学生信息学奥赛试题精选33题(附带题解) 第1~10题为基础题,第11~20题为提高题,第21~33为综合题 基础题: 【1 Prime Frequency】 【问题描述】 给出一个仅包含字母和数字(0-9, A-Z 以及a-z)的字符串,请您计算频率(字符出现 的次数),并仅报告哪些字符的频率是素数。 输入: 输入的第一行给出一个整数T( 0

双素数(Twin Primes)是形式为(p, p+2),术语“双素数”由Paul St?ckel (1892-1919)给出,前几个双素数是(3, 5), (5, 7), (11, 13), (17, 19), (29, 31), (41, 43)。在本题中请你给出第S对双素数,其中S是输入中给出的整数。 输入: 输入小于10001行,每行给出一个整数S (1≤ S≤ 100000),表示双素数对的序列编号。输入以EOF结束。 输出: 对于输入的每一行,输出一行,给出第S对双素数。输出对的形式为(p1,空格p2),其中“空格”是空格字符(ASCII 32)。本题设定第100000对的素数小于20000000。 样例输入样例输出 1 2 3 4 (3, 5) (5, 7) (11, 13) (17, 19) 注: 试题来源:Regionals Warmup Contest 2002, Venue: Southeast University, Dhaka, Bangl adesh 在线测试:UVA 10394 提示 设双素数对序列为ans[]。其中ans[i]存储第i对双素数的较小素数(1≤i≤num)。ans[]的计算方法如下: 使用筛选法计算出[2,20000000]的素数筛u[]; 按递增顺序枚举该区间的每个整数i:若i和i+2为双素数对(u[i]&&u[i+2]),则双素数对序列增加一个元素(ans[++num]=i)。 在离线计算出ans[]的基础上,每输入一个编号s,则代表的双素数对为(ans[s],ans[s]+ 2)。 【3 Less Prime】 【问题描述】 设n为一个整数,100≤n≤10000,请找到素数x,x≤ n,使得n-p*x最大,其中p是整数,使得p*x≤n<(p+1)*x。 输入: 输入的第一行给出一个整数M,表示测试用例的个数。每个测试用例一行,给出一个 整数N,100≤N≤10000。 输出: 2

软件测试试题及答案分析

单选 1. 属于黑盒测试的方法?( C) A.基于基本路径 B.控制流 C.基于用户需求测试 D.逻辑覆盖 2.在Assert类中断言对象为NULL是_____。(D) A.assertEquals B.assertTrue C.fail D.assertNull 3.___________的目的是对最终软件系统进行全面的测试确保最终软件系统产品满足需求(A) A.系统测试B.集成测试 C.单元测试D.功能测试 4.有一组测试用例使得每一个被测试用例的分支覆盖至少被执行一次,它满足的覆盖标准___________。(B) A. 语句覆盖 B.判定覆盖 C.条件覆盖 D.路径覆盖 5.软件测试的目的是___________。(C) A.表明软件的正确性B.评价软件质量 C.尽可能发现软件中的错误D.判定软件是否合格 6.关于白盒测试与黑盒测试的最主要区别,正确的是___________。(A) A.白盒测试侧重于程序结构,黑盒测试侧重于功能 B.白盒测试可以使用测试工具,黑盒测试不能使用工具 C.白盒测试需要程序参与,黑盒测试不需要 D.黑盒测试比白盒测试应用更广泛 7.软件测试类型按开发阶段划分___________。(B) A.需要测试﹑单元测试﹑集成测试 B.单元测试﹑集成测试﹑确认测试﹑系统测试﹑验收测试 C.单元测试﹑集成测试﹑确认测试 D.调试﹑单元测试﹑功能测试 8.在Junit中,testXXX()方法就是一个测试用例,测试方法是______。(B) A.private void testXXX() B.public void testXXX() C.public float testXXX() D.public int testXXX() 9.软件测试是软件质量保证的重要手段,下述哪种测试是软件测试的最基础环节?(A)A.单元测试B.集成测试 C.目的测试D.确认测试 10.增量式集成测试有3种方式:自顶向下增量测试方法,和混合增量测试方式。(D ) A.自中向下增量测试方法B.多次性测试 C.维护D.自底向上增量测试方法 1)以下不属于软件测试的原则有(D )。 A.程序最好别让由编写该程序的程序员自己来测试

完整word版,VB程序设计例题12例

索引 一、在窗体上画一个文本框,其名称为Text1,Text属性为空白。再画一个命令按钮,其名称为C1,Visible属性为False。编写适当的事件过程。程序运行后,如果在文本框中输入字符,则命令按钮出现。 二、计算圆的周长和面积:在窗体中添加一个文本框(Text1)和一个对应的标签(Label1),再添加两个命令按钮(Command1和Command2)和一个图片框(Picture1)。程序运行时,当单击Command1按钮后,计算圆的周长;当单击Command2按钮后,计算圆的面积;计算结果输出在图片框中。(要求在未输入半径前两个按钮呈灰色不可用。) 三、在窗体上添加三个文本框和对应的三个标签,标签的标题分别是“个位”、“十位”、“百位”。程序运行时,当单击窗体后,随机产生一个【100,999】区间内的整数,将它的个位、十位、百位数字分别显示在对应的文本框中。 四、设计一个计算程序:在窗体上添加四个文本框和四个对应的标签,标签的标题分别是“语文”、“数学”、“外语”、“平均成绩”,三个命令按钮,标题分别为“清除”、“计算”、“退出”。程序运行后,用户按“清除”按钮,则清除文本框中显示的内容,按“计算”按钮,则计算三科平均成绩,将计算结果显示在第四个文本框中(计算结果保留小数点后一位)。单击退出按钮则程序退出。 五、某税务部门征收所得税,规定如下:(1)收入200元以内,免征。(2)收入在200~400元,超过200元的部分纳税3%。(3)收入超过400元的部分,纳税4%。(4)当收入达5000元或超过时,将4%税金改为5%。编程序实现上述操作。 六、给定三角形的三条边的边长,计算三角形的面积。编写程序,首选判断给出的三条边能否构成三角形,如可以构成,则计算并输出该三角形的面积,否则要求重新输入。当输入-1时结束程序。 七、编程求100以内的全部素数。 八、编程打印钻石图案。 九、输出杨辉三角形。 十、有一个数组,包含了10个不同的随机整数(20~90),要求计算出它们的平均值,并输出这个数组中最接近于平均值的数。 十一、在一个窗体上建有包含三个命令按钮的控件数组和一个文体框。编程实现当按下标题不同的命令按钮时,使文体框中文字的字体发生相应的变化。 十二、编程求1000以内的完全数。所谓完全数是指这样的自然数:它的各个约数(不包括该数本身)。如28=1+2+4+7+14就是一个完全数。

大学经典C语言编程试题

大学经典C语言编程试 题

1.输入两个正整数,m和n,求其最大公约数和最小公倍数。 #include<> void main() { int hcf(int,int); /*函数声明*/ int lcd(int,int,int); /*函数声明*/ int u,v,h,l; printf("Please input two numbers:\n"); scanf("%d,%d",&u,&v); h=hcf(u,v); l=lcd(u,v,h); } int hcf(int u,int v) { int t,r; if(v>u) {t=u;u=v;v=t;} while((r=u%v)!=0) {u=v;v=r;} return(v); } int lcd(int u,int v,int h) { return(u*v/h); } 2.输入一行字符,分别统计出其中字母、空格、数字和其他字符的个数。 #include<> int letter,digit,space,others; void main() { void count(char[]); char text[80]; printf("Please input string:\n"); gets(text); printf("string:\n"); puts(text); letter=0; digit=0; space=0; others=0; count(text); printf("letter:%d,digit:%d,space:%d,others:%d\n",letter,digit,space,others); } void count(char str[]) {

高中信息学奥林匹克竞赛各种问题求解试题及参考答案集锦

高中信息学竞赛各种问题求解试题及 答案 第1题(5分),将n个不同颜色的球放人k个无标号的盒子中( n>=k,且盒子不允许为空)的方案数 为S(n,k),例如:n=4,k=3时,S(n,k)=6。当n=6,k=3时,S(n,k)=________。 答案:0 k < n S(n,k)= 1 k = 1 S(n-1,k-1)+k*S(n-1,k) n >= k >= 2 第2题(5分),有5本不同的数学书分给5个男同学,有4本不同的英语书分给4个女同学,将全部书 收回来后再从新发给他们,与原方案都不相同的方案有________种。 答案: 5!*4!+D(5)*D(4)=1140480 其中:D(n)=(n-1)*(D(n-1)+D(n-2)) (n > 2) D(1)=0 D(2)=1 第3题(6分),把三角形各边分成n等分,过每一分点分别做各边的平行线,得到一些由三角形的边 和这些平行线所组成的平行四边形。n为已知整数,能组成_______个平行四边形。 答案: 3*C(n+2,4) 第4题(6分),由a,b,c3个不同的数字组成一个N 位数,要求不出现两个a相邻,也不出现两个b 相邻,这样的N位数的个数为AN,用AN-1和AN-2表示AN的关系式为:AN=_______________。 答案: AN= 2*AN-1+AN-2 第5题(6分),在m*n的棋盘上,每个方格(单位正方形,即边长为1的正方形)的顶点称为格点。以格点 为顶点的多边形称为格点多边形。若设格点凸N边形面积的最小值为gn,格点凸N边形内部(非顶点的)格点的个数的最小值为fn,则gn和fn的关系式为: gn=___________。 答案: Gn= fn+N/2-1 ( N >= 3 ) 第6题(4分),编号为1到13的纸牌顺时针排成一 圈,有人从编号为1的牌从数字1开始顺时针数下去, 1、2、3、…、20、21、…,一圈又一圈。问:当数到数字N 时,所在纸牌的编号为多少? 答案: 1+(N-1) mod 13 第7题(8分),有位小同学喜欢在方阵中填数字,规则 是按下图示例从右上角开始,按斜线填数字, 碰到边界就重新。显然,数字1在坐标(1,5)位置,数字 25在坐标(5,1)位置。后来这位小朋友想知道, 对于N阶的方阵,随机取一个位置(x,y),并规定x≤y,问 这个位置上应该填的数字是多少?5阶方阵的 示例图如下: 11 7 4 2 1 16 12 8 5 3 20 17 13 9 6 23 21 18 14 10 25 24 22 19 15 答案: (N-y+x)*(N-y+x-1)/2+x 第8题(5分),设有质量为1、3、9、27、81、…3n g... 的砝码各一枚,如果砝码允许放在天平的两边, 则用它们来称物体的质量,最多可称出1g到3n+3n/2g之间 的所有质量,如n=4时,可称出18到121g之间的 所有质量;当物体质量为M=14时,有14+9+3+1=27,即天 平一端放M=14g的物体和9g、3g、1g的砝码,另一 端放27g的砝码,即可称出M的质量。当M=518g时,请 你写出称出该物体的质量的方法,并用上述所示的 等式来表示。 答案: 518+243+3+1= 729+27+9 第9题(7分),在圆周上有N个点(N>=6),在任意两个 点之间连一条弦,假设任何3条弦在圆的内部 都没有公共点,问这些弦彼此相交能在圆内构成多少个三 角形(只要求写出三角形总数的表示式而无需化 简)? 提示:下图是N=6的情况,图中所示的4个三角形从 某种意义上说具有一定的代表性。 答案: C(N,3)+4*C(N,4)+5*C(N,5)+6*C(N,6) 第10题(6分),用1个或多个互不相同的正整数之和 表示1~511之间的所有整数 ①至少要多少个不同的正整数_________________; ②这些正整数是_______________ 答案: ①9 ②1,2,4,6,16,32,64,128,256 第11题(7分),在有m行n列格子的棋盘内,一枚棋 子从棋盘的左上角格子沿上、下、左、右方向行走, 最后走到棋盘的右下角格子。该棋子走过的格子数为奇数 的充分必要条件是________________ 答案:m+n为偶数 完善程序试题及其答案 第1题(14分)以下程序是将一组整数按从小到大的顺 序排列。排序的方法是将长度为n的数a分为两个长度分 别为(n div 2)与(n-n div 2)的子数组a1,a2。然后递归调用排 序过程,将a1,a2分别排序,最后将a1,a2归并成数组 a。例如a=(3,1,2,4),那么a1=(3,1),a2=(2,4)。调用 排序过程将a1,a2排序,得到a1=(1,3),a2=(2,4),然 后进行合并排序。 从键盘输入数的长度n以及n个整数,存在数组a中,调 用子过程sort进行排序,最后输 出排序结果。 program wsh; const maxn=100;. 各种问题 1

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