2012级面向过程程序设计(C语言)( A卷 闭卷)(1)
- 格式:doc
- 大小:83.00 KB
- 文档页数:6
2012年上半年浙江省高等学校计算机等级考试二级C程序设计试卷说明:⑴本试卷共6页,满分100分;考试时间为90分钟;⑵考生应将所有试题的答案填写在答卷上;⑶程序阅读与填空全部是选择题,请在答卷上的各小题选项的对应位置上填“√”;⑷请将你的准考证号的后五位填写在答卷右下角的指定位置内。
一、程序阅读与填空(24小题,每小题3分,共72分)1.阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序说明】输入一个正整数m,判断它是否为素数。
素数就是只能被1和自身整除的正整数,1不是素数,2是素数。
运行示例:Enter m:99 is not a prime.Enter m:7979 is a prime.【程序】#include <stdio.h>#include <math.h>void main(){ int j,k,m;printf("Enter m:");scanf("%d",&m);k=sqrt(m);for(j=2; (1);j++)if( (2)) (3);if(j>k && (4))printf("%d is a prime.\n",m);elseprintf("%d is not a prime.\n",m);}【供选择的答案】(1)A、j>k B、j<=k C、j>m D、j<n(2)A、m%j==0 B、m%j=0C、m%j!=1D、m%j==1(3)A、return B、break;C、goD、continue(5)A、m==1 B、m!=2C、m!=1D、m==22.阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序说明】输一个正整数n1,再输入第一组n1个数,这些数已按从小到大的顺序排列,然后输入一正整数n2,随即输入第二组n2个数,它们也按从小到大的顺序排列,要求将这两组数合并,合并后的数应按从小到大的顺序排列。
三亚学院 2012/2013 学年春季学期《C语言与程序设计》期末考试B卷适用对象:12级信息管理与信息系统专业答题时间:120 分钟考试形式:闭卷(共40分,每题2分)1.一个C语言程序是由( C )组成的。
A主程序 B 子程序 C 函数 D 过程2.执行下面语句的结果为( C )。
y=10;x=y++;A x=10,y=10B x=11,y=11C x=10,y=11D x=11,y=103.下列程序的输出结果是( A )。
#include <stdio.h>void main(){int x=2,y=3;printf("x=%d,y=%d",x,y);}A.x=2,y=3 B.x=%2,y=%3C.x=%%d,y=%%d D.x=%d,y=%d4.不是C语言中基本数据类型为(C)。
A.整型B.实型C.集合型D.字符型5.表示关系12<=x<=y的C语言表达式为:( A )A.(x>=12)&(x<=y) B.(x>=12)&&(x<=y)C.(12<=x)|(x<=y)D.(12<=x)||(x<=y)6.若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式是( B )。
A.a<>0 B.!a C.a=0 D.a7.配合switch语句使用,作用是控制结束某个case分支的执行的语句是( A )。
A.break B.if C.end D.exit8.执行语句:for(i=1;i++<4;);后,变量i的值是(B)。
A.3 B.4 C.5 D.不定9.如下程序段执行后输出(B )。
#include <stdio.h>void main(){ int num=0;while(num<=2){ num++;printf("%d ",num);}}A.1 2 3 4 B.1 2 3 C.1 2 D.110.设x=1,y=2,m=4,n=3,则表达式x>y?x:m<n?y:n的值为:( B )A.1 B.3 C.2 D.411.以下正确的函数定义是:( A )A.double fun(int x, int y) B.double fun(int x,y){ z=x+y ; return z ; } { int z ; return z ;}C.fun (x,y) D.double fun (int x, int y){ int x, y ; double z ; { double z ;z=x+y ;z=x+y ; return z ; } return z ; }12.C语言规定,调用函数时,简单变量做实参时,实参变量与形参变量之间的数据传递是(A)A.地址传递B.值传递C.由实参传给形参D.由用户指定传递方式13.以下不正确的说法为(D)。
2012-2013学年第2学期2012级《C++面向对象程序设计》期末考试试题(A卷)考试时间:2013年6月26日参考答案一、单选题(共12分,每题2分)D C (B) B B A二、判断正误,对于你认为错误的论述,说明原因或举出反例。
(共20分,每题2分)1.代码double dval; float *pi = &dval; 中会发生隐式类型转换,因此不存在语法错误。
错误。
Double占8字节,float 占4字节,转换是不安全的,不会发生隐式转换,而是语法错误。
2.已知类A,且语句const A a; a.fun( );是合法的,则fun( )一定是常成员函数。
错误。
如fun()是A中的静态成员函数。
3.类B继承类A,那么sizeof(B)的值大于sizeof(A)的值。
错误。
是大于或等于4.单参构造函数一定可以被用来执行隐式类型转换。
错误。
不一定。
如用explicit修饰的构造函数,或私有的,或只声明但没有实现的。
5.类中没有声明虚函数,则不会为该类生成虚拟表。
错误。
不一定。
如基类中有虚函数,则在创建该类对象时,仍会生成虚拟表。
6.异常必须在其产生的当前函数中捕获,而不能在外层函数中捕获该异常。
错误。
可以。
如try { f( ); } catch(…) {}, 如果f()中没有try_catch结构,f( )产生的异常可以被catch(…)捕获。
7.由于抽象类不能实例化,但能派生新类,所以抽象类中的构造函数和拷贝构造函数应该是protected的。
错误。
抽象类表示一种泛化关系,其接口函数应在子类中存在,以保证接口的一致性。
特别的,构造函数和拷贝构造函数应为public。
8.虚函数可以访问虚函数和非虚函数,但非虚函数不能访问虚函数。
错误。
非虚函数的非静态函数可访问虚函数。
9.重载的析构函数应与重载的构造函数一一对应。
错误。
析构函数不能重载。
10.假设类A及其祖先类中均不含有指针型或引用型数据成员,执行代码块{ A a; A b(a); }时,即便使用类A的缺省拷贝构造函数也可能造成内存泄露。
12年的试题比13年的难很多,笔者费了一早上加一中午才全部做完。
如果对答案有疑问或者觉得哪里有问题请联系我qq553915228 李添锐一、写出下列程序段的运行结果(40分)1、(4分)char a='D'-'A',b='\010',c,d;c = ++a || b++;d = a-- && b--;printf("%d,%d,%d,%d",a,b,c,d);输出:3,7,1,12、(4分)char a=0x123FFF;printf("%d,",a);a=127;printf("%d",++a);输出:-1,-1283、(4分)int a=5,y=0;int main(){while(a=5){a+=5;y+=a;printf("%d,%d,", a, y);if (y>18) break;}return 0;}输出:10,10,10,204、(4分)int i=1, j=2, k=4;printf("%f,", i-(float)j/k);printf("%d,", j>1<k);k+=5/10*i ;printf("%d,",k);printf("%d", (j=1)?2:0);输出:0.500000,1,4,25、(4分)int a[][2]={(1,2),(3,4)};printf("%d",a[0][1]);输出:46、(4分)int ave(int x, int y){return (x+y)/2;}int main(){int a=1, b=2, c=3;printf("%d\n",ave(ave(a,b), ave(b,c)));return 0;}输出:1(\n)7、(4分)void exc(int x, int *y){int t;t=x; x=*y; *y=t;}int main(){int a=5,b=8;exc(a,&b);printf("a=%d,b=%d",a,b); return 0;}输出:a=5,b=58、(4分)char str[10]="believe";char *p=str;*(str+5)=0;puts(2+p);输出:lie9、(4分)struct pt{int x; int y;} p[2]={1,3,5,7}; printf("%.3f",p[1].y/(float)p[0].y+ p[1].x/p[0].x);输出:7.33310、(4分)FILE *fp;char c=49;int d=50, e;fp=fopen("a.tmp","w"); fprintf(fp,"%c%d", c, d); fclose(fp);fp=fopen("a.tmp","r"); fscanf(fp,"%d",&e); printf("%d\n",e);输出:150(\n)二、改错题(20分)以下程序实现:从键盘输入若干个学生的成绩数据,将这些数据存到磁盘文件上,并求这些学生的最高成绩。
(1)下列链表中,其逻辑结构属于非线性结构的是_________。
A)双向链表B) 带链的栈 C) 二叉链表D) 循环链表(1)C 【解析】见/uuxzhang上全国计算机二级考试参考资料_数据结构.pps 中第13张说明:链表存储结构是数据的存储结构;排除链表因素,从数据逻辑结构来看,线性结构包括线性表、栈和队;非线性结构包括树形结构和图形结构,所以二叉树是树形结构,即非线性结构。
(2)设循环队列的存储空间为Q(1:35),初始状态为front=rear=35。
现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为A) 20 B) 0或35 C) 15 D) 16(2)B 【解析】见/uuxzhang上全国计算机二级考试参考资料_数据结构.pps中第100-101张关于入队(Q.rear=Q.rear+1)与退队(Q.front=Qfront+1)运算规则,此外第一次入队为Q.rear=1;第一次退队为Q.front=1。
并假定循环队列最大个数为maxsize,其相应存储空间为1: maxsize,则循环队列的入队与退队图例和运算后元素个数的确定原则如下:循环队列中的元素个数或称队列长度通用计算公式:(Q.rear-Q.front+ maxsize)% maxsize 例如,Q.rear=20,Q.front=15,则循环队列中的元素个数=(20-15+35)%35=5;Q.rear=40,Q.front=15,则循环队列中的元素个数=(40-15+35)%35=25;本题根据Q.rear=Q.front=15,maxsize=35,则循环队列中元素个数=(15-15+35)%35=0或35;(3)下列关于栈的叙述中,正确的是A) 栈底元素一定是最后入栈的元素B) 栈操作遵循先进后出的原则C) 栈顶元素一定是最先入栈的元素D) 以上三种说法都不对(3)B 【解析】见/uuxzhang上全国计算机二级考试参考资料_数据结构.pps中第63张幻灯片说明:栈元素入、退原则:先进后出(FILO)或后进先出(LIFO)。
A 卷)一、简答题(单选,每题5分,共15分)1、什么是内存泄漏?如何防止?2、带参数的宏与函数有什么区别?3、文本文件与二进制文件有何区别?2分,共40分)) A) x1=26.8%3 B) 1+2=x2 C) x3=0x12; D) x4=1+2=3; (2) 设有以下定义 int a=0;double b=1.25; char c='A'; #define d 2则下面语句中错误的是( )A) a++; B) b++; C) c++; D) d++;(3) 设有定义:float a=2,b=4,h=3; ,以下C 语言表达式与代数式计算结果不相符的是( ) A) (a+b) *h/2 B) (1/2)*(a+b) *h C) (a+b) *h*1/2 D) h/2*(a+b) (4) 有以下程序 main( ) {int x=102,y=012; printf("%2d,%2d\n",x,y); }执行后输出结果是( )A) 10,01 B) 02,12 C) 102,10 D) 02,10(5) 以下4个选项中,不能看作一条语句的是( ) A) {;} B) a=0,b=0,c=0; C) if(a>0); D) if(b==0) m=1;n=2;(6) 设有定义:int a,*pa=&a; 以下scanf 语句中能正确为变量a 读入数据的是( ) A) scanf("%d",pa) ; B) scanf("%d",a) ; C) scanf("%d",&pa) ; D) scanf("%d",*pa) ; (7) 以下程序段中与语句k=a>b?(b>c?1:0):0;功能等价的是( ) A) if((a>b) &&(b>c) ) k=1; B) if((a>b) ||(b>c) ) k=1 else k=0;C) if(a<=b) k=0; D) if(a>b) k=1; else if(b<=c) k=1; else if(b>c) k=1; else k=0; (8) 有以下程序 main( ){ char k; int i;for(i=1;i<3;i++){ scanf("%c",&k);switch(k){ case '0': printf("another\n");case '1': printf("number\n");}}}程序运行时,从键盘输入:01<回车>,程序执行后的输出结果是()A) another B) another C) another D) numbernumber number number numberanother number(9) 有以下程序main( ){ int x=0,y=5,z=3;while(z-->0&&++x<5) y=y-1;printf("%d,%d,%d\n",x,y,z);}程序执行后的输出结果是()A) 3,2,0 B) 3,2,-1 C) 4,3,-1 D) 5,-2,-5(10) 有以下程序main( ){ int i,s=0;for(i=1;i<10;i+=2) s+=i+1;printf("%d\n",s);} 程序执行后的输出结果是()A) 自然数1~9的累加和B) 自然数1~10的累加和C) 自然数1~9中的奇数之和D) 自然数1~10中的偶数之和(11) 有以下程序main( ){ int i,n=0;for(i=2;i<5;i++){ do{ if(i%3) continue;n++;} while(!i);n++;}printf("n=%d\n",n);}程序执行后的输出结果是()A) n=5 B) n=2 C) n=3 D) n=4(12) 若程序中定义了以下函数double myadd(double a,double B){ return (a+B) ;}并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是()A) double myadd(double a,B) ; B) double myadd(double,double);C) double myadd(double b,double A) ; D) double myadd(double x,double y);(13) 有以下程序char fun(char x , char y){ if(x<y) return x;return y;}main( ){ int a='9',b='8',c='7';printf("%c\n",fun(fun(a,b) ,fun(b,c) ));}程序的执行结果是()A) 函数调用出错B)8 C)9 D)7(14) 设有定义:int n=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是()A) p=1; B) *q=2; C) q=p; D) *p=5;(15) 有以下程序void f(int v , int w){ int t;t=v;v=w;w=t;}main( ){ int x=1,y=3,z=2;if(x>y) f(x,y);else if(y>z) f(y,z);else f(x,z);printf("%d,%d,%d\n",x,y,z);}执行后输出结果是()A) 1,2,3 B) 3,1,2 C) 1,3,2 D) 2,3,1(16) 有以下程序段int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;b=p[5];b中的值是()A) 5 B) 6 C) 8 D) 9(17) 有以下程序main( ){ char a[]="abcdefg",b[10]="abcdefg";printf("%d %d\n",sizeof(a) ,sizeof(b) );}执行后输出结果是()A) 7 7 B) 8 8 C) 8 10 D) 10 10(18) 有以下程序void swap1(int c[]){ int t;t=c[0];c[0]=c[1];c[1]=t;}void swap2(int c0,int c1){ int t;t=c0;c0=c1;c1=t;}main( ){ int a[2]={3,5},b[2]={3,5};swap1(a) ; swap2(b[0],b[1]);printf("%d %d %d %d\n",a[0],a[1],b[0],b[1]); }其输出结果是()A) 5 3 5 3 B) 5 3 3 5 C) 3 5 3 5 D) 3 5 5 3(19) 有以下程序void sum(int *a){ a[0]=a[1];}main( ){ int aa[10]={1,2,3,4,5,6,7,8,9,10},i;for(i=2;i>=0;i--) sum(&aa[i]);printf("%d\n",aa[0]);}执行后的输出结果是()A) 4 B) 3 C) 2 D) 1(20) 有以下程序int f(int b[][4]){ int i,j,s=0;for(j=0;j<4;j++){ i=j;if(i>2) i=3-j;s+=b[i][j];}return s;}main( ){ int a[4][4]={{1,2,3,4},{0,2,4,5},{3,6,9,12},{3,2,1,0}}; printf("%d\n",f(a) );}执行后的输出结果是()A) 12 B) 11 C) 18 D) 16三、程序填空题(每空2分,共20分)void f( int y,int *x) {y=y+*x; *x=*x+y;}main( ){ int x=2,y=4;f(y,&x);printf("%d %d\n",x,y);}执行后输出的结果是【1】。
南京信息工程大学试卷(理工科)2011 - 2012 学年第 2学期C语言程序设计课程试卷( A 卷) 本试卷共 8 页;考试时间 120分钟;任课教师课程组;出卷时间 2012 年 6月学院专业2011 年级班学号姓名得分一、单项选择题 (每小题 1分,共 15分)1.C语言规定:在一个源程序中,main的位置A)必须在最开始 B)必须在系统调用的库函数后面C)可以任意 D)必须在最后2.下面四个选项中,均是合法的用户标识符的选项的是A) A p_o do B)float lao _AC) b-a goto int D) _123 temp INT3.判断字符型变量c1是否为大写字母的正确表达式为A)’A’<=c1<=’Z’ B)(c1>=A)&&(c1<=Z)C)(‘A’>=c1)||(‘Z’<=c1) D)(c1>=’A’)&&(c1<=’Z’)4.表达式18.0/4*sqrt(4)/8值的数据类型为A)float B)charC)double D)不确定5.假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是A)7 B)8 C)6 D)26.若对两个数组a和b进行初始化char a[]="ABCDEF";char b[]={'A', 'B', 'C', 'D', 'E', 'F'};则下列叙述正确的是。
A) a与b数组完全相同B) a与b数组长度相同C) a与b数组都存放字符串 D) 数组a比数组b长度长7.若定义x为长整型变量,则能正确输入x值的语句是。
A)scanf(“%d”,x); B)scanf(“%d”,&x);C)scanf(“%ld”,&x); D)scanf(“%ld”, x);8.以下正确的函数定义是。
习题答案习题1(参考答案)1.程序与算法的概念及二者的区别是什么?程序:为了实现特定目标或解决特定问题而用计算机语言偏写的指令序列,它由算法和数据结构组成。
算法:(Algorithm)是在有限步骤内求解某一问题所使用的一组定义明确的规则。
通俗地讲,就是计算机解题的步骤。
算法与程序的区别:计算机程序是算法的一个实例,同一个算法可以用不同的计算机语言来表达。
2.简述程序设计语言发展的过程程序设计语言经过最初的机器代码到今天接近自然语言的表达,经过了四代的演变。
一般认为机器语言是第一代,符号语言即汇编语言为第二代,面向过程的高级语言为第三代,面对象的编程语言为第四代。
3.简述高级程序设计语言中面向过程与面向对象的概念。
“面向过程”是一种以过程为中心的编程思想。
首先分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步地实现,使用的时候依次调用函数即可。
一般的面向过程是从上往下步步求精,所以面向过程最重要的是模块化的思想方法。
“面向对象”是一种以事物为中心的编程思想。
面向对象的方法主要是将事物对象化,对象包括属性与行为。
面向过程与面向对象的区别:在面向过程的程序设计中,程序员把精力放在计算机具体执行操作的过程上,编程关注的是如何使用函数去实现既定的功能;而在面向对象的程序设计中,技术人员将注意力集中在对象上,把对象看做程序运行时的基本成分。
编程关注的是如何把相关的功能(包括函数和数据)有组织地捆绑到一个对象身上。
4.C语言程序的特点是什么?(1)C语言非常紧凑、简洁,使用方便、灵活,有32个关键字,有9种流程控制语句。
(2)C语言运算符丰富,共有45个标准运算符,具有很强的表达式功能,同一功能表达式往往可以采用多种形式来实现。
(3)数据类型丰富。
C语言的数据类型有整型、实型、字符型、数组类型、结构类型、共用类型和指针类型,而且还可以用它们来组成更复杂的数据结构,加之C语言提供了功能强大的控制结构,因而使用C语言能非常方便地进行结构化和模块化程序设计,适合于大型程序的编写、调试。
青海大学试卷(A卷)系别:班级:学号:姓名:考试课程:程序设计基础(C)考试日期:2012 年7月06日注:所有答案均写在答题卡上,答在试卷上不得分,考试结束后试卷和答题卡一并交回一.填空题(每空1分,共16分)1.整型静态数组没有初始化,也没有赋值,此时数组元素的值均为。
2.数组在内存中占的存储区,用代表其首地址。
3. 在函数内部定义的只在本函数内有效的变量叫,在函数以外定义的变量叫。
4.调用一个函数时,实参变量和形参变量之间的数据传递是;若用数组名作为实参,则实际上传递给形参的是。
5. 有这样的定义:static int a[5]={2,4,6,8,10};int *p;p=&a[0];则与p=&a[0]等价的语句,*(p+1)的值是,*(a+3)的值是。
6.有说明char s1[40],s2[20]= "you are a teacher.";如果想从键盘上把字符串"I am a student."输入到数组s1中,函数调用的语句是。
能把s2中的字符串接到s1中的字符串后面的函数调用的语句是。
7.C语言中逻辑运算符的优先级高于算术运算符。
8.在C语言中,声明枚举类型用关键字开头。
9.在C语言中,文件的存取是以为单位的,这种文件被称作文件。
二.选择题(每小题2分,共40分)1.可以在C语言中用做用户标识符的是()。
A.else B.a_b1C.for D.2cd 2.若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值是()。
A.1 B.2 C.2.0 D.2.53.以下程序的输出结果是()。
main( )页脚内容- 1 -{ int m=10;printf("%d,%d,%d",--m,++m,++m);}A.9,10,11 B.10,10,11 C.9,12,11 D.11,12,114.C语言中,逻辑"真"等价于()。