1、R= 基本操作: InitComplex(&C,re,im)操作结果:构造一个复数C,其实部和虚部分别为re和im DestroyCmoplex(&C)销毁复数C Get(C,k,&e) 操作结果:用e返回复数C的第k元的值 Put(&C,k,e)改变复数C的第k元的值为e IsAscending(C)如果复数C的两个元素按升序排列,则返回1,否则返回0 IsDescending(C)如果复数C的两个元素按降序排列,则返回1,否则返回0 Max(C,&用e返回复数C的两个元素中值较大的一个 Min(C,&用e返回复数C的两个元素中值较小的一个 ADT ComplexADT RationalNu
2、mberD=s,m|s,m为自然数,且m不为0s,m InitRationalNumber(&R,s,m)构造一个有理数R,其分子和分母分别为s和m DestroyRationalNumber(&R)销毁有理数R Get(R,k,&用e返回有理数R的第k元的值R,k,e)改变有理数R的第k元的值为e IsAscending(R)若有理数R的两个元素按升序排列,则返回1,否则返回0 IsDescending(R)若有理数R的两个元素按降序排列,则返回1,否则返回0 Max(R,&用e返回有理数R的两个元素中值较大的一个 Min(R,&用e返回有理数R的两个元素中值较小的一个 ADT Ration
3、alNumber1.5 试画出与下列程序段等价的框图。(1) product=1; i=1; while(i=n) product *= i; i+; (2) i=0; do while(i!=n) & (ai!=x);(3) switch case xy: z=y-x; break; case x=y: z=abs(x*y); default: z=(x-y)/abs(x)*abs(y);1.6 在程序设计中,常用下列三种不同的出错处理方式:(1) 用exit语句终止执行并报告错误;(2) 以函数的返回值区别正确返回或错误返回;(3) 设置一个整型变量的函数参数以区别正确返回或某种错误返回。
4、试讨论这三种方法各自的优缺点。(1)exit常用于异常错误处理,它可以强行中断程序的执行,返回操作系统。 (2)以函数的返回值判断正确与否常用于子程序的测试,便于实现程序的局部控制。 (3)用整型函数进行错误处理的优点是可以给出错误类型,便于迅速确定错误。1.7 在程序设计中,可采用下列三种方法实现输出和输入:(1) 通过scanf和printf语句;(2) 通过函数的参数显式传递;(3) 通过全局变量隐式传递。试讨论这三种方法的优缺点。(1)用scanf和printf直接进行输入输出的好处是形象、直观,但缺点是需要对其进行格式控制,较为烦琐,如果出现错误,则会引起整个系统的崩溃。 (2)通过
5、函数的参数传递进行输入输出,便于实现信息的隐蔽,减少出错的可能。 (3)通过全局变量的隐式传递进行输入输出最为方便,只需修改变量的值即可,但过多的全局变量使程序的维护较为困难。1.8 设n为正整数。试确定下列各程序段中前置以记号的语句的频度:(1) i=1; k=0;=n-1) k += 10*i;(2) i=1; while(i=n-1);(3) i=1; while (i=n-1) (4) k=0; for(i=1; i=n; i+) for(j=i; j j+) k+;(5) for(i=1; for(j=1;=i; j+) for(k=1; k=j; k+) x += delta;(6
6、) i=1; j=0; while(i+jj) j+; else i+;(7) x=n; y=0; / n是不小于1的常数 while(x=(y+1)*(y+1) y+;(8) x=91; y=100; while(y0) if(x100) x -= 10; y-; else x+;(1) n-1 (2) n-1 (3) n-1 (4) n+(n-1)+(n-2)+.+1= (5) 1+(1+2)+(1+2+3)+.+(1+2+3+.+n)= = (6) n (7) 向下取整 (8) 11001.9 假设n为2的乘幂,并且n2,试求下列算法的时间复杂度及变量count的值(以n的函数形式表示)
7、。int Time(int n) count = 0; x=2; while(x438时,1.14 判断下列各对函数和,当时,哪个函数增长更快?(1) ,(2) ,(3) ,(4) ,(1)g(n)快 (2)g(n)快 (3)f(n)快 (4) f(n)快1.15 试用数学归纳法证明:(1) (2) (3) (4) 1.16 试写一算法,自大至小依次输出顺序读入的三个整数X,Y和Z的值int max3(int x,int y,int z) if(xy) if(xz) return x; else return z; else if(yz) return y;1.17 已知k阶斐波那契序列的定义
8、为 ,; , 试编写求k阶斐波那契序列的第m项值的函数算法,k和m均以值调用的形式在函数参数表中出现。k0为阶数,n为数列的第n项int Fibonacci(int k,int n) if(k1) exit(OVERFLOW);int *p,x; p=new intk+1; if(!p) exit(OVERFLOW); int i,j; for(i=0;ik+1;i+) if(ik-1) pi=0; else pi=1; for(i=k+1;n+1; x=p0; for(j=0;jk;j+) pj=pj+1; pk=2*pk-1-x; return pk;1.18 假设有A,B,C,D,E五个
9、高等院校进行田径对抗赛,各院校的单项成绩均已存入计算机,并构成一张表,表中每一行的形式为项目名称性别校名成绩得分编写算法,处理上述表格,以统计各院校的男、女总分和团体总分,并输出。typedef enumA,B,C,D,E SchoolName;typedef enumFemale,Male SexType;typedef struct char event3; /项目 SexType sex; SchoolName school; int score; Component; int MaleSum; /男团总分 int FemaleSum; /女团总分 int TotalSum; /团体总分 Sum;Sum SumScore(SchoolName sn,Component a,int n) Sum temp; temp.MaleSum=0; temp.
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1