高级语言程序设计C(2012级B卷)答案.doc_第1页
高级语言程序设计C(2012级B卷)答案.doc_第2页
高级语言程序设计C(2012级B卷)答案.doc_第3页
高级语言程序设计C(2012级B卷)答案.doc_第4页
高级语言程序设计C(2012级B卷)答案.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

程序设计基础1(2012级计科B卷)答案一、简答题(单选,每题5分,共15分)1、简述一个有效的算法应该具备哪些特点?(5分) 答:有穷性、确定性、有零个或多个输入、有一个或多个输出、有效性。 2、何谓全局变量?何谓局部变量?当它们同名时编译器如何处理?分析使用全局变量的优劣。(5分) 答:所谓全局变量:函数外面定义的变量称之为全局变量。函数内部定义的变量称之为局部变量。当它们同名时对局部变量的访问屏蔽了对同名的全局变量的访问。全局变量的使用,虽然丰富了函数与函数之间传递信息的手段,但是也违背了模块之间强内聚、弱耦合的程序设计原则。所以,建议程序员尽量避免在程序设计中使用全局变量。3、何谓函数原型? 简述函数调用的最基本的条件?何谓外部函数?何谓内部函数?(5分)答:函数原型即为对函数的说明。函数调用最基本的条件是:函数要有定义,同时必须满足先定义后应用的原则,如果是系统库函数还必须包含其相应的头文件。外部函数是:不仅能被本函数所在源程序文件中的函数所调用的,同时,还能被同一程序的别的源程序文件中的函数所调用。内部函数:只能被本函数所在源程序文件中的函数所调用的函数,在定义时使用”static”关键字。二、选择题(每题2分,共20分)1.已知 int x=1,y=2,z=3;则z+=xy?+x:+y的值是(D) A,2B,4C,3D,62.已知int a=10,9,8,7,6,*p=a;则*(p+1)*(p+2)2的值是(C) A,72B,80C,54D,有语法错误3.已知int i,j;表达式(j=i=5,i=j=30 B、 a0&b0 C、 b!=0 D、 c!=0&b!=010.在进行文件操作时,写文件的一般含义是(B)A、 将磁盘中的信息存入计算机CPU; B、 将计算机内存中的信息存入磁盘; C、 将计算机CPU中的信息存入磁盘; D、 将磁盘中的信息存入计算机内存。三、阅读程序,写出输出结果(共50分)1.写出下列程序的输出结果(5分) int a=1; main() int a; for(a=1;a10;a+) sub(a+);printf(“%d”,a);sub(int a)a=a*a;return;答案:2 4 6 8 102.写出下列程序的输出结果(5分) f(int x ,int y) int r; if(y= =1) r=x; else r=f(x,y-1)+x; return r;main()int a=6,b=5;printf(“%d”,f(a,b);答案:303.写出下列程序的输出结果(5分) func(int *s,int *y) static int t=3;*y=st;t-;main()int a=10,20,30,40,i,x=0;for(i=0;i4;i+)func(a,&x);printf(“%d”,x);printf(“n”); 答案:40 30 20 104.写出下列程序的输出结果(5分) int sum1(int n) int p=0,s=0,i; for(i=1;in;i+) if(i%2) continue;s+=p+=i;return s;main()printf(“%dn”,sum1(10);答案:405.写出下列程序的输出结果(6分) double x,y,z; double f(),g(),t(); main() x=5.0;y=t(x,f);z=t(x,g);printf(“y=%f z=%fn”,y,z);double t(double a,double (*f)()return (*f)(a+a);double f(double x)return 3.0*x;double g(double x)return 3.0+x;答案:y=30.00000 z=13.000006.写出下列程序的输出结果(8分) void f(int i,char *cp)for (;i;i-)printf(“%c”,*cp+); main() char a3=“ABC”,“DEF”,“GH”;char *p;p=a0;f(1,p+);f(1,p+);f(1,p+);printf(“n”);p=a1;f(3,p+);f(2,p+);f(1,p);printf(“n”);printf(“%sn”,a0);答案:ABC DEFEFF ABCDEFGH7.写出下列程序的输出结果(8分) #include “stdio.h” main() char *f,*a; int i,j; f= “%11.2s”; a= “*”; printf(“n”); for(i=0;i6;i+) *(f+2)=6- i ; printf(f,a); if(i= =0) printf (“*n”); else if (i= =5) printf(“*”); else for(j=0;j2*i-1;j+) printf(“ ”);printf(“*n”);答案: * * * * * * * * * *8.写出下列程序的输出结果(8分) sub(int s,int m,int n,char st) int p,q,t; t=sts;p=s; while(1) q=(p+m)%n; if(q= =s) break; stp=stq; p=q; stp=t;char b= “0123456789”;main()sub(1,2,10,b);puts(b);答案:0 3 2 5 4 7 6 9 8 1四、下列程序已标上行号,请指出并改正程序中的错误。(共5分) 注:不得增加或删除程序行,也不能更改程序结构。 10个学生5门课,下面的程序从文件f1.dat读入所有学生的各课成绩,计算出每个学生的总分,并按总分降序的次序将每个学生名次、各课得分及总分输出到文件f2.dat。提示: 为了避免排序时可能要交换sk和sjk,程序另引进数组ord,改上述交换为ord和ordj的交换。 1. # include “stdio.h” 2. int s107; 3. main() 4. int i,j,sum,ord10,t; 5. FILE *fp; 6. if(fp=fopen(“wb”, “f1.dat”)= =NULL) 改为if(fp=fopen(“f1.dat”, “rb”)= =NULL) 7. printf(“cant open file %s n”, “f1.dat”); 8. exit(1); 9. for(i=0;i10;i+) 10.fread(fp,2,6,s); 改为fread(s,2,6,fp); 11.sum=0; 12.for(j=1;j=5;j+) 13.sum=sum+sj; 14.s6=sum; 15.ord=i; 16. 改为 fclose(fp); 17.for(i=0;i9;i+) 18.for(j=i+1;j10;j+) 19.if(s6sj6) 20.t=ord; ord=ordj;ordj=t; 21.fp=fopen(“rb”, “f2.dat”); 改为.fp=fopen(“f2.dat”, “wb”); 22.for(i=0;i10;i+) 23.s0=i+1; 改为s0=ord; 24.fwrite(fp,2,7,s); 改为fwrite(s,2,7,fp); 25.fclose(fp); 26.五、编程题(共10分) 说明:按各题要求编程,否则不给分。 1、编程序实现函数sort,完成对数组进行排序。其函数原型声明如下:Sort(int *p_array, int length);注:p_array为传递给函数的数组首元素的指针,length为数组中的元素个数。 2、编程序实现函数copy,完成把源字符串复制到目标字符串。其函数原型声明如下:copy(char *p_target, char *p_source);注:p_target,为目标字符串的指针;p_source为源字符串的指针。答案:1、 程序如下:Void Sort(int *p_array, int length)int i, j, k, temp;for(i=0;ilength-1;i+)K=i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论