数据结构上机题库

数据结构上机题库
数据结构上机题库

1.编写程序,从键盘输入两个整数a和b,计算出a除以b的商和余数。输出时,商数要求保留2位小数,并对第三位进行四舍五入。

(不要求判断b是否0)

方法一:

#include

void main()

{ int a,b,n;

float m;

printf("please input (a,b):\n");

scanf("%d,%d",&a,&b);

m=(float)a/b;

n=a%b;

printf("a和b的商为%.2f,a和b的余数为%d\n",m,n);

}

方法二:

#include

void main()

{ int a, b;

printf("请输入两个整数\n");

scanf("%d,%d", &a, &b);

printf("这两个数的商为:%.2f\n", (float)a/b);

printf("这两个数的余数为:%d\n", a%b);

} 2.输入3个整数,按由小到大的顺序输出。

#include

void main()

{ int x,y,z,t;

printf("Please input three numbers:");

scanf("%d,%d,%d",&x,&y,&z);

if(x>y) {t=x;x=y;y=t;}

if(x>z) {t=x;x=z;z=t;}

if(y>z) {t=y;y=z;z=t;}

printf("%d,%d,%d",x,y,z);

}

3.编写程序,从键盘输入圆的半径r,圆柱的高h,分别计算并输出圆周长,圆面积,圆柱的体积,取小数点后2位数字。

#include

void main()

{ float r,h;

float cl,cs,cvz;

float pi = 3.1415926;

printf("Input r:");

scanf("%f",&r);

printf("Input h:");

scanf("%f",&h);

cl = 2 * pi * r;

cs = pi * r * r;

cvz = cs * h;

printf("cl = %.2f,cs = %.2f,cvz = %.2f\n",cl,cs,cvz); }

4.编写程序判断输入的一个正整数是否既是5又是7的倍数。

若是,则输出yes;若否则输出no。

#include

void main()

{ int x;

scanf("%d",&x);

if(x % 5 == 0 && x % 7 == 0)

printf("Yes!\n");

else

printf("No!\n");

}

5.编写程序,输入某个年份,判断是否是闰年。

#include

main()

{ int year, leap;

scanf("%d",&year);

{if ((year%4==0&&year%100!=0) || (year%400==0))

leap=1;

else leap=0;

}

{if (leap)

printf("%d is", year);

else

printf("%d is not", year);

}

printf(" a leap year.\n");

}

6.从键盘输入系数a,b,c,判断方程ax^2+bx+c=0是否有实数解,如果有实数解则输出其解,如果没有则输出无解。

#include

#include

void main()

{ float a,b,c,p,m,x1,x2;

printf("Please input three numbers:");

scanf("%f,%f,%f",&a,&b,&c);

p=b*b-4*a*c;

if (p<0)

printf("方程无实数解");

else

{ printf("方程有实数解\n");

if (p>0)

{m=sqrt(p);

x1=(-b+m)/(2*a);

x2=(-b-m)/(2*a);}

else

{x1=-b/(2*a);

x2=-b/(2*a);}

printf("x1=%f,x2=%f",x1,x2);

}

}

7.求出最小的正整数n,使得n满足除以3余2,除以5余3,除以7余4。#include

void main()

{ int i=1;

while(1)

{ if((i%3==2) && (i%5==3) && (i%7==4))

break;

i++; }

printf("满足条件的最小正整数为:%d\n", i);

}

8. 用switch语句编写程序实现功能:对于给定的一个百分制成绩,

改用相应的五级分成绩表示。设:

100≥score≥90分——A 89≥score≥80分——B

79≥score≥70分——C

69≥score≥60分——D

60分以下为E。

根据输入的分数输出对应的分数等级。

#include

void main()

{ int score;

printf("请输入学生分数:\n");

scanf("%d",&score);

switch(score/10)

{ case 10:

case 9: printf("A\n"); break;

case 8: printf("B\n"); break;

case 7: printf("C\n"); break;

case 6: printf("D\n"); break;

case 5:

case 4:

case 3:

case 2:

case 1:

case 0: printf("E\n");break;

default: printf("Data Error!\n");break;

}

}

9.求x的y次方,即x^y。x为double,y为int。

#include

double power(double x,int n)

{ double result=1;

int i;

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

{result*=x;}

return result;

}

void main()

{ double x;

int y;

printf("请输入两个数据:\n");

scanf("%lf^%d", &x, &y);

printf("%lf的%d次方等于%lf.\n", x,y, power(x,y)); }

10. 用循环和数组求出Fibonacci数列的前20项,并输出。#include

void main()

{ int i,f[20]={1,1};

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

f[i]=f[i-1]+f[i-2];

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

{

if (i%5==0)

printf("\n");

printf("%10d",f[i]);

}

}

11.有一维数组定义:

int a[10]={12,3,5,2,80,56,39,47,11,67};

从键盘上输入一个数字x,在a中做查询查找是否有和x相等的数值,如果有则将下标输出,如果未找到则输出no。"

方法一:

#include

void main()

{ int a[10]={12,3,5,2,80,56,39,47,11,67};

int i,x,s;

printf("Please input x:");

scanf("%d",&x);

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

{ if(x==a[i])

{ s=i;

printf("该数组元素下标为%d\n",s);

break;

}

}

if (x!=a[i])

printf("no.\n");

}

方法二:

#include

void main()

{ int a[10] = {12,3,5,2,80,56,39,47,11,67};

int x, i, mark=0;

printf("请输入一个整数:\n");

scanf("%d",&x);

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

{ if(a[i] == x)

{ mark=1;

break;

}

}

if(mark==1)

printf("该数组元素下标为%d\n", i);

else

printf("no\n");

}

12.已知计算三角形面积的公式为:area=sqrt(s(s-a)(s-b)(s-c)) 其中s=(a+b+c)/2,这里a,b,c分别为三角形的三条边,要求在能够构成三角形的前提下求出该三角形的面积。#include

#include

main()

{float a,b,c,s,area;

printf("please input (a,b,c):");

scanf("%f,%f,%f",a,b,c);

if ((a+b)>c && (a+c)>b && (b+c)>a)

{ s=(a+b+c)/2;

area=sqrt(s*(s-a)*(s-b)*(s-c));

printf("%4.1f,%4.1f,%4.1f, area is %4.2f\n",a,b,c,area);

}

else printf("Data Error\n");

}

13. 请输出如下图形,行数n由键盘输入。

*

* * *

* * * * *

* * * * * * *

* * * * * * * * *

* * * * * * * * * * *

#include

void main()

{ int m, n;

printf("please input n:");

scanf("%d",&n);

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

{ for(m=1; m<=2*n-1; m++)

printf("* ");

printf("\n");

}

}

14. 打印出所有的“水仙花数”,所谓的“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。如370。

#include

void main()

{ int i;

int a,b,c;

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

{ a = i / 100;

b = i / 10 % 10;

c = i % 10;

if(a*a*a + b*b*b + c*c*c == i)

printf("%6d",i);

}

printf("\n");

} 15. 输入两个正整数m和n,求它们的最大公约数和最小公倍数。

#include

int hcf(int u, int v)

{ int r;

while(1)

{ r=u%v;

if(r==0)

break;

else

{ u=v;

v=r;

}

}

return v;

}

void main()

{ int m,n,h,l;

printf("请输入两个整数:\n");

scanf("%d,%d",&m,&n);

h = hcf(m,n);

l = (m*n)/h;

printf("%d,%d的最大公约数是%d, 最小公倍数是%d\n",m,n,h,l); }

16. 求出100以内所有的素数。

#include

void main()

{ int i, n;

for(n=1; n<=100; n++)

{ for(i=2; i<=n-1; i++)

if(n%i==0) break;

if(i>=n)

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

}

}

17.若有说明:int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};现要将矩阵转置后仍然存放到数组a中。试编程。

# include

void convert (int a[3][3])

{ int i,j,t;

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

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

{ t=a[i][j];

a[i][j]=a[j][i];

a[j][i]=t;

}

} void main ()

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

int i,j;

convert (a);

printf("convert a:\n");

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

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

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

printf("\n");

}

}

18.求1!+2!+3!+……+10!的结果并输出。

#include

void main()

{ int i, t=1, result=0;

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

{ t = t * i;

result = result + t;

}

printf("最终结果为%d\n", result);

}

19.用指针实现对整型数组(长度为10)的值逆序输出

#include

void main()

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

int *p=array, i;

for(i=9; i>=0; i--)

printf("%d\n",*(p+i));

}

20.有一个分数序列2/1,3/2,5/3,8/5,……,求出这个数列的前20项之和。

#include

float fib1(int i)

{ if(i==1) return 2;

else if (i==2) return 3;

else return fib1(i-1)+fib1(i-2);

}

float fib2(int i)

{ if (i==1) return 1;

else if (i==2) return 2;

else return fib2(i-1)+fib2(i-2);

}

void main() { int i;

double result=0;

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

result+=fib1(i)/fib2(i);

printf("result is %lf\n",result); }

21.计算并输出下列多项式的值(n≤10)

sn=1+1/1!+1/2!+1/3!+1/4!+…+1/n!

#include

void main ()

{ int m=1,n,i;

double sn=1;

printf("Please input n:\n");

scanf("%d",&n);

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

{ m*=i;

sn+=1.0/m;

}

printf("sn=%lf\n",sn);

}

22.已知char str1[20]="student",str2[20]="teacher",要求将str1和str2中的字符串互换。

#include

#include

void main()

{ char str1[20] = "student";

char str2[20] = "teacher";

char str_temp[20];

printf("交换前两个字符串分别为%s, %s\n", str1, str2);

strcpy(str_temp, str1);

strcpy(str1, str2);

strcpy(str2, str_temp);

printf("交换后两个字符串分别为%s, %s\n", str1, str2);

}

23.编写程序实现功能:输入整数a和b,若a^2+b^2>100,

则输出 a^2+b^2之和的百位以上(含百位)的数字,

否则直接输出的a^2+b^2和。

#include

void main()

{ int a,b,r,x;

scanf("%d,%d",&a,&b);

r = a*a+ b*b;

if(r > 100)

{ x = r / 100;

printf("%d百位以上的数字是%d\n",r,x);

}

else

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

}

24. 用函数的形式求出一个2×3的整型数组中的最大值,

该二维数组的初值由键盘输入。

#include

int array_max(int a[2][3])

{ int i, j, t=a[0][0];

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

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

{ if(a[i][j]>t)

t=a[i][j];

}

}

return t;

}

void main()

{ int array[2][3];

int i, j;

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

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

{ scanf("%d",&array[i][j]);

}

}

printf("该数组中的最大值为%d\n",array_max(array));

}

25.编写一个函数change(char str[]),要求实现str中字abcde的互换并仍然保存在str中。将“abcde”换成“edcba”。

# include

void change (char str[])

{ char t;

int i,j;

for (j=0;;j++)

{ if (str[j]=='\0')

break;

}

for (i=0,j=4;i

{ t=str[i];

str[i]=str[j];

str[j]=t;

}

}

void main()

{ char str[]="abcde";

change (str);

printf("互换后的结果是:%s\n",str);

}

26.用数组实现对10个整数从大到小排序。数组数据从键盘输入。#include

void sort(int array[], int n)

{ int i, j, t;

for(i=0;i

{for(j=i+1;j

{ if(array[j]>array[i])

{ t=array[i];

array[i]=array[j];

array[j]=t;

}

}

}

}

void main()

{ int a[10], i;

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

scanf("%d", &a[i]);

sort(a, 10);

printf("从大到小排列:\n");

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

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

printf("\n");

}

27. 按下面的规律译成密码:英文字母变为其后的第5个字母,如A→F a→f

B→G b→g

C→H c→h

……

X→C x→c

Y→D y→d

Z→E z→e

输入一个字符,并输出相应的密码信息。

#include

void main()

{ char ch;

do

{ scanf("%c",&ch);

if ((ch>='a'&&ch<='z') || (ch>='A'&&ch<='Z'))

{ if((ch>='a'&&ch<='u') || (ch>='A'&&ch<='U'))

ch=ch+5;

else

ch=ch-21;

}

printf("%c\n",ch);

}while(ch!='\n');

}

28. 用递归函数求n!的值(n≤10)。

#include

long fact (long n)

{ if(n<0) return -1;

else

{ if (n==0) //递归终止条件

return 1;

else

return (n*fac(n-1)); //递归调用

}

}

void main()

{ int n;

long result;

printf("Input n:");

scanf("%d",&n);

result=fact(n);

if (result==-1)

printf("n<0, data error\n");

else

printf("%d!=%ld\n",n,result);

}

29.分别输入3个学生的5门课程的成绩,输出每个人的总分和平均分。

#include

void main()

{ double score[3][5], sum, ave;

int n, i;

for (n=0; n<3; n++)

{ printf("请输入第%d个学生的五科成绩:\n", n+1);

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

scanf("%lf",&score[n][i]);

}

for (n=0; n<3; n++)

{ sum = 0;

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

{ sum = sum + score[n][i];

}

ave=sum/5.0;

printf("第%d个学生的总分和平均分为%5.2f,%5.2f\n",n+1,sum,ave);

}

}

30.请编写一个函数fun(char ch[]),用来删除字符串中的所有空格。

在主函数中编写字符输入语句,调用fun实现上述功能。

#include

#include

void fun(char ch[])

{ int i, j=0;

for(i=0; ch[i]!='\0'; i++)

{ if(ch[i]!=' ')

{ ch[j]=ch[i];

j++;

}

}

ch[j]='\0';

}

void main()

{ char string[50];

printf("请输入一个字符串\n");

gets(string);

fun(string);

printf("删除空格符后,字符串为%s\n", string);

}

31.根据以下公式计算s,

n≤20,s=1+1/(1+2)+1/(1+2+3)+…….+1/(1+2+3+4+……+n)

#include

int sum(int i)

{ int result=0,j;

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

result+=j;

return result;

}

void main()

{ double s=0;

int n=20,i;

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

s+=1.0/sum(i);

printf("s=%lf",s);

}

32.

将两位数的正整数a、b合并成一个整数放在c中。

合并的方式是:将a数的十位和个位数依次放在c数的百位和个位上,b数的十位和个位数依次放在c数的十位和千位上。

#include

void main()

{ int a, b, c;

int a1, a2, b1, b2;

printf("请输入两位数的正整数a和b:\n");

scanf("%d,%d", &a, &b);

a1=a/10;

a2=a%10;

b1=b/10;

b2=b%10;

c = b2*1000+a1*100+b1*10+a2;

printf("最终结果为%d\n", c);

}

33.编写程序,从键盘输入一字符串str1(长度不超过50),

将字符串中的第m个字符开始的全部字符复制成另一个字符串str2,并将新字符串输出,m从键盘输入。

#include

void main()

{ int m, i, j;

char str1[50], str2[50];

printf("请输入一个字符串,字符个数小于50:\n");

gets(str1);

printf("请输入一个小于50的正整数:\n");

scanf("%d", &m);

for(i=m-1,j=0; i<50; i++,j++)

{ str2[j] = str1[i];

if(str1[i]=='\0')

break;

}

puts(str2);

}

34.每个苹果0.8元,第一天买2个苹果;

从第二天开始,每天买前一天的2倍,直至购买的苹果的总数

达到不超过100的最大值,编写程序求每天平均花多少钱

#include

void main()

{ float price, sum ; //price是单价,sum是总数float count,aver; //count是每天卖的苹果数,aver是平均价格int days ; //day是天数

price = 0.8;

count = 2;

sum = 0 ;

days = 0;

do

{ sum = sum + count;

count = count * 2;/*第一天的数量是2个,从此后每天的是前一天的2倍*/

days ++;

}while(count <= 100);

aver = sum * price / days;

printf("sum is %.0f\n",sum);

printf("day is %d\n",days);

printf("count is %.0f\n",count);

printf("aver price is %.2f\n",aver);

}

35.利用二维数组输出杨辉三角形的前10行。如下:

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

……

#include

#define N 10

void main()

{ int a[N][N] = {1};

int i,j;

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

{ a[i][0] = 1;

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

{a[i][j] = a[i-1][j-1] + a[i-1][j]; }

}

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

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

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

printf("\n");

}

}

36.建立函数fan(int a,int b,int c),其功能是:判断输入的3个整型值能否组成三角形,组成的是等边三角形,还是等腰三角形。结果由fun 函数输出,不返回值。试编程。

#include

void fan(int a, int b, int c)

{ if((a+b>c) && (a+c>b) && (b+c>a))

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

printf("构成等边三角形\n");

else if(a==b || b==c || a==c)

printf("构成等腰三角形\n");

else

printf("构成普通三角形\n");

}

else

printf("无法构成三角形\n");

}

void main()

{ int a,b,c;

printf("请输入三角形的三条边\n");

scanf("%d,%d,%d",&a,&b,&c);

fan(a,b,c);

}

37.猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,就只剩下一个桃子了。求第一天一共摘多少桃子。试编写程序。

方法一:

#include

void main()

{ int s;

int i;

for(i = 10 , s = 1 ; i >= 1 ; i--)

{s = 2 * (s + 1);}

printf("The sum is %d\n",s);

}

方法二:递归解法

int fun(int n)

{ if(n>10)

return 0;

else

{ if(n==10)

return 1;

else

return 2 * (fun(n+1)+1);

}

}

38. 编一程序,将两个字符串连接起来,不要用strcat函数。#include

#include

void string_link(char str1[], char str2[])

{ int i = strlen(str1), j=0;

while(str2[j]!='\0')

{ str1[i] = str2[j];

i++;

j++;

}

str1[i] = '\0';

}

void main()

{ char str1[50], str2[50];

printf("请输入第一个字符串:\n");

gets(str1);

printf("请输入第二个字符串:\n");

gets(str2);

string_link(str1, str2);

printf("连接后字符串1为:%s\n", str1);

}

39.根据以下公式求p的值。M与n为两个正整数,且要求m>n。p=m!/n!(m-n)!

#include

int Fac(int n)

{ int i, result=1;

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

result *= i;

return result;

}

void main()

{ int m, n, p;

printf("请输入m和n的值\n");

scanf("%d,%d", &m, &n);

if(n<=0 || m<=0 || m

{ printf("输入非法数据,结束!");

return;

}

p = Fac(m) / (Fac(n)*Fac(m-n));

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

}

40.试编程序,找出1——99之间的全部同构数。

同构数是这样一组数:它出现在平方数的右边。

例如:5是25右边的数,25是625右边的数,5和25都是同构数。

#include

void main()

{ int i,n;

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

{ n = i * i;

if(n % 10 == i || n % 100 == i)

printf("%5d <---> %5d\n",i,n);

}

printf("\n");

}

数据结构课程设计题目及要求

实验一~实验四任选一题;实验五~实验九任选一题。 实验一运动会分数统计 一、实验目的: (1)熟练掌握线性表的两种存储方式 (2)掌握链表的操作和应用。 (3)掌握指针、结构体的应用 (4)按照不同的学校,不同项目和不同的名次要求,产生各学校的成绩单、团体总分报表。 二、实验内容: 【问题描述】 参加运动会的n个学校编号为1~n。比赛分成m个男子项目和w个女子项目,项目编号分别为1~m和m+1~m+w。由于各项目参加人数差别较大,有些项目取前五名,得分顺序为7,5,3,2,1;还有些项目只取前三名,得分顺序为5,3,2。写一个统计程序产生各种成绩单和得分报表。 【基本要求】 产生各学校的成绩单,内容包括各校所取得的每项成绩的项目号、名次(成绩)、姓名和得分;产生团体总分报表,内容包括校号、男子团体总分、女子团体总分和团体总分。 【测试数据】 对于n=4,m=3,w=2,编号为奇数的项目取前五名,编号为偶数的项目取前三名,设计一组实例数据。 【实现提示】 可以假设m≤20,m≤30,w≤20,姓名长度不超过20个字符。每个项目结束时,将其编号、类型符(区分取前五名还是前三名)输入,并按名次顺序输入运动员姓名、校名(和成绩)。 【选作内容】 允许用户指定某些项目可采取其他名次取法。

实验二停车场管理 一、实验目的: (1)熟练掌握栈顺存和链存两种存储方式。 (2)掌握栈的基本操作及应用。 (3)以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。 二、实验内容: 【问题描述】 设停车场是一个可停放n辆汽车的长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车信放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场院,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。 【基本要求】 以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码以及到达或离去的时刻。对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。栈以顺序结构实现,队列以链表结构实现。 【测试数据】 设n=2,输入数据为:(A,1,5),(A,1,15),(A,3,20),(A,4,25),(A,5,30),(D,2,35),(D,4,40),(E,0,0)。其中:A表示到达(Arrival);D表示离去(Departure);E表示输入结束(End)。 【实现提示】 需另设一个栈,临时停放为给要离去的汽车让路而从停车场退出来的汽车,也用顺序存储结构实现。输入数据按到达或离去的时刻有序。栈中每个元素表示一辆汽车,包含两个数据项:汽车的牌照号码和进入停车场的时刻。 【选作内容】 (1)两个栈共享空间,思考应开辟数组的空间是多少? (2)汽车可有不同种类,则他们的占地面积不同收费标准也不同,如1辆客车和1.5辆小汽车的占地面积相同,1辆十轮卡车占地面积相当于3辆小汽车的占地面积。(3)汽车可以直接从便道开走,此时排在它前面的汽车要先开走让路,然后再依次排到队尾。 (4)停放在便道上的汽车也收费,收费标准比停放在停车场的车低,请思考如何修改结构以满足这种要求。

全国计算机三级数据库技术上机试题100道

1.【考点分析】本题考查对4位整数的排序。考查的知识点主要包括:数组元素的排序算法,if判断语句和逻辑表达式,以及求余算术运算。 【解题思路】此题属于4位数排序问题。本题需主要解决3个问题:问题1如何取4位数的后3位进行比较;问题2如何按照题目要求的条件(按照每个数的后3位的大小进行降序排列,如果后3位相等,则按照原始4位数的大小进行升序排列)排序;问题3如何将排完序的前10个数存到数组bb中去。 本题的解题思路为:使用双循环对数组按条件进行排序,然后将排完序的前10个数存到数组bb中。对于问题1可以通过算术运算的取余运算实现(aa[i]%1000);问题2通过包含if判断语句的起泡排序法就可以实现。 【参考答案】 void jsSort() { int i,j; /*定义循环控制变量*/ int temp; /*定义数据交换时的暂存变量*/ for(i=0;i<199;i++) /*用选择法对数组进行排序*/ for(j=i+1;j<200;j++) { if(aa[i]%1000aa[j]) /*则要按原4位数的值进行升序排序*/ { temp=aa[i]; aa[i]=aa[j]; aa[j]=temp; } } for(i=0;i<10;i++) /*将排序后的前10个数存入数组b中*/ bb[i]=aa[i]; } 【易错提示】取4位数后三位的算法,if判断语句中逻辑表达式的比较运算符。 2.【考点分析】本题主要考查的知识点包括:C语言循环结构,if判断语句和逻辑表达式,以及分解多位整数的算术运算。 【解题思路】分析题干,本题除给出条件"SIX+SIX+SIX = NINE+NINE"之外,还可得出2个隐含的条件:条件1:SIX和NINE分别是3位和4位的正整数;条件2:SIX的十位数字等于NINE的百位数字,NINE的千位数字和十位数字相等。 本题解题思路:通过嵌套的循环结构可以遍历到所有的3位和4位数,对于每一个3位数及4位数的组合进行题设条件(SIX+SIX+SIX = NINE+NINE)的判断,满足条件的对其分解得到各数位的数字,再进一步判断各位数字是否满足本题隐含的条件(条件1及条件2),如果满足则个数加1,并将该3位数及4位数添加到和值中。 【参考答案】 void countValue() { int i,j; int s2; int n2,n3,n4; for(i=100;i<1000;i++)

2017年数据结构期末考试题及答案A

2017年数据结构期末考试题及答案 一、选择题(共计50分,每题2分,共25题) 1 ?在数据结构中,从逻辑上可以把数据结构分为 C 。 A. 动态结构和静态结构B?紧凑结构和非紧凑结构 C.线性结构和非线性结构 D .内部结构和外部结构 2?数据结构在计算机内存中的表示是指 A ° A. 数据的存储结构 B.数据结构 C.数据的逻辑结构 D .数据元 素之间的关系 3.在数据结构中,与所使用的计算机无关的是数据的 A 结构。 A. 逻辑B?存储 C.逻辑和存储 D.物理 4 .在存储数据时,通常不仅要存储各数据元素的值,而且还要存储 C ° A.数据的处理方法B?数据元素的类型 C.数据元素之间的关系 D.数据的存储方法 5. 在决定选取何种存储结构时,一般不考虑 A ° A.各结点的值如何B?结点个数的多少 C?对数据有哪些运算 D.所用的编程语言实现这种结构是否方便。 6. 以下说法正确的是D ° A. 数据项是数据的基本单位 B. 数据元素是数据的最小单位 C. 数据结构是带结构的数据项的集合 D. —些表面上很不相同的数据可以有相同的逻辑结构 7. 在以下的叙述中,正确的是B ° A. 线性表的顺序存储结构优于链表存储结构 B. 二维数组是其数据元素为线性表的线性表 C?栈的操作方式是先进先出 D.队列的操作方式是先进后出

8. 通常要求同一逻辑结构中的所有数据元素具有相同的特性,这意味着 A. 数据元素具有同一特点 B. 不仅数据元素所包含的数据项的个数要相同,而且对应的数据项的类型要一致 C. 每个数据元素都一样 D. 数据元素所包含的数据项的个数要相等 9 ?链表不具备的特点是 A 。 A.可随机访问任一结点 B.插入删除不需要移动元素 C?不必事先估计存储空间 D.所需空间与其长度成正比 10. 若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一 个结点,则采用 D 存储方式最节省运算时间。 A.单链表B ?给出表头指针的单循环链表 C.双链表D ?带头结点 的双循环链表 11. 需要分配较大空间,插入和删除不需要移动元素的线性表,其存储结构是 B 。 A.单链表B .静态链表 C.线性链表 D .顺序存储结构 12 .非空的循环单链表head的尾结点(由p所指向)满足C 。 A. p—>next 一NULL B. p — NULL C. p—>next == head D. p = = head 13 .在循环双链表的p所指的结点之前插入s所指结点的操作是 D 。 A .p—> prior-> prior=s B .p—> prior-> n ext=s C.s —> prior—> n ext = s D.s —> prior—> prior = s 14 .栈和队列的共同点是C 。 A.都是先进后出 B .都是先进先出 C.只允许在端点处插入和删除元素 D .没有共同点

国家二级ACCESS机试选择题(数据结构与算法)模拟试卷3

国家二级ACCESS机试选择题(数据结构与算法)模拟试卷3 (总分:60.00,做题时间:90分钟) 一、选择题(总题数:30,分数:60.00) 1.在最坏情况下 (分数:2.00) A.快速排序的时间复杂度比冒泡排序的时间复杂度要小 B.快速排序的时间复杂度比希尔排序的时间复杂度要小 C.希尔排序的时间复杂度比直接插入排序的时间复杂度要小√ D.快速排序的时间复杂度与希尔排序的时间复杂度是一样的 解析:解析:按平均时间将排序分为四类:①平方阶(O(n 2 ))排序:各类简单排序,例如直接插入、直接选择和冒泡排序;②线性对数阶(O(n。log2n))排序:如快速排序、堆排序和归并排序;③O(n1+§))排序:§是介于0和1之间的常数。希尔排序便是一种;④线性阶(O(n))排序:本程序中的基数排序,此外还有桶、箱排序。 2.在深度为7的满二叉树中,度为2的结点个数为 (分数:2.00) A.64 B.63 √ C.32 D.31 解析:解析:因为在任意的二叉树中,度为O的结点(即叶子结点)总比度为2的结点的个数多1个,而度为0的结点数n 0 =2 m-1 (其中m为二叉树的深度)。本题的度为0的结点个数n 0 =2 7-1 =2 6 =64。因此,度为2的结点数n 2 =n 0 -1=63。所以选项B正确 3.设栈的顺序存储空间为S(1:m),初始状态为top=m+1。现经过一系列入栈与退栈运算后,top=20,则当前栈中的元素个数为 (分数:2.00) A.30 B.20 C.m-19 √ D.m-20 TOP指针向上移动一位。当压入第一个元素时,TOP指针指向m+1-1=m;当压入第二个元素时,TOP指针指向 1n+1.2=m.1;…以此类推,当压入第N个元素时,TOP指针指向m+1-N=20;则N=m+1-20=m-19。因此选项C正确。 4.算法空间复杂度的度量方法是 (分数:2.00) A.算法程序的长度 B.算法所处理的数据量 C.执行算法所需要的工作单元 D.执行算法所需要的存储空间√ 解析:解析:算法空间复杂度是对一个算法在运行过程中临时占用存储空间大小的度量,因此选项D正确。 5.设循环队列为Q(1:m),其初始状态为front=rear=m。经过一系列入队与退队运算后,front=15,rear=20。现要在该循环队列中寻找最大值的元素,最坏情况下需要比较的次数为 (分数:2.00) A.4 √ B.6 C.m-5

《数据库》上机练习题

数据库期中上机考试题 1、在E:\学教管理系统\的路径下建立“学教管理”数据库 2、从服务器jsj上的“jxgl1“库中导入数据到“学教管理”数据库中。 3、在‘学教管理’数据库中增加两个数据表Scholarship-class (奖学金等级,平均最低成绩,金额),Scholarship(学号,奖学金等级,获奖时间),并建立相应的主码、外码和关联。 4、创建“学教管理”数据库中表之间的关系。 5、根据“学教管理”数据库中的基本数据表,进行下列各操作 1)修改Grade表,添加主码、外部码及关联,以及成绩限制在0~100之间。 2)在课程表中增加一个‘先修课号’属性,用于指定在学本课之前必须先修的课程,如果为空,则表示该课没有要求的先修课程。 3)向Student表中录入一条新记录(2005061,赵五,男) 4)分别向Class和grade表中录入一些2009信管管理、2009工商管理、2009旅游管理、2009数理经济四个班级的信息,以及四个班级的一些同学的选课信息。。 5)将李勇的计算机网络成绩置空。 6)找出所有被学生选修了的课程号。 7)查询01311班女同学的个人信息。 8)查询没有选修1号课程的学生姓名与班级号,并按班级号分组和排序。 9)查询姓李的学生的所有信息。 10)查询2009信息管理专业学生的数据库成绩 11)求选修了所有课程的学生学号和姓名。 12)求选修了数据库课程的学生人数。 13)列出每门课程的选修人数。 14)查询选修了3门课以上的学生学号和姓名 15)查询学生张婷婷选修的课程号、课程名和成绩 16)找出2009数理经济班所学数据库的平均分、最高分、最低分 17)找出与李勇在同一班级的学生基本情况信息 18)找出年龄介于李勇的年龄和25之间的学生信息 19)TOM已退学,从数据库删除有关他的相应记录。

数据结构考试题库

数据结构考试题库

绪论 一、填空题 1.数据的逻辑结构被分为集合、(线性结构)、(树形结构)和(图状结构)四种。 2.物理结构是数据结构在计算机中的表示,又称为(存储结构)。 3.数据元素的逻辑结构包括( 线性)、(树)和图状结构3种类型,树形结构和图状结构合称为(非线性结构)。 4.(数据元素)是数据的基本单位,(数据项)是数据不可分割的最小单位。 5.线性结构中元素之间存在(一个对一个)关系,树形结构中元素之间存在(一个对多个)关系,图状结构中元素之间存在(多个对多个)关系。 ?6.数据结构是一门研究非数值计算的程序设计问题中:计算机的(数据元素)以及它们之间的(关系)和(运筹)等的学科。 7.算法的五个重要特性为有穷性、确定性、(输入)、(输出)和(可行性)。 二、选择题 1.数据的不可分割的基本单位是(D)。 A.元素 B.结点 C.数据类型 D.数据项 *2.线性表的逻辑顺序与存储顺序总是一致的,这种说法(B)。 A.正确 B.不正确 C.不确定 D.无法选择 3.线性结构是指数据元素之间存在一种(D)。 精心整理,用心做精品2

A.一对多关系 B.多对多关系 C.多对一关系 D.一对一关系 4.在数据结构中,从逻辑上可以把数据结构分成(A)。 A.动态结构和静态结构 B.紧凑结构和非紧凑结构 C.线性结构和非线性结构 D.内部结构和外部结构 5.线性表若采用链式存储结构时,要求内存中可用存储单元的 地址( D)。 A.必须是连续的 B.部分地址必须是连续的 C.一定是不连续的 D.连续不连续都可以 三、简答题 1.算法的特性是什么。 答:有穷性确定性可行性有0或多个输入有1或多个输出线性结构 一、填空题 1.在一个长度为n的线性表中删除第i个元素(1≤i≤n)时,需向前移动(n-i)个元素。 2.从循环队列中删除一个元素时,其操作是(先移动队首指针,后取出元素)。 3.在线性表的单链接存储中,若一个元素所在结点的地址为p,则其后继结点的地址为(p->next)。 4.在一个单链表中指针p所指向结点的后面插入一个指针q所指向的结点时,首先把(p->next)的值赋给q->next,然后(q->date)的值赋给p->next。 5.从一个栈删除元素时,首先取出(栈顶元素),然后再使(栈顶指针)减1。 6.子串的定位操作通常称做串的(模式匹配)。 精心整理,用心做精品3

数据结构上机例题及答案

习题二 ⒉1描述以下四个概念的区别:头指针变量,头指针,头结点,首结点(第一个结点)。解:头指针变量和头指针是指向链表中第一个结点(头结点或首结点)的指针;在首结点之前附设一个结点称为头结点;首结点是指链表中存储线性表中第一个数据元素的结点。若单链表中附设头结点,则不管线性表是否为空,头指针均不为空,否则表示空表的链表的头指针为空。 2.2简述线性表的两种存储结构有哪些主要优缺点及各自使用的场合。 解:顺序存储是按索引直接存储数据元素,方便灵活,效率高,但插入、删除操作将引起元素移动,降低了效率;而链式存储的元素存储采用动态分配,利用率高,但须增设表示结点之间有序关系的指针域,存取数据元素不如顺序存储方便,但结点的插入和删除十分简单。顺序存储适用于线性表中元素数量基本稳定,且很少进行插入和删除,但要求以最快的速度存取线性表中的元素的情况;而链式存储适用于频繁进行元素动态插入或删除操作的场合。 2.3 在头结点为h的单链表中,把值为b的结点s插入到值为a的结点之前,若不存在a,就把结点s插入到表尾。 Void insert(Lnode *h,int a,int b) {Lnode *p,*q,*s; s=(Lnode*)malloc(sizeof(Lnode)); s->data=b; p=h->next; while(p->data!=a&&p->next!=NULL) {q=p; p=p->next; } if (p->data==a) {q->next=s; s->next=p;} else

{p->next=s; s->next=NULL; } } 2.4 设计一个算法将一个带头结点的单链表A分解成两个带头结点的单链表A和B,使A中含有原链表中序号为奇数的元素,而B中含有原链表中序号为偶数的元素,并且保持元素原有的相对顺序。 Lnode *cf(Lnode *ha) {Lnode *p,*q,*s,*hb; int t; p=ha->next; q=ha; t=0; hb=(Lnode*)malloc(sizeof(Lnode)); s=hb; while(p->next!=NULL) {if (t==0) {q=p;p=p->next;t=1;} else {q->next=p->next; p->next=s->next; s->next=p; s=p; p=p->next; t=0; } } s->next=NULL; return (hb); }

数据库上机实验题目和答案

试用SQL的查询语句表达下列查询: 1.检索王丽同学所学课程的课程号和课程名。 select Cno ,Cname from c where Cno in (select cno from sc where sno in (select sno from s where sname='王丽' )) 2.检索年龄大于23岁的男学生的学号和姓名。 select sno,sname from s where sex='男' and age>23 3.检索‘c01’课程中一门课程的女学生姓名 select sname from s where sex='女' and sno in (select sno from sc where cno='c01') 4.检索s01同学不学的课程的课程号。 select cno from c where cno not in (select cno from sc where sno ='s01') 5.检索至少选修两门课程的学生学号。 select sc.sno from s,sc where s.sno=sc.sno group by sc.sno having count(https://www.360docs.net/doc/4117562009.html,o)>=2 6.每个学生选修的课程门数。 解法一: select so.sno sno,https://www.360docs.net/doc/4117562009.html,ount,s.sname from(select sc.sno sno,count(sc.sno) ccount from sc,s where s.sno=sc.sno group by sc.sno ) so,s where s.sno=so.sno 解法二: select sc.sno sno,s.sname,count(sc.sno) ccount from sc,s where s.sno=sc.sno group by sc.sno,sname

数据结构期末考试试题及答案

数据结构期末考试试题及答案 、选择题 评价一个算法时间性能的主要标准是()。1. A、算法易于调试 B、算法易于理解 C、算法的稳定性和正确性 D、算法的时间复杂度 )等五个特性。计算机算法具备有输入、输出、 2. A、可行性、可移植性和可扩充性 B、可行性、确定性和有穷性 C、确定性、有穷性和稳定性 D、XX、稳定性和XX 。带头结点的单链表head为空的判定条件是()3. A、h ead==NULL B、h ead->next==NULL C、head->next==head D、head!=NULL 以下关于线性表的说法不正确的是()。4. A、线性表中的数据元素可以是数字、字符、记录等不同类型。 B、线性表中包含的数据元素个数不是任意的。

C、线性表中的每个结点都有且只有一个直接前趋和直接后继。 D、存在这 样的线性表:表中各结点都没有直接前趋和直接后继。 在顺序表中,只要知道(),就可在相同时间内求出任一结点的存储地址。 5.A、基地址 B、结点大小 C、向量大小 D、基地址和结点大小 ()运算中,使用顺序表比链表好。6. A、插入 B、删除 C、根据序号查找 D、根据元素值查找一个长度为n的顺序表中,向第i个元素之前插入一个新元素时,需要向后移动()个元素7.A、n-i B、n-i+1 C、n-i-1 D、i ()适合作为经常在首尾两端操作线性表的存储结构。8. A、顺序表 B、单链表 C、循环链表 D、双向链表

栈和队列的共同点是() 9. A、都是先进后出 B、都是先进先出 C、只允许在端点处插入和删除元素 D、没有共同点 一个队列的入列序列是1234,则队列的输出序列是()。10. A 、4321 B 、12 3 4 C 、1432 D 、 3241队列与一般的线性表的区别在于()。11. A、数据元素的类型不同 B、运算是否受限制 C、数据元素的个数不同 D、逻辑结构不同 假上溢”现象会出现在()中。12. A、循环队列 B、队列 C、链队列 、顺序队列D.二、填空

经典数据结构上机题_答案解析

数据结构上机实验题目 实验一线性表的顺序存储结构 实验学时 2学时 背景知识:顺序表的插入、删除及应用。 目的要求: 1.掌握顺序存储结构的特点。 2.掌握顺序存储结构的常见算法。 实验容 1.输入一组整型元素序列,建立顺序表。 2.实现该顺序表的遍历。 3.在该顺序表中进行顺序查找某一元素,查找成功返回1,否则返回0。4.判断该顺序表中元素是否对称,对称返回1,否则返回0。 5.实现把该表中所有奇数排在偶数之前,即表的前面为奇数,后面为偶数。 6.输入整型元素序列利用有序表插入算法建立一个有序表。 7.利用算法6建立两个非递减有序表并把它们合并成一个非递减有序表。 8. 利用该顺序结构实现循环队列的入队、出队操作。 8.编写一个主函数,调试上述算法。 #include #include

#define OVERFLOW 0 #define MAXSIZE 100 typedef int ElemType; typedef struct list {ElemType elem[MAXSIZE]; int length; }Sqlist; void Creatlist(Sqlist &L) {int i; printf("请输入顺序表的长度:"); //输入一组整型元素序列,建立一个顺序表。 scanf("%d",&L.length); for(i=0;i

数据结构练习1

华东理工大学网络学院 《数据结构》(ch1绪论和ch2线性表) 班级 学号 姓名 成绩 一、 名词解释(每小题2分,共10分) 1.数据结构 2. 线性结构 3.存储结构 4. 逻辑结构 5.非线性结构 答:1.数据结构:指的是数据之间的相互关系,即数据的组织形式。一般包括三个方面的内容:数据的逻辑结构、存储结构和数据的运算。 2. 线性结构:数据逻辑结构中的一类。它的特征是若结构为非空集,则该结构有且只有一个开始结点和一个终端结点,并且所有结点都有且只有一个直接前趋和一个直接后继。线性表就是一个典型的线性结构。栈、队列、串等都是线性结构。 3. 存储结构:数据元素及其关系在计算机存储器内的表示,称为数据的存储结构。 4. 逻辑结构:指数据元素之间的逻辑关系。 5.非线性结构:数据逻辑结构中的另一大类,它的逻辑特征是一个结点可能有多个直接前趋和直接后继。数组、广义表、树和图等数据结构都是非线性结构。 二、 填空题(每小题1分,共10分) 1. 非空的循环单链表head的尾结点p满足条件 p->next==head 。 2. 对于给定的n个数据元素,可能构造出集合 、线性结构 、 树形结构和网状(图形)结构四种逻辑结构。 3. 一个算法具有有穷性、 确定性 、 可行性 、输入和输出五个重要特性。 4. 在一个单链表中p所指结点之后插入s所指结点时,应执行s->next= p->next 和p->next= S 的操作。 三、判断正误(在正确的说法后面打勾,反之打叉)(每小题1分,共10分) ( × )1. 线性数据结构只能用顺序结构存放,非线性数据结构只能用链式存储存放。 ( √ )2. 单链表中逻辑上相邻的元素未必在存储的物理位置次序上相邻。 ( × )3. 链式存储是一种随机存取的数据结构。 ( √ )4 顺序表中逻辑上相邻的元素的物理位置必定相邻。 ( × )5. 顺序存储方式的优点是存储密度大,且插入、删除运算效率高。 ( √ )6. 在顺序表中按下标序号访问任意一结点的时间复杂度均为O(1) 。 ( √ )7. 带头结点的单向链表L为空的判定条件是L->next=null。 ( √ )8. 在顺序表中插入或删除一个元素,需要平均移动表中一半元素。 ( × )9. 线性表的逻辑顺序与存储顺序总是一致的。。 ( √ )10. 任何一个算法的设计取决于选定的数据(逻辑)结构,而算法的实现依赖于采用的存储结构。 四、单选题(每题2分,共30分) 1.有程序如下: i=1; k=0; while(i

数据库上机习题及答案

数据库及应用复习题 一、设计题 有一个[学生课程]数据库,数据库中包括三个表: 学生表Student由学号(Sno)、姓名(Sname)、性别(Ssex)、年龄(Sage)、所在系(Sdept)五个属性组成,记为: Student(Sno,Sname,Ssex,Sage,Sdept) ,Sno 为关键字。 课程表Course由课程号(Cno)、课程名(Cname)、先修课号(Cpno)、学分(Ccredit)四个属性组成,记为:Course(Cno,Cname,Cpno,Ccredit) Cno为关键字。 成绩表SG由学号(Sno)、课程号(Cno)、成绩(Grade)三个属性组成,记为:SG(Sno,Cno,Grade) (SNO, CNO)为关键字。 用SQL语言实现下列功能: 1.建立学生表Student,其中学号属性不能为空,并且其值是唯一的。 2.向Student表增加“入学时间(Scome)”列,其数据类型为日期型。 3.查询选修了3号课程的学生的学号及其成绩,查询结果按分数的降序排列。4.查询学习1号课程的学生最高分数、平均成绩。 5.查询与“李洋”在同一个系学习的学生。 6.将计算机系全体学生的成绩置零。 7.删除学号为05019的学生记录。 8.删除计算机系所有学生的成绩记录。 1. CREATETABLE Student (Sno CHAR(5) NOT NULL UNIQUE, Sname CHAR(20), Ssex CHAR(2), Sage INT, Sdept CHAR(15)) 2. ALTER TABLE Student ADD Scome DATETIME 3. SELECT Sno, Grade FROM SG WHERE Cno='3' ORDER BY Grade DESC 4. SELECT MAX(Grade), AVG(Grade) FROM SC WHERE Cno='1' 5. SELECT Sno, Sname, Sdept FROM Student WHERE Sdept IN

《数据结构》期末考试题及答案

2011-2012学年第一学期期末考查 《数据结构》试卷 (答案一律写在答题纸上,在本试卷上做答无效) 一、选择(每题1分,共10分) 1.长度为n的线性表采用顺序存储结构,一个在其第i个位置插入新元素的算法时间复杂度为(D) A.O(0) B.O(1) C.O(n) D.O(n2) 2.六个元素按照6,5,4,3,2,1的顺序入栈,下列哪一个是合法的出栈序列?(D) A.543612 B.453126 C.346512 D.234156 3.设树的度为4,其中度为1、2、3、4的结点个数分别是4、2、1、2,则树中叶子个数为(B ) A.8 B.9 C.10 D.11 4.设森林F对应的二叉树B有m个结点,B的右子树结点个数为n,森林F中第一棵树的结点个数是( B ) A. m-n B.m-n-1 C.n+1 D.m+n 5.若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数是(B) A.9 B.11 C.15 D.不确定 6.下列哪一个方法可以判断出一个有向图是否有环。(A) A.深度优先遍历 B.拓扑排序 C.求最短路径 D.求关键路径 7.第7层有10个叶子结点的完全二叉树不可能有(B )个结点。 A.73 B.234 C.235 D.236 8.分别用以下序列构造二叉排序树,与用其他三个序列构造的结果不同的是(B) A.(100,80,90,60,120,110,130) B.(100, 120, 110,130,80, 60,90) C.(100,60,80,90,120,110,130) D.(100,80, 60,90, 120, 130,110) 9.对一组数据(84,47,25,15,21)排序,数据的排列次序在排序过程中变化如下:(1)84 47 25 15 21 (2)15 47 25 84 21 (3)15 21 25 84 47(4)15 21 25 47 84则采用的排序方法是(B ) A.选择排序 B.起泡排序 C.快速排序 D.插入排序 10.对线性表进行折半查找时,要求线性表必须(D) A.以顺序方式存储 B.以顺序方式存储,且数据元素有序

数据结构上机考试题

注意事项1. 考试时间2小时,13:00-15:00 2. 题目4选2 3. 所有题目均使用标准输入和标准输出3. 只提交源程序,文件后缀名只能是.C或.CPP 4. 源文件大小不能超过10K,否则会被当作恶意提交而扣分5. 严格按照题目要求输出,去掉不需要的提示信息或调试信息6. 在程序中不要使用fflush(stdin)函数,否则会导致结果错误另外注意:本次是模拟测试,上机时间是4个小时,我们考试时间从14点开始到17点30分结束。同学视自己的能力,能做几道做几道。 哈夫曼树 时间限制: 100 second 内存限制: 100 Kb 描述 构造哈夫曼树(最优二叉树) 输入 输入n个结点每个结点的权值 输出 构造哈夫曼树(是最优二叉树)得到每个结点的哈夫曼编码 输入样例 23 186 64 13 22 32 103 21 15 47 57 1 5 32 20 57 63 15 1 48 51 80 23 8 输出样例 1( 186):00 2( 64):1001 3( 13):101100 4( 22):110010 5( 32):11100 6( 103):011 7( 21):110001 8( 15):101101 9( 47):11010 10( 57):0101 11( 1):101111000 12( 5):10111101 13( 32):11101 14( 20):110000 15( 57):1010 16( 63):1000 17( 15):101110 18( 1):101111001 19( 48):11011 20( 51):0100 21( 80):1111 22( 23):110011 23( 8):1011111 提示 输入第一行是结点数23 第二行是这几个结点的权值输出格式为结点号(权值):哈夫曼编码

数据库上机题目

上机时间7-18周周四上午3、4节 实验第一部分数据库操作 一:熟悉ACCESS环境(不用提交) 下面的实验要在七周内完成 实验1 建立学生、课程及成绩表,录入部分数据,并设计验证实体、参照及用户自定义完整性。 实验第二部分SQL语句VB数据库访问技术 二:SQL语句及VB数据库访问技术(要提交) 下面的SQL语句要求在“学生成绩管理”数据库进行测试。 下面的实验要在八至十二周内完成,要求提交纸质实验报告,实验报告包括:实验题目、SQL语句及查询结果的截图(查询的名称为自己的学号加姓名)。 【实验2_1】查询学生基本信息表中的所有信息。 SQL语句如下: 【实验2_2】在学生基本信息表中查询学生的学号、姓名、性别和族别信息。 SQL语句如下: 【实验2_3】从学生基本信息表中查询学生由哪些民族构成。 学生的族别有多行重复,要快速查询学生的民族构成,实际上就是对相同值的族别只需要显示一行,可使用DISTINCT关键字实现。 【实验2_4】从成绩表中查询学生成绩。 SQL语句如下: 【实验2_5】从相关表中查询每一位学生的学号、姓名、课程名称、成绩。 【实验2_6】在课程信息表中查找“Delphi程序设计”课程的任课老师。 【实验2_7】查询少数民族学生的基本情况。 【实验2_8】检索1985年1月1日以后出生的女生基本信息。 【实验2_9】查询每位同学的课程门数、总成绩、平均成绩。 【实验2_10】从学生基本信息表中统计各民族学生人数。 【实验2_11】从学生基本信息表中统计汉族学生的人数。 【实验2_12】显示平均成绩大于等于80分以上的学生情况。

【实验2_13】查询学生成绩并将显示的结果按成绩升序排序。 SQL语句如下: 【实验2_14】查询1985年出生的学生基本信息。 【实验2_15】查询不及格学生成绩信息。 查询不及格学生成绩信息,也就是查询0—59之间的学生成绩,可用BETWEEN关键字表示为:WHERE 成绩BETWEEN 0 AND 59。 【实验2_16】查询课程编号为002、003、007的课程编号、课程名称、任课教师和上课时间。 【实验2_17】检索所有姓刘的学生基本信息。 【实验2_18】检索包含“技术”两字的课程信息。 【实验2_19】查询第2 个字为“丽”的学生信息。 【实验2_20】查询课程信息表中教师未定的课程信息。 【实验2_21】统计成绩表中各门课程的学生人数、总成绩、平均成绩。 【实验2_22】检索单科成绩高于全班平均分的学生成绩信息。 【实验2_23】使用左外连接检索学生成绩信息(学号,姓名,课程名称)。 【实验2_24】使用右外连接检索学生成绩信息(学号,姓名,课程名称)。 【实验2_25】查找同名同姓的学生信息。 【实验2_26】在VB中设计针对“课程信息表”的基本编辑窗体,需要附运行界面及源程序代码。 实验第三部分数据库应用系统开发 数据库应用系统开发作为本课程课程设计考查内容,需要在18周之前提交纸质课程设计报告(主要是系统开发侧重于实施环节的报告)及数据库应用系统。系统开发可以两人(不能超过两人)一组,系统名称可自行拟定。

数据结构考试及答案()

数据结构考试及答案()

作者: 日期: 2

数据结构试题 一、单选题 1、在数据结构的讨论中把数据结构从逻辑上分为(C) A 内部结构与外部结构 B 静态结构与动态结构 C 线性结构与非线性结构 D 紧凑结构与非紧凑结构。 2、采用线性链表表示一个向量时,要求占用的存储空间地址(D) A 必须是连续的B部分地址必须是连续的 C 一定是不连续的D可连续可不连续 3、采用顺序搜索方法查找长度为n的顺序表时,搜索成功的平均搜索长度为 (D )。 An B n/2 C (n-1)/2 D (n+1)/2 4、在一个单链表中,若q结点是p结点的前驱结点,若在q与p之间插入结点s,则执行(D )o A s—link = p—link ;p—link = s; B p—link = s; s—link = q; C p—link = s—link ;s—link = p; D q—link = s; s—link = p; 5、如果想在4092个数据中只需要选择其中最小的5个,采用(C )方法最好。 A 起泡排序 B 堆排序C锦标赛排序 D 快速 排序 6、设有两个串t和p,求p在t中首次出现的位置的运算叫做(B )o A 求子串B模式匹配C 串替换 D 串连接 7、在数组A中,每一个数组元素A[i][j] 占用3个存储字,行下标i从1到8,

列下标j从1到10。所有数组元素相继存放于一个连续的存储空间中,则存放 该数组至少需要的存储字数是( C )。 A 80 B 100 C 240 D 270 8、将一个递归算法改为对应的非递归算法时,通常需要使用( A )。 A 栈B队列C循环队列D优先队列 9、一个队列的进队列顺序是1,2, 3, 4 ,则出队列顺序为(C )。 10、在循环队列中用数组A[0.. m-1]存放队列元素,其队头和队尾指针分别为front和rear,则当前队列中的元素个数是( D )。 A ( front - rear + 1) % m B (rear - front + 1) %m C ( front - rear + m) % m D ( rear - front + n) % m 11、一个数组元素a[i]与(A )的表示等价。 A * (a+i) B a+i C *a+i D &a+i 12、若需要利用形参直接访问实参,则应把形参变量说明为( B )参数 A指针 B 引用C值 D 变量 13、下面程序段的时间复杂度为(C) for (i nt i=0;i

数据结构上机考试试题

数据结构上机考试试题(C++语言版) 考试要求:本次考试共列考核试题4大题,考生可以在所列4个考核试题中任选3个小题(即可能只属于2个大题),作为上机考核试题。 考核原则:所选题目在上机编程调试通过后即为考核通过。监考教师依据学生编程及调试通过与否情况给予考核成绩。 考核成绩评分标准: 所选3个题目全部编写出程序并调试通过:优 所选3个题目全部编写出程序,但只有2个上机调试通过:良 所选3个题目全部编写出程序,但只有1个上机调试通过:及格 所选3个题目全部编写出程序但都没有上机调试通过,或没有编写出全部程序:不及格。考核时间:2小时。 考核试题: 1、建立一个顺序方式存储的线性表,向表中输入若干元素后进行以下操作: (1)向线性表的表头、表尾或合适位置插入元素 (2)对线性表按升序或降序输出 2、建立一个动态链接方式存储的线性表,向表中输入若干元素后进行以下操作: (1)从单链表中查找指定元素 (2)返回单链表中指定序号的结点值 3、建立一个动态链接结构存储的二叉树,向这棵二叉树进行以下操作: (1)按任中序遍历次序输出二叉树中的所有结点 (2)求二叉树的叶子数 4、编写一个对整型数组A[n+1]中的A[1]至A[n]元素进行选择排序的算法,使得首先从待排序区间中选择出一个最大值并同最后一个元素交换,再从待排序区间中选择出一个最小值并同最第一个元素交换,反复进行直到待排序区间中元素的个数不超过1为止。 #include<> #include<> #include"" //初始化线性表 void InitList(LinearList& L, int ms) { =new ElemType[ms]; if(! { cerr<<"Memory allocation failure!"<

2015年数据结构期末考试题及答案

2012年数据结构期末考试题及答案 一、选择题 1.在数据结构中,从逻辑上可以把数据结构分为C。 A.动态结构和静态结构B.紧凑结构和非紧凑结构 C.线性结构和非线性结构D.内部结构和外部结构 2.数据结构在计算机内存中的表示是指A。 A.数据的存储结构B.数据结构C.数据的逻辑结构D.数据元素之间的关系 3.在数据结构中,与所使用的计算机无关的是数据的A结构。 A.逻辑B.存储C.逻辑和存储D.物理 4.在存储数据时,通常不仅要存储各数据元素的值,而且还要存储C。 A.数据的处理方法B.数据元素的类型 C.数据元素之间的关系D.数据的存储方法 5.在决定选取何种存储结构时,一般不考虑A。 A.各结点的值如何B.结点个数的多少 C.对数据有哪些运算D.所用的编程语言实现这种结构是否方便。 6.以下说法正确的是D。 A.数据项是数据的基本单位 B.数据元素是数据的最小单位 C.数据结构是带结构的数据项的集合 D.一些表面上很不相同的数据可以有相同的逻辑结构 7.算法分析的目的是C,算法分析的两个主要方面是A。 (1)A.找出数据结构的合理性B.研究算法中的输入和输出的关系 C.分析算法的效率以求改进C.分析算法的易读性和文档性 (2)A.空间复杂度和时间复杂度B.正确性和简明性 C.可读性和文档性D.数据复杂性和程序复杂性 8.下面程序段的时间复杂度是O(n2)。

s =0; for(I =0;i<n;i++) for(j=0;j<n;j++) s +=B[i][j]; sum =s ; 9.下面程序段的时间复杂度是O(n*m)。 for(i =0;i<n;i++) for(j=0;j<m;j++) A[i][j] =0; 10.下面程序段的时间复杂度是O(log3n)。 i =0; while(i<=n) i =i * 3; 11.在以下的叙述中,正确的是B。 A.线性表的顺序存储结构优于链表存储结构 B.二维数组是其数据元素为线性表的线性表 C.栈的操作方式是先进先出 D.队列的操作方式是先进后出 12.通常要求同一逻辑结构中的所有数据元素具有相同的特性,这意味着B 。 A.数据元素具有同一特点 B.不仅数据元素所包含的数据项的个数要相同,而且对应的数据项的类型要一致 C.每个数据元素都一样 D.数据元素所包含的数据项的个数要相等 13.链表不具备的特点是A。 A.可随机访问任一结点B.插入删除不需要移动元素 C.不必事先估计存储空间D.所需空间与其长度成正比 14.不带头结点的单链表head为空的判定条件是A。

相关文档
最新文档