2009年C++上机考试试题(容易)
国家计算机二级c语言2009-2007真题及答案(完全免费)
2009年9月全国计算机等级考试二级笔试试卷C语言程序设计(考试时间90分钟,满分100分)一、选择题((1)—(10)、(21)—(40)每题2分,(11)—(20)每题1分,共70分)(1)下列数据结构中,属于非线性结构的是CA)循环队列B) 带链队列C) 二叉树D)带链栈(2)下列数据结果中,能够按照“先进后出”原则存取数据的是BA) 循环队列B) 栈C)队列D)二叉树(3)对于循环队列,下列叙述中正确的是DA)队头指针是固定不变的B)队头指针一定大于队尾指针C)队头指针一定小于队尾指针D)队头指针可以大于队尾指针,也可以小于队尾指针(4)算法的空间复杂度是指AA)算法在执行过程中所需要的计算机存储空间B)算法所处理的数据量C)算法程序中的语句或指令条数D)算法在执行过程中所需要的临时工作单元数(5)软件设计中划分模块的一个准则是BA) 低内聚低耦合B) 高内聚低耦合C) 低内聚高耦合D) 高内聚高耦合(6)下列选项中不属于结构化程序设计原则的是AA) 可封装D) 自顶向下C) 模块化D) 逐步求精(7)软件详细设计产生的图如下:该图是CA) N-S图B) PAD图C) 程序流程图D) E-R图(8)数据库管理系统是BA)操作系统的一部分B) 在操作系统支持下的系统软件C) 一种编译系统D) 一种操作系统(9)在E-R图中,用来表示实体联系的图形是CA) 椭圆图B) 矩形C) 菱形D) 三角形(10)有三个关系R,S和T如下:其中关系T由关系R和S通过某种操作得到,该操作为DA) 选择B) 投影C) 交D) 并(11)以下叙述中正确的是DA)程序设计的任务就是编写程序代码并上机调试B)程序设计的任务就是确定所用数据结构C)程序设计的任务就是确定所用算法D)以上三种说法都不完整(12)以下选项中,能用作用户标识符的是CA)voidB)8_8C)_0_D)unsigned(13)阅读以下程序#includemain(){ int case; float printF;printf(“请输入2个数:”);scanf(“%d %f”,&case,&pjrintF);printf(“%d %f\n”,case,printF);}该程序编译时产生错误,其出错原因是AA)定义语句出错,case是关键字,不能用作用户自定义标识符 B)定义语句出错,printF不能用作用户自定义标识符C)定义语句无错,scanf不能作为输入函数使用D)定义语句无错,printf不能输出case的值(14)表达式:(int)((double)9/2)-(9)%2的值是BA)0B)3C)4D)5(15)若有定义语句:int x=10;,则表达式x-=x+x的值为B A)-20B)-10C)0D)10(16)有以下程序#includemain(){ int a=1,b=0;printf(“%d,”,b=a+b);print f(“%d\n”,a=2*b);}程序运行后的输出结果是DA)0,0B)1,0C)3,2D)1,217)设有定义:int a=1,b=2,c=3;,以下语句中执行效果与其它三个不同的是C A)if(a>b) c=a,a=b,b=c;B)if(a>b) {c=a,a=b,b=c;}C)if(a>b) c=a;a=b;b=c;D)if(a>b) {c=a;a=b;b=c;}(18)有以下程序#includemain(){ int c=0,k;for (k=1;k<3;k++)switch (k){ default: c+=kcase 2: c++;break;case 4: c+=2;break;}printf(“%d\n”,c);}程序运行后的输出结果是AA)3B)5C)7D)9(19)以下程序段中,与语句:k=a>b?(b>c?1:0):0;功能相同的是AA)if((a>b)&&(b>c)) k=1;else k=0;B)if((a>b)||(b>c) k=1;else k=0;C)if(a<=b) k=0;else if(b<=c) k=1;D)if(a>b) k=1;else if(b>c) k=1;else k=0;20)有以下程序#includemain(){ char s[]={“012xy”};int i,n=0;for(i=0;s[i]!=0;i++)if(s[i]>=’a’&&s[i]<=’z’) n++;printf(“%d\n”,n);}程序运行后的输出结果是BA)0B)2C)3D)5(21)有以下程序#includemain(){ int n=2,k=0;while(k++&&n++>2);printf(“%d %d\n”,k,n);}程序运行后的输出结果是DA)0 2B)1 3C)5 7D)1 2(22)有以下定义语句,编译时会出现编译错误的是CA)char a=’a’;B)char a=’\n’;C)char a=’aa’;D)char a=’\x2d’;(23)有以下程序#includemain(){ char c1,c2;c1=’A’+’8’-‘4’;c2=’A’+’8’-‘5’;printf(“%c,%d\n”,c1,c2);}已知字母A的ASCII码为65,程序运行后的输出结果是A A)E,68B)D,69C)E,DD)输出无定值(24)有以下程序#includevoid fun(int p){ int d=2;p=d++; printf(“%d”,p);}main(){ int a=1;fun(a); printf(“%d\n”,a);}程序运行后的输出结果是CA)32B)12C)21D)22(25)以下函数findmax拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致不能实现预定功能#define MIN -2147483647int findmax (int x[],int n){ int i,max;for(i=0;i<N;I++)< p="" />{ max=MIN;if(maxreturn max;}造成错误的原因是DA)定义语句int i,max;中max未赋初值B)赋值语句max=MIN;中,不应给max赋MIN值C)语句if(maxD)赋值语句max=MIN;放错了位置(26)有以下程序#includemain(){ int m=1,n=2,*p=&m,*q=&n,*r;r=p;p=q;q=r;printf(“%d,%d,%d,%d\n”,m,n,*p,*q);}程序运行后的输出结果是BA)1,2,1,2B)1,2,2,1C)2,1,2,1D)2,1,1,2(27)若有定义语句:int a[4][10],*p,*q[4];且0≤i<4,则错误的赋值是A A)p=aB)q[i]=a[i]C)p=a[i]D)p=&a[2][1](28)有以下程序C#include#includemain(){ char str[ ][20]={“One*World”, “One*Dream!”},*p=str[1];printf(“%d,”,strlen(p));printf(“%s\n”,p);}程序运行后的输出结果是A)9,One*WorldB)9,One*DreamC)10,One*DreamD)10,One*World(29)有以下程序C#includemain(){ int a[ ]={2,3,5,4},i;for(i=0;i<4;i++)switch(i%2){ case 0:switch(a[i]%2){case 0:a[i]++;break;case 1:a[i]--;}break;case 1:a[i[=0;}for(i=0;i<4;i++) printf(“%d”,a[i]); printf(“\n”);}A)3 3 4 4B)2 0 5 0C)3 0 4 0D)0 3 0 4(30)有以下程序#include#includemain(){ char a[10]=”abcd”;printf(“%d,%d\n”,strlen(a),sizeof(a));}程序运行后的输出结果是BA)7,4B)4,10C)8,8D)10,10(31)下面是有关C语言字符数组的描述,其中错误的是D A)不可以用赋值语句给字符数组名赋字符串B)可以用输入语句把字符串整体输入给字符数组C)字符数组中的内容不一定是字符串D)字符数组只能存放字符串(32)下列函数的功能是fun(char * a,char * b){ while((*b=*a)!=’\0’) {a++,b++;} }A)将a所指字符串赋给b所指空间B)使指针b指向a所指字符串C)将a所指字符串和b所指字符串进行比较D)检查a和b所指字符串中是否有’\0’(33)设有以下函数void fun(int n,char * s) {……}则下面对函数指针的定义和赋值均是正确的是A)void (*pf)(); pf=fun;B)viod *pf(); pf=fun;C)void *pf(); *pf=fun;D)void (*pf)(int,char);pf=&fun;(34)有以下程序#includeint f(int n);main(){ int a=3,s;s=f(a);s=s+f(a);printf(“%d\n”,s);}int f(int n){ static int a=1;n+=a++;return n;}程序运行以后的输出结果是CA)7B)8C)9D)10(35)有以下程序#include#define f(x) x*x*xmain(){ int a=3,s,t;s=f(a+1);t=f((a+1));printf(“%d,%d\n’,s,t);}程序运行后的输出结果是AA)10,64B)10,10C)64,10D)64,64(36)下面结构体的定义语句中,错误的是A)struct ord {int x;int y;int z;}; struct ord a;B)struct ord {int x;int y;int z;} struct ord a;C)struct ord {int x;int y;int z;} a;D)struct {int x;int y;int z;} a;(37)设有定义:char *c;,以下选项中能够使字符型指针c正确指向一个字符串的是AA)char str[ ]=”string”;c=str;B)scanf(“%s”,c);C)c=getchar();D)*c=”string”;(38)有以下程序#include#includestruct A{ int a; char b[10]; double c;};struct A f(struct A t);main(){ struct A a={1001,”ZhangDa”,1098.0};a=f(a);jprintf(“%d,%s,%6.1f\n”,a.a,a.b,a.c);}struct A f(struct A t)( t.a=1002;strcpy(t.b,”ChangRong”);t.c=1202.0;return t; )程序运行后的输出结果是CA)1001,ZhangDa,1098.0B)1001,ZhangDa,1202.0C)1001,ChangRong,1098.0D)1001,ChangRong,1202.0(39)若有以下程序段int r=8;printf(“%d\n”,r>>1);输出结果是CA)16B)8C)4D)2(40)下列关于C语言文件的叙述中正确的是CA)文件由一系列数据依次排列组成,只能构成二进制文件B)文件由结构序列组成,可以构成二进制文件或文本文件C)文件由数据序列组成,可以构成二进制文件或文本文件D)文件由字符序列组成,其类型只能是文本文件二、填空题(每空2分,共30分)(1)某二叉树有5个度为2的结点以及3个度为1的结点,则该二叉树中共有 14 个结点。
二级C语言机试真题2009年09月
[真题] 二级C语言机试真题2009年09月一、填空题第1题:给定程序的功能是:从键盘输入若干行文本(每行不超过80个字符),并写入文件myfile4.txt中,用-1作为字符串输入结束的标志,然后将文件的内容读出显示在屏幕上。
文件的读写分别由自定义函数ReadText和WriteText实现。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
_____[试题源程序]#include<stdio.h>#include<string.h>#include<stdlib.h>void WriteText(FILE *);void ReadText(FILE *);main(){FILE *fp;if((fp=fopen("myfile4.txt", "W"))==NULL){printf("open fail !!\n"); exit(0);}WriteText(fp);fclose(fp);if((fp=fopen("myfile4.txt", "r"))==NULL)printf("open fail !!1\n"); exit(0);}ReadText(fp);fclose(fp);}/*********found*********/void WriteText(FILE (1) ){char str[81];printf("\nEnter string with -1 to end :\n");gets(str);while(strcmp(Str, "-1")!=0){/**********found*********/fputs( (2) , fw);fputs("\n", fw);gets(str);}void ReadText(FILE *fr){char str[81];printf("\nRead file and output to screen :\n");fgets(str, 81, fr);while( !feof(fr)){/**********found**********/printf("%s", (3) );fgets(str, 81, fr);}}参考答案:(1) fw (2) str (3) str填空1:在该函数中,对已有的语句fputs("\n", fw);分析可知:由于文件流变量fw在函数体中没有定义过,故应填*fw或fw[]。
2009年3月全国计算机等级考试二级笔试试卷C语言程序设计(附答案)
机密★启用前2009年3月全国计算机等级考试二级笔试试卷C语言程序设计(考试时间90分钟,满分100分)一、选择题((1)-(10)、(21)-(40)每题2分,(11)-(20)每题1分,共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应的位置上,答在试卷上不得分。
(1)下列叙述中正确的是A)栈是“先进先出”的线性表B)队伍是“先进先出”的线性表C)循环队列是非线性结构D)有序线性表既可以采用顺序存储结构,也可以采用链式存储结构(2)支持子程序调用的数据结构是A)栈 B)树 C)队列 D)二叉树(3)某二叉树有5个度为2的结点,则该二叉树的叶子结点数是A)10 B)8 C)6 D)4(4)下列排序方法中,最坏情况下比较次数最少的是A)冒牌排序 B)操作系统 C)直接插入排序 D)堆排序(5)软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件),下面属于应用软件的是A)编译程序 B)操作系统 C)教务管理系统 D)汇编程序(6)下面叙述中错误的是A)软件测试的目的是发现错误并改正错误B)对被调试的程序进行“错误定位”是程序调试的必要步骤、C)程序调试通常也成为DebugD)软件测试应严格执行测试计划,排除测试的随意性(7)耦合性和内聚性是对模块独立性度量的两个标准。
下列叙述中正确的是A)提高耦合性降低内聚性有利于提高模块的独立性B)降低耦合性提高内聚性有利益提高模块的独立性C)耦合性是指一个模块内部各个元素间彼此结合的紧密程度D)内聚性是指模块间互相连接的紧密程度(8)数据库应用系统中的核心问题是A)数据库设计 B)数据库系统设计C)数据库维护 D)数据库管理员培训(9)有两个关系R、S如下:有关系R通过运算得到关系S,则所使用的运算为A)选择 B)投影C)插入 D)连接(10)将E-R图转换为关系模式时,实体和联系都可以表示为A)属性 B)键 C)关系 D)域(11)以下选项中合法的标识符是A)l_l B)l-l C)_ll D)l_ _(12)若函数中有定义语句:int k;,则A)系统将自动给k赋初值0 B)这时k中的值无定义C)系统将自动给k赋初值-1 D)这时k中无任何值(13)以下选项中,能用作数据常量的是A)o115 B)0118 C)1.5e1.5 D)115L(14)设有定义:int x=2;,以下表达式中,值不为6的是A)x*=x+1 B)x++,2*x C)x*=(1+x) D)2*x,x+=2(15)程序段:int x=12;double y=3.;printf(“%d%8.6f”,x,y);的输出结果是:A)123. B)12 3. C)12,3. D)123.(16)若有定义语句:double x,y,*px,*py;执行了px=&x;py=&y;之后,正确的输入语句是A)scanf(“%f%f”,x,y); B)scanf(“%f%f”,&x,&y);C)scanf(“%1f%1e”,px,py); D)scanf(“%1f%1f”,x,y);(17)以下是if语句的基本形式:if(表达式) 语句其中“表达式”A)必须是逻辑表达式 B)必须是关系表达式C)必须是逻辑表达式或关系表达式 D)可以是任意合法的表达式(18)有以下程序#include <stdio.h>main(){ int x;scanf(“%d”,&x);if(x<=3) ; elseif(x!=10) printf(“%d\n”,x);}程序运行时,输入的值在哪个范围才会有输出结果A)不等于10的整数 B)大于3且不等于10的整数C)大于3或等于10的整数 D)小于3的整数(19)有以下程序#include <stdio.h>main(){ int a=1,b=2,c=3,d=0;if (a==1 && b++==2)if (b!=2||c==!=3)printf(“%d,%d,%d\n”,a,b,c);else printf(“%d,%d,%d\n”,a,b,c);else printf(“%d,%d,%d\n”,a,b,c);}程序运行后输出的结果是A)1,2,3 B)1,3,2 C)1,3,3 D)3,2,1(20)以下程序段中的变量已正确定义for(i=0;i<4;i++,i++)for(k=1;k<3;k++);printf(“*”);程序段输出的结果是A)******** B)**** C)** D)*(21)有以下程序#include <stdio.h>main(){ char *s={“ABC”};do{ printf(“%d”,*s%10); s++;}while(*s);}注意:字母A的ASCⅡ码值为65。
2009年上半年C试卷
2009年春浙江省高等学校计算机等级考试试卷(二级C)试题1(每小题3分,共12分)阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序说明】输入一个正整数n ,计算下列算式的前n 项之和。
s =-+-+⋯1111357运行示例:Enter n: 2Sum = 0.67【程序】#include <stdio.h>main( ){ int denominator, flag, i, n;double item, sum;printf("Enter n: ");scanf ("%d", &n);denominator = 1; (1) ;sum = 0; for (i = 1; (2) ; i++){ (3) ;sum = sum + item; (4) ;denominator = denominator + 2;}printf ("Sum = %.2f\n", sum);}【供选择的答案】(1) A. flag = 0 B. flag = -1C. flag = nD. flag = 1(2) A. i >= n B. i < nC. i > nD. i <= n(3) A. item = flag / denominatorB. item = 1 / denominatorC. item = flag * 1.0 / denominatorD. item = 1.0 / denominator(4) A. flag = -1 B. flag = 0C. flag = -flagD. flag = flag试题2(每小题3分,共12分)阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序说明】验证哥德巴赫猜想:任何一个大于6的偶数均可表示为两个素数之和。
2009计算机二级C语言上机原题
江苏省高等学习非计算机专业学生计算机基础知识和应用能力等级考试上机试卷(2010年秋)二级C语言(试卷代号C03)(本试卷完成时间70分钟)一、改错题【程序功能】判断方阵A与方阵B是否相等或方阵A顺时针旋转90°后与方阵B 是否相等。
设有方阵A和B阶数相同,若方阵A和方阵B对应位置的元素值均相等,则称方阵A 等于方阵B;若方阵A经过顺时针旋转90°后形成的新方阵中各元素值与方阵B对应位置的元素值均相等,则称方阵A旋转90°后与方阵B相等。
函数equal的功能是判断a指向的数组中存储的方阵与b指向的数组中存储的方阵是否相等,若相等函数返回1,否则返回0.函数rotate的功能是将a指向的数组中存储的方阵顺时针旋转90°。
【测试数据与运行结果】测试数据:0 0 0 0 0 0 0 00 0 0 0 0 1 0 0A: 0 1 0 0 B: 0 0 0 00 0 0 0 0 0 0 0屏幕输出:A rotate 90,A=B【含有错误的源程序】#include <stdio.h>int equal(int a[][4],int b[][4],int n){ int i,j ;for(i=0;i<n;i++)for(j=0;j<n;j++)if(a[i][j]!=b[i][j]) retuin 0;else return1;}void rotate(int a[][4],int n){ int i,j,c[4][4];for(i=0;i<n;i++)for(j=0;j<n;j++)c[i][j]=a[n-j][i];for(i=0;i<n;i++)for(j=0;j<n;j++)a[i][j]=c[i][j];}Void main(){ int a[4][4]={{0},{0},{0,1},{0}},b[4][4]={{0},{0,1},{0},{0}},k,j=0;k=equal(a,b,4);if(k) i=1;else{ rotate (a,b,4);k=equal(a,b,4);if(k) i=2;}switch(i);{ case 0:puts(“A!=B”); break;case 1:puts(“A=B”); break;case 2:puts(“A rotate 90,A=B”);}}【要求】1.将上述程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。
程序设计基础09级上机考试题库
一、初级题1.输入整数n,输出由2×n+1行2×n+1列组成的以下(n=2)的图案。
2.输入整数n(<10),输出以下形式(n=3)的数字排列图案。
3.输入正整数n,输出n行n列星号字符组成的三角形图案。
以下是n等于4的图案。
4.输入正整数n,输出由n行2×n-1列星号字符组成的三角形图案。
以下是n等于3的图案。
5.输入正整数n,输出n行2×n-1列的空心三角形图案。
以下是n等于4的图案。
-6.输入正整数n,输出n行n列的空心四边形图案。
以下是n等于5的图案。
7.编写一个函数,已知参数n,在屏幕的中间显示一个用星号字符绘制的空心的三角形图案。
例如,n=4,函数的显示的图案为:8.编写程序,列表输出整数1~10的平方和立方值。
9.求一个整数的十进制位数。
10.判断一个十进制数是否为回文数。
11.递归计算x的y次方。
12.输入一个正整数,用递归实现该整数的倒序输出。
—13.编写一个程序,输入一个整数,输出0~9各数字在该整数中出现的次数。
14.编写一个程序,输出所有英文字符及它们的ASCII码值,其中代码值分别用八进制形式、十六进制形式和十进制形式输出。
15.水仙花数是一个n(n>=3)位数字的数,它等于每个数字的n次幂之和。
例如,153是一个水仙花数,153=13+53+33。
试编写一个程序求小于999的所有水仙花数。
#include<>void main(){printf(“小于999的水仙花数为:\n”);int n,i,j,k;for(n=100;n<999;n++){…i=n%10;j=n/100;k=(n-100*j)/10;if(i*i*i+j*j*j+k*k*k==n);printf(“%d”,n);}}16.编写一个程序,输入一个整数,逐位地输出整数的十进制数,要求位与位之间有一个空格符分隔。
~17.在数组的某个下标位置插入一个元素。
C语言考试2009-3
2009年9月全国计算机等级考试二级笔试试卷C语言程序设计(考试时间120分钟,满分100分)一、选择题((1)~(10)、(21)~(40)每小题2分,(11)~(20)每小题1分,共70分)1.下列叙述中正确的是 ______。
A.栈是“先进先出”的线性表B.队列是“先进后出”的线性表C.循环队列是非线性结构D.有序线性表既可以采用顺序存储结构,也可以采用链式存储结构2.支持子程序调用的数据结构是 ______ 。
A.栈B.树C.队列D.二叉树3.某二叉树有5个度为2的结点,则该二叉树的叶子结点数是 ______ 。
A.10B.8C. 6D. 44.下列排序方法中,最坏情况下比较次数最少的是 ______ 。
A.冒泡排序B.简单选择排序C.直接插入排序D.堆排序5.软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件),下面属于应用软件的是 ______ 。
A.编译程序B.操作系统C.教务管理系统D.汇编程序6.下面叙述中错误的是 ______ 。
A.软件测试的目的是发现错误并改正错误B.对被调试的程序进行“错误定位”是程序调试的必要步骤C.程序调试通常也称为DebugD.软件测试应严格执行测试计划,排除测试的随意性7.耦合性和内聚性是对模块独立性度量的两个标准。
下列叙述中正确的是 ______ 。
A.提高耦合性降低内聚性有利于提高模块的独立性B.降低耦合性提高内聚性有利益提高模块的独立性C.耦合性是指一个模块内部各个元素间彼此结合的紧密程度D.内聚性是指模块间互相连接的紧密程度8.数据库应用系统中的核心问题是 ______ 。
A.数据库设计B.数据库系统设计C.数据库维护D.数据库管理员培训9.设有两个关系R、S如下:R SA B Ca 3 2b 0 1c 2 1 A Ba 3b 0c 2由关系R通过运算得到关系S,则所使用的运算为 ______ 。
A.选择B.投影C.插入D.连接10.将E-R图转换为关系模式时,实体和联系都可以表示为 ______ 。
2009年3月全国计算机等级考试二级c语言试卷及答案
2009年3月计算机等级考试二级c语言试卷及答案一.选择题。
(每题2分,共60分)(1)下列叙述中正确的是( ) 。
A)栈是“先进先出”的线性表B)队列是“先进先出”的线性表C)循环队列是非线性结构D)有序线性表既可以采用顺序存储结构,也可以采用链式存储结构(2)支持子程序调用的数据结构是( ) 。
A)栈B)树C)队列D)二叉树(3)某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是( ) 。
A)10 B)8 C)6 D)4(4)下列排序方法中,最坏情况下比较次数最少的是( ) 。
A)冒泡排序B)简单选择排序C)直接插入排序D)堆排序(5)软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。
下面属于应用软件的是( ) 。
A)编译软件B)操作系统C)教务管理系统D)汇编程序(6)下面叙述中错误的是( ) 。
A)软件测试的目的是发现错误并改正错误B)对被调试的程序进行“错误定位”是程序调试的必要步骤C)程序调试通常也称为DebugD)软件测试应严格执行测试计划,排除测试的随意性(7)耦合性和内聚性是对模块独立性度量的两个标准。
下列叙述中正确的是( ) 。
A)提高耦合性降低内聚性有利于提高模块的独立性B)降低耦合性提高内聚性有利于提高模块的独立性C)耦合性是指一个模块内部各个元素间彼此结合的紧密程度D)内聚性是指模块间互相连接的紧密程度(8)数据库应用系统中的核心问题是( ) 。
A)数据库设计B)数据库系统设计C)数据库维护D)数据库管理员培训(9)有两个关系R,S如下:由关系R通过运算得到关系S,则所使用的运算为( ) 。
A)选择B)投影C)插入D)连接(10)将E-R图转换为关系模式时,实体和联系都可以表示为( ) 。
A)属性B)键C)关系D)域(11)以下选项中合法的标识符是( ) 。
A)1_1 B)1—1 C)_11 D)1__(12)若函数中有定义语句:int k;,则( ) 。
2009【春】江苏计算机等级C上机真题
2009【春】江苏计算机等级C上机真题2009春江苏计算机等级⼆级考试c上机2009春上机试题1(编程)程序功能:找出7个默森尼数。
法国数学家默森尼曾提出下列公式:Mp=2^p-1。
当p是素数并且Mp也是素数时,称Mp为默森尼数,例如,p=5,Mp=2^5-1=31,5和31都是素数,因此31是默森尼数;⽽Mp=2^11-1=2047,11是素数,2047不是素数,因此2047不是默森尼数.[编程要求]1.编写函数void Mersenne(long a[ ],int m),其功能是求出前m个默森尼数并以此将它们保存到a指向的数组中,2.编写main函数,调⽤Mersenne函数并保存前7个默森尼数,将运⾏结果输出到屏幕及结果⽂件myf2.out中,最后将考⽣的考号也保存到结果⽂件myf2.out中【测试数据与运⾏结果】3 7 31 127 8191 131071 5242872009春上机试题2(编程)⽤⼀组整数验证命题,任意⼀个百位数字与个位数字不同的三位正整数n1在经过以下操作后⼀定会变换到1089:将n1的百位数与个位数字交换得到n2,求n1和n2差的绝对值得到n3,将n3的百位数字与个位数字交换得到n4;求n3与n4的和得到n5,n5⼀定是1089,若n1、n3是⼀位数或两位数,则在⾼位补0使其成为三位数例如:n1:123,n2:321,n3:198(321,-123),n4:891,n5:1089(198+891)【编程要求】1.编写函数int fun(int a[ ],int b[ ], intn),其功能是⽤n指向数组的前n个整数验证上述命题,将所有符合命题的整数所在数组元素的下标依次保存到b指向的数组中,函数返回b数组中数据的个数2.编写main函数,声明a数组并⽤测试数据初始化,⽤a数组作为实参调⽤fun函数,将a数组中所有符合命题的整数输出到屏幕及结果⽂件myf2.out中,最后将考⽣本⼈的准考证号字符串也保存到结果⽂件myf2.out中江苏计算机⼆级c2009春上机试题22009春第⼆套⼀:改错题:程序功能:函数mergeu的功能是:合并两个字符集合为⼀个新集合,每个字符串在新集合中仅出现⼀次,函数返回新集合中字符串的个数[测试数据与运⾏结果]测试数据:s1集合{“while”,”for”,”switch”,”if”,”continue”}s2集合{“for”,”case”,”do”,”else”,”char”,”switch”}运⾏结果:while for switch if break continue case do else char[含有错误的源代码]#include#includeint merge(char s1[ ][10],char s2[ ][10],char s3[ ][10],int m,int n){int i,j,k=0;for(i=0;is3[k++]=s1[i];for(i=0;i{for(j=0;jif(strcmp(s2[i],s1[j]))break;if(j>m)strcpy(s3[k++],s2[i]);}return k;}void main(){int i,j;char s1*6+*10+=,“while”,”for”,”switch”,”if”,”break”,”continue”-,s2*6+*10+=,“for”,”case”,”do”,”else”,”char”,”switch”-,s3*20+*10+;j=merge(s1[][10],s2[][10],s3[ ][10],6,6);for(i=0;iprintf(“%s “,s3*i+);}【要求】1. 将上述程序录⼊到⽂件myf1.C中,根据题⽬要求及程序中语句之间的逻辑关系对程序中的错误进⾏修改。
2009年9月计算机二级考试C语言真题及答案[1]1
2009年9月计算机二级考试C语言真题一、选择题(每题2分,共计70分)(1)下列数据结构中,属于非线性结构的是A)循环队列B)带链队列C)二叉树D)带链栈(2)下列数据结构中,能够按照“先进后出”原则存取数据的是A)循环队列B)栈C)队列D)二叉树(3)对于循环队列,下列叙述中正确的是A)队头指针是固定不变的B)队头指针一定大于队尾指针C)队头指针一定小于队尾指针D)队头指针可以大于队尾指针,也可以小于队尾指针(4)算法的空间复杂度是指A)算法在执行过程中所需要的计算机存储空间B)算法所处理的数据量C)算法程序中的语句或指令条数D)算法在执行过程中所需要的临时工作单元数(5)软件设计中划分模块的一个准则是A)低内聚低耦合B)高内聚低耦合C)低内聚高耦合D)高内聚高耦合(6)下列选项中不属于结构化程序设计原则的是A)可封装B)自顶向下C)模块化D)逐步求精(7)软件详细设计产生的图如下:该图是A)N-S图B)PAD图C)程序流程图D)E-R图(8)数据库管理系统是A)操作系统的一部分B)在操作系统支持下的系统软件C)一种编译系统D)一种操作系统(9)在E-R图中,用来表示实体联系的图形是A)椭圆形B)矩形C)菱形D)三角形10.(10)有三个关系R,S,和T如下:11.(11)以下叙述中正确的是A)程序设计的任务就是编写程序代码并上机调试B)程序设计的任务就是确定所用的数据结构C)程序设计的任务就是确定所用算法D)以上三种说法都不完整12.(12)以下选项中,能用作用户标识符的是A)voidB)8_8C)_0_D)unsigned13.(13)阅读以下程序#include<stdio.h>main(){int case;float printF;printf("请输入2个数:");scanf("%d%f",&case,&printF);printf("%d%f\n",case,printf);}该程序在编译时产生错误,其出错原因是A)定义语句出错,case是关键字,不能用作用户自定义标识符B)定义语句出错,printF不能用作用户自定义标识符C)定义语句无错,scanf不能作为输入函数使用D)定义语句无措,printf不能输出case的值14.(14)表达式:(int)((double)9/2)-(9)%2的值是A)0B)3C)4D)515.(15)若有定义语句:int x=10;,则表达式x-=x+x的值为A)-20B)-10C)0D)1016.(16)有以下程序#include<stdio.h>main(){int a=1,b=0;printf("%d,",b=a+b);printf("%d",a=2*b);}程序运行后的输出结果是A)0,0B)1,0C)3,2D)1,217.(17)设有定义:int a=1,b=2,c=3;,以下语句中执行效果与其它三个不同的是A)if(a>b)c=a,a=b,b=c;B)if(a>b){c=a,a=b,b=c;}C)if(a>b)c=a;a=b;b=c;D)if(a>b){c=a;a=b;b=c;}18.(18)有以下程序#include<stdio.h>main(){int c=0,k;for(k=1;k<3;k++)switch(k){default:c+=k;case2:c++;break;case4:c+=2;break;}printf("%d\n",c);}程序运行后的输出结果是A)3B)5C)7D)919.(19)以下程序段中,与语句:k=a>b?(b>c?1:0):0;功能相同的是A)if((a>b)&&(b>c))k=1;else k=0;B)if((a>b)||(b>c))k=1;else k=0;C)if(a<=b)k=0;else if(b<=c)k=1;D)if(a>b)k=1;else if(b>c)k=1;else k=0;20.(20)有以下程序#include<stdio.h>main(){char s[]={"012xy"};int i,n=0;for(i=0;s[i]!=0;i++)if(s[i]>'a'&&s[i]<='z')n++;printf("%d\n",n);}程序运行后的输出结果是A)0B)2C)3D)521.(21)有以下程序#include<stdio.h>main(){int n=2,k=0;while(k++&&n++>2);printf("%d%d\n",k,n);}程序运行后的输出结果是A)0 2B)1 3C)57D)1 222.(22)有以下定义语句,编译时会出现编译错误的是A)char a='a';B)char a='\n';C)char a='aa';D)char a='\x2d';23.(23)有以下程序#include<stdio.h>main(){char c1,c2;c1='A'+'8'-'4';c2='A'+'8'-'5';printf("%c,%d\n",c1,c2);}已知字母A的ASCII码为65,程序运行后的输出结果是A)E,68B)D,69C)E,DD)输出无定值24.(24)有以下程序#include<stdio.h>void fun(int p){int d=2;p=d++;printf("%d",p);}main(){int a=1;fun(a);printf("%d\n",a);}程序运行后的输出结果是A)32B)12C)21D)2225.(25)以下函数findmax拟实现在数组中查找最大值并作为函数值返回, 但程序中有错导致不能实现预定功能#define MIN-2147463647int findmax(int x[],int n){int i,max;for(i=0;i<n;i++){max=MIN;if(max<x[i])max=x[i];}return max;}造成错误的原因是A)定义语句int i,max中max未赋值B)赋值语句max=MIN;中,不应该给max赋MIN值C)语句if(max<x[i])max=x[i];中判断条件设置错误D)赋值语句max=MIN;放错了位置26.(26)有以下程序#include<stdio.h>main(){int m=1,n=2,*p=&m,*q=&n,*r;r=p;p=q;q=r;printf("%d,%d,%d,%d\n",m,n,*p,*q);}程序运行后的输出结果是A)1,2,1,2B)1,2,2,1C)2,1,2,1D)2,1,1,227.(27)若有定义语句:int a[4][10],*p,*q[4];且0<=i<4,则错误的赋值是A)p=aB)q[i]=a[i]C)p=a[i]D)p=&a[2][1]28.(28)有以下程序#include<stdio.h>#include<string.h>main(){char str[][20]={"One*World","One*Dream!"},*p=str[1];printf("%d,",strlen(p));printf("%s\n",p);}程序运行后的输出结果是A)9,One*WorldB)9,One*Dream!C)10,One*Dream!D)10,One*World29.(29)有以下程序#include<stdio.h>main(){int a[]={2,3,5,4},i;for(i=0;i<4;i++)switch(i%2){case0:switch(a[i]%2){case0:a[i]++;break;case1:a[i]--;}break;case1:a[i]=0;}for(i=0;i<4;i++)printf("%d",a[i]);printf("\n");}程序运行后的输出结果是A)3344B)2050C)3040D)030 430.(30)有以下程序#include<stdio.h>#include<string.h>main(){char a[10]="abcd";printf("%d,%d\n",strlen(a),sizeof(a));}程序运行后的输出结果是A)7,4B)4,10C)8,8D)10,1031.(31)下面是有关C语言字符数组的描述,其中错误的是A)不可以用赋值语句给字符数组名赋字符串B)可以用输入语句把字符串整体输入给字符数组C)字符数组中的内容不一定是字符串D)字符数组只能存放字符串32.(32)下列函数的功能是fun(char*a,char*b){while((*b=*a)!='\0'){a++;b++;}}A)将a所指字符串赋给b所指空间B)使指针b指向a所指字符串C)将a所指字符串和b所指字符串进行比较D)检查a和b所指字符串中是否有'\0'33.(33)设有以下函数:void fun(int n,char*s){……}则下面对函数指针的定义和赋值均正确的是A)void(*pf)();pf=fun;B)void*pf();pf=fun;C)void*pf();*pf=fun;D)void(*pf)(int,char);pf=&fun;34.(34)有以下程序#include<stdio.h>int f(int n);main(){int a=3,s;s=f(a);s=s+f(a);printf("%d\n",s);}int f(int n){static int a=1;n+=a++;return n;}程序运行后的输出结果是A)7B)8C)9D)1035.(35)有以下程序#include<stdio.h>#define f(x)x*x*xmain(){int a=3,s,t;s=f(a+1);t=f((a+1));printf("%d,%d\n",s,t);}程序运行后的输出结果是A)10,64B)10,10C)64,10D)64,6436.(36)下面结构体的定义语句中,错误的是A)struct ord{int x;int y;int z;};struct ord a;B)struct ord{int x;int y;int z;}struct ord a;C)struct ord{int x;int y;int z;}n;D)struct{int x;int y;int z;}a;37.(37)设有定义:char*c;以下选项中能够使字符型指针C正确指向一个字符串的是A)char str[]="string";c=str;B)scanf("%s",c);C)c=getchar();D)*c="string";38.(38)有以下程序#include<stdio.h>#include<string.h>struct A{int a;char b[10];double c;};struct A f(struct A t);main(){struct A a={1001,"ZhangDa",1098.0};a=f(a);printf("%d,%s,%6.1f\n",a.a,a.b,a.c);}struct A f(struct A t){t.a=1002;strcpy(t.b,"ChangRong");t.c=1202.0;return t;}程序运行后的输出结果是A)1001,ZhangDa,1098.0B)1002,ZhangDa,1202.0C)1001,ChangRong,1098.0D)1002,ChangRong,1202.039.(39)有以下程序int r=8;printf("%d\n",r>>1);输出结果是A)16B)8C)4D)240.(40)下列关于C语言文件的叙述中正确的是A)文件由一系列数据一次排列组成,只能构成二进制文件B)文件由结构序列组成,可以构成二进制文件或文本文件C)文件由数据序列组成,可以构成二进制文件或文本文件D)文件由字符序列组成,只能是文本文件二、填空题(每空2分,共计30分)1.(1)某二叉树有5个度为2的结点以及3个度为1的结点,则该二叉树中共有【1】个结点。
全国计算机等级考试C语言2级笔试题(第30次)-2009年09月
全国计算机等级考试C语言2级笔试题(第30次)-2009年09月全国计算机等级考试C语言2级笔试题-2009年09月第30次考试题目选择题软件技术基础单选题(1-10)下列各题A)、B),C)、D)四个选项中,只有一个选项是正确的。
1.下列数据结构中,属于非线性结构的是()A)循环队列B)带链队列C)二叉树D)带链栈C[解析]根据数据结构中各数据元素之间前后关系的复杂程度,一般将数据结构分为两大类型:线性结构与非线性结构。
线性结构表示数据元素之间为一对一的关系,非线性结构表示数据元素之间为一对多或者多对一的关系。
根据各种结构的定义知二叉树是一种非线性结构。
2.下列数据结构中,能够按照“先进后出”原则取数据的是()A)循环队列B)栈C)队列D)二叉树B[解析]栈是限定只在一端进行插入与删除的线性表,通常称插入、删除的这一端为栈顶,另一端为栈底。
栈顶元素总是后被插入的元素,也是最先被删除的元素;栈底元素总是最先被插人的元素,也是最后才能被删除的元素。
栈是按照“先进后出”或“后进先出”的原则组织数据的。
3.对于循环队列,下列叙述中正确的是()A)队头指针是固定不变的B)队头指针一定大干队尾指针C)队头指针一定小于队尾指针D)队头指针可以大干队尾指针,也可以小于队尾指针D[解析]循环队列是将顺序队列首尾相连形成的,随着插入元素或删除元素的进行,其队头指针及队尾指针是在不断变化的,有时可能会出现队头指针大于队尾指针的情况,也可能是队尾指针大于队头指针,故答案为D)。
4.算法的空间复杂度是指()A)算法在执行过程中所需要的计算机存储空间B)算法所处理的数据量C)算法程序中的语句或指令条数D)算法在执行过程中所需要的临时工作单元数A[解析]算法的空间复杂度是指:算法执行过程中所需的存储空间。
一个算法所占用的存储空间包括算法程序所占的空间、输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间。
5.软件设计中划分模块的一个准则是()A)低内聚低耦合B)高内聚低耦合C)低内聚高耦合D)高内聚高耦合B[解析]模块划分应考虑的因素包括模块之间的耦合和内聚。
全国计算机等级考试二级C语言真题2009年09月
2009年9月全国计算机等级考试二级笔试考试C语言程序设计考试(考试时间90分钟,满分100分)一、选择题((1-10)、(21-40)每题2分,(11)-(20)每题1分,共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确填涂在答案卡相应位置上,答在试卷上不得分。
(1)下列数据结构中,属于非线性结构的是A)循环结构 B)带练队列 C)二叉树 D)带链栈(2)下列数据结构中,能够按照“先进后出”原则存取数据的是A)循环队列 B)栈 C)队列 D)二叉树(3)对于循环队列,下列叙述中正确的A)队头指针是固定不变的B)队头指针一定不大于队尾指针C)队头指针一定小于队尾指针D)队头指针可以大于队尾指针,也可以小于队尾指针(4)算法的空间复杂度是指A)算法在执行过程中所需要的计算机存储空间B)算法所处理的数据量C)算法程序中的语句或指令条数D)算法在执行过程中所需要的临时工作单元数(5)软件设计中划分模块的一个准则是A)低内聚低耦合 B)高内聚低耦合C)低内聚高耦合 D)高内聚高耦合(6)下列选项中不属于结构化程序设计原则的是A)可封装 B)自顶向下 C)模块化 D)逐步求精7、软件详细设计的图如下:该图是:A) N-S图 B) PAD 图 C) 程序流程图 D) E-R图8、数据库管理系统是:A )操作系统的一部分B )在操作系统支持下的系统软件C )一种编译系统D )一种操作系统9、在E-R 图型中,用来表示两个实体联系的图型的是:A) 矩形 B) 椭圆 C )菱形 D )三角形10、有三个关系R 、S 和T 如下:R S TA B C a 1 2 b 2 1c 3 1其中关系T 由关系R 和关系S 通过某种操作得到:该操作为:A) 选择 B) 投影 C )交 D )并11、一下叙述中正确的是:A) 程序设计的任务是编写程序代码并上机调试。
B) 程序设计的任务是确定所用的数据结构。
全国计算机等级考试二级C语言真题2009年9月
全国计算机等级考试二级C语言真题2009年9月(总分:100.00,做题时间:90分钟)一、{{B}}选择题{{/B}}(总题数:40,分数:70.00)1.下列数据结构中,属于非线性结构的是( )。
(分数:2.00)A.循环队列B.带链队列C.二叉树D.带链栈√解析:[解析] 一个算法的空间复杂度,一般是指执行这个算法所需的存储空间。
一个算法所占用的存储空间包括算法程序所占用的空间、输入的初始数据所占用的存储空间及算法执行过程中所需要的额外空间。
2.下列数据结构中,能够按照“先进后出”原则存取数据的是( )。
(分数:2.00)A.循环队列B.栈√C.队列D.二叉树解析:[解析] 数据的存储结构,又称为数据的物理结构,是数据的逻辑结构在计算机中的存放形式,数据的存储结构有顺序结构、链式结构、散列结构和索引结构等。
3.对于循环队列,下列叙述中正确的是( )。
(分数:2.00)A.队头指针是固定不变的B.队头指针一定大于队尾指针C.队头指针一定小于队尾指针√D.队头指针可以大于队尾指针,也可以小于队尾指针解析:[解析] 对二叉树的前序遍历是指先访问根结点,然后访问左子树,最后访问右子树,并且,在访问左、右子树时,先访问根结点,再依次访问其左、右子树。
4.算法的空间复杂度是指( )。
(分数:2.00)A.算法在执行过程中所需要的计算机存储空间B.算法所处理的数据量C.算法程序中的语句或指令条数D.算法在执行过程中所需要的临时工作单元数√解析:[解析] 软件是运行在计算机硬件之上的逻辑实体,包括程序、数据和相关的文档,软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制。
5.软件设计中划分模块的一个准则是( )。
(分数:2.00)A.低内聚低耦合√B.高内聚低耦合C.低内聚高耦合D.高内聚高耦合解析:[解析] 耦合性是模块间互相连接的紧密程度的度量,取决于各个模块之间接口的复杂度、调用方式以及哪些信息通过接口。
2009年春二级C语言上机试卷(4套)
2009年春C语言上机试卷第04套一、改错题(20分)【程序功能】函数HolandFlag的功能是:已知在flag指向的有n个元素的字符数组中,每个元素的值是字符‘R’、‘W’或‘B’中的一个。
函数按照‘R’、‘W’、‘B’的顺序重新排列flag数组中所有元素的值。
算法提示:若flag数组初始值为RBWBRWRBW则在flag数组中出现数据交换的步骤与效果为:第1步:flag[1]与flag[8]交换后数据为RWWBRWRBB第2步:flag[3]与flag[6]交换后数据为RWWRRWBBB第3步:flag[1]与flag[4]交换后数据为RRWRWWBBB第4步:flag[2]与flag[3]交换后数据为RRRWWWBBB【测试数据与运行结果】测试数据:RBWBRWRBW运行结果:RRRWWWBBB【含有错误的源程序】#include<stdio.h>#include<string.h>#define 10 Nvoid HolandFlag(char flag[], int num){ int i,j,k,m;char c,color[3]={B,W,R};m=num;for(k=0;k<2;k++)for(i=0;i<m;i++)if(flag[i]==color[k]){ for(j=m-1;j>1;j--)if(flag[j]==color[k]){ c=flag[i]; flag[i]=flag[j];flag[j]=c;m--;break;}if(i==j) m=i;}}void main(){ char flag[N]=”RBWBRWRBW”;int i,k,n=strlen(flag);HotlandFlag(flag[N],n);for(i=0;i<n;i++)printf(“%c”,flag[i]);}二、编程题(20分)【程序功能】用一组整数验证命题:“任意一个百位数字与个位数字不同的三位正整数n1在经过以下操作后一定会变换到1089:将n1的百位数字与个位数字交换得到n2;求n1与n2差的绝对值得到n3;将n3的百位数字与个位数字交换得到n4;求n3与n4的和得到n5,n5一定是1089。
2009年上半年全国计算机等级考试二级C语言笔试试题及答案
2009年上半年全国计算机等级考试二级C语言笔试试题及答案一、选择题(每题2分,共计70分)1.(1)下列叙述中正确的是A)栈是先进先出的线性表B)队列是"先进后出"的线性表C)循环队列是非线性结构D)有序线性表即可以采用顺序存储结构,也可以采用链式存储结构2.(2)支持子程序调用的数据结构是A)栈B)树C)队列D)二叉树3.(3)某二叉树有5个读为2的结点,则该二叉树中的叶子结点数是A)10 B)8 C)6 D)44.(4)下列排序方法中,最坏情况下比较次数最少的是A)冒泡排序B)简单选择排序C)直接插入排序D)堆排序(5)软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。
下列属于应用软件的是A)编译程序B)操作系统C)教务管理系统D)汇编程序(6)下面叙述中错误的是A)软件测试的目的是发现错误并改正错误B)对被调试程序进行"错误定位"是程序调试的必要步骤C)程序调试也成为DebugD)软件测试应严格执行测试计划,排除测试的随意性(7)耦合性和内聚性是对模块独立性度量的两个标准。
下列叙述中正确的是A)提高耦合性降低内聚性有利于提高模块的独立性B)降低耦合性提高内聚性有利于提高模块的独立性C)耦合性是指一个模块内部各个元素间彼此结合的紧密程度D)内聚性是指模块间互相连接的紧密程度(8)数据库应用系统中的核心问题是A)数据库设计B)数据库系统设计C)数据库维护D)数据库管理员培训(9)有两个关系R,S如下:由关系R通过运算得到关系S,则所使用的运算为A)选择B)投影C)插入D)连接(10)将E-R图转换为关系模式时,实体和联系都可以表示为A)属性B)键C)关系D)域11.(11)一下选项中合法的标识符是A)1_1 B)1-1 C)_11 D)1_ _(12)若函数中有定义语句:int k;,则A)系统将自动给k赋初值0 B)这是k中的值无定义C)系统将自动给k赋初值-1 D)这时k中无任何值(13)一下选项中,能用作数据常量的是A)o115 B)0118 C)1.5e1.5 D)115L(14)设有定义:int x=2;,一下表达式中,值不为6的是A)x*=x+1 B)X++,2*xC)x*=(1+x) D)2*x,x+=2(15)程序段:int x=12; double y=3.;printf("%d%8.6f",x,y);的输出结果是A)123. B)12 3.C)12,3. D)123.(16)若有定义语句:double x,y,*px,*py;执行了px=&x;py=&y;之后,正确的输入语句是A)scanf("%f%f",x,y); B)scanf("%f%f" &x,&y);C)scanf("%lf%le",px,py); D)scanf("%lf%lf",x,y);(17)一下是if语句的基本形式:if(表达式) 语句其中"表达式"A)必须是逻辑表达式B)必须是关系表达式C)必须是逻辑表达式或关系表达式D)可以是任意合法的表达式(18)有以下程序#include <stdio.h>main(){ int x;scanf("%d",&x);if(x<=3) ; elseif(x!=10) printf("%d\n",x);}程序运行时,输入的值在哪个范围才会有输出结果A)不等于10的整数B)大于3且不等于10的整数C)大于3或等于10的整数D)小于3的整数(19)有以下程序#include <stdio.h>main(){ int a=1,b=2,c=3,d=0;if (a==1 && b++==2)if (b!=2||c--!=3)printf("%d,%d,%d\n",a,b,c);else printf("%d,%d,%d\n",a,b,c);else printf("%d,%d,%d\n",a,b,c);}程序运行后输出结果是A)1,2,3 B)1,3,2 C)1,3,3 D)3,2,1(20)一下程序段中的变量已正确定义for(i=0;i<4;i++,j++)for(k=1;k<3;k++); printf("*");程序段的输出结果是A)******** B)**** C)** D)*(21)有以下程序#include <stdio.h>main(){ char *s={"ABC"};do{ printf("%d",*s%10);s++;}while (*s);}注意:字母A的ASCII码值为65。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2009年C++上机考试试题1.编写一个使用冒泡排序法进行排序操作的函数模板,并对整型数据和字符型数据进行排序。
2.编写一个程序计算球的表面积和体积。
要求:(1)定义一个基类,至少含有一个数据成员半径,并设为保护成员;(2)定义基类的派生类球,含有求表面积和体积的成员函数和输出函数;(3)编写主函数,求球的表面积和体积。
(球的表面积计算公式:S=4πr^2, r为球半径。
)(球的体积计算公式:V=(4/3) πr^3, r为球半径。
)3.编写一个程序计算圆柱的表面积和体积。
要求:(1)定义一个基类,至少含有一个数据成员半径,并设为保护成员;(2)定义基类的派生类圆柱,含有求表面积和体积的成员函数和输出函数;(3)编写主函数,求圆柱的表面积和体积。
4.编写一个程序计算圆锥的体积。
要求:(1)定义一个基类,至少含有一个数据成员半径,并设为保护成员;(2)定义基类的派生类圆锥,含有求体积的成员函数和输出函数;(3)编写主函数,求圆锥的体积。
(圆锥体积:3分之1 × 圆周率×r的平方× 圆锥的高)5.设计并测试一个名为Ellipse的椭圆类,其数据成员为外切矩形的左上角与右下角两个点的坐标,计算并输出椭圆的面积。
(椭圆面积公式S=圆周率×a×b(其中a,b分别是椭圆的长半轴,短半轴的长)6.声明一个名为Ellipse的椭圆类,其公有的(public)数据成员为椭圆的外切矩形的左上角与右下角两个点的坐标;声明两个Ellipse类的对象,分别输入顶点坐标,计算并输出椭圆的面积;(椭圆面积公式S=圆周率×a×b(其中a,b分别是椭圆的长半轴,短半轴的长)7.声明一个名为Ellipse的椭圆类,其私有的(private)数据成员为椭圆的外切矩形的左上角与右下角两个点的坐标,声明公有的(public)成员函数访问椭圆的外切矩形的顶点坐标;声明两个Ellipse类的对象,分别输入顶点坐标,计算并输出椭圆的面积;(椭圆面积公式S=圆周率×a×b(其中a,b分别是椭圆的长半轴,短半轴的长)8.声明一个名为Ellipse的椭圆类,其私有的(private)数据成员为椭圆的外切矩形的左上角与右下角两个点的坐标,设计构造函数Ellipse(int,int,int,int)对椭圆的外切矩形的顶点坐标赋值,设计函数Area()计算椭圆的面积;声明两个Ellipse类的对象,计算并输出椭圆的面积。
(椭圆面积公式S=圆周率×a×b(其中a,b分别是椭圆的长半轴,短半轴的长)9.编写并测试一个函数,该函数实现求数列运算中从n个不同的数中取r个数的所有选择的个数。
要求:(1)将main()函数放在一个文件中;(2)将另外两个函数fn(int n) ,Cnr(int n, int r)放在另一个文件中;(3)将函数原型说明放在一个头文件中;(4)建立一个项目,将这三个文件加到该项目中。
10.设计一个Employee类,并在Employee类中增加一个静态数据成员来设置本公司员工编号基数,新增加的员工编号将在创建对象的同时自动在基数上增加。
另外,将Employee类的声明部分和实现部分分成两个文件来实现。
编程实现并测试该类。
11.设计一个点类point,该类具有两个实数坐标。
希望主程序使用这个类完成下述功能:(l)主程序为类point申请10个连续存储空间。
(2)要求调用一个函数Set()从键盘输入10个对象的属性,并顺序存入申请的内存中。
(3)要求调用一个函数Display()显示10个对象的值。
(4)要求调用一个函数Lenth(),计算将这些点连成一条折线时,这条折线的长度。
(5)程序结束时,删除申请的内存。
(6)输出析构对象(动态对象或堆对象)的执行顺序。
设计该类和各个函数并验证运算结果的正确性。
12.用成员函数重载运算符,使对整型的运算符=、+、-、*、/ 适用于分数运算。
要求:(1)输出结果是最简分数(可以是带分数);(2)分母为1,只输出分子。
13.用友元函数重载运算符,使对整型的运算符=、+、-、*、/ 适用于分数运算。
(1)输出结果是最简分数(可以是带分数);(2)分母为1,只输出分子。
14.定义一个CPU类,包含等级(rank)、频率(freqlaency)、电压(voltage)等属性,有两个公有成员函数run、stop。
其中,rank为枚举类型CPU—Rank,定义为enum CPU—Rank{Pl=1,P2,P3,P4,P5,P6,P7},frequency为单位是MHz的整型数,voltage为浮点型的电压值。
设计构造函数和析构函数并输出其调用顺序。
15.编写一个学生和教师数据输入和显示程序。
其中,学生数据有编号、姓名、班级和成绩,教师数据有编号、姓名、职称和部门。
要求:(1)将编号、姓名输入和显示设计成一个类person;(2)设计类person的派生类:学生类student和教师类teacher;(3)各个类的声明放在相应的头文件中(*.h),类的实现放在相应的实现文件中(*.cpp):person.h,person.cpp,student.h,student.cpp,teacher.h,teacher.cpp;(4)编写一个主文件(mainsys.cpp),在该文件中分别定义student、teacher的对象,完成相应功能。
16.分别声明Teacher(教师)类和Cadre(干部)类,采用多重继承方式由这两个类派生出新类Teacher_Cadre(教师兼干部)。
要求:(1)在两个基类中都包含一部分相同名字的数据成员name(姓名),age(年龄)和成员函数display()。
(2)在Teacher类中还包含数据成员title(职称),在Cadre类中还包含数据成员post(职务),在Teacher_Cadre(教师兼干部)中还包含数据成员wages(工资)。
(3)在派生类Teacher_Cadre的成员函数show中调用Teacher类中的display函数,输出姓名、年龄、职称,然后再用cout语句输出职务与工资。
17.写一个程序,定义抽象基类Shape,它有三个公有派生类:类Circle用来描述圆形,类Rectangle用来描述矩形,类Triangle用来描述三角形。
用虚函数area( )分别计算几种图形的面积,并求它们的和。
18.编写一个求绝对值的函数模板,并测试。
19.编写一个函数模板,确定其4个参数的最大值,并测试。
20.编写一个函数模板,确定其4个参数的最小值,并测试。
21.使用函数模板实现对不同类型数组求平均值的功能,并在main函数中分别求一个整型数组和一个单精度浮点型数组的平均值。
22.编写求阶乘n!的函数,当用户的输入太大时(如51),会出现错误,使用异常处理机制来解决这一问题;如果n小于零,也抛掷一个异常进行处理。
23. 编写一个程序,用于根据用户输入的命令行参数数量来计算长方形、正方形、三角形的面积。
如果输入的参数为一个、二个、三个则它们应分别对应正方形、长方形、三角形,如果没有参数,则通过异常处理方法显示错误消息。
24.设置格式,显示输出26个大写英文字母的ASCII码(以十六进制数的形式输出,每十个一行)。
25.从键盘输入若干行字符,存入磁盘文件file2.txt中。
同时,将file2.txt文件中的大写字母改为小写字母,复制到另一个文件file3.txt中并保存。
26.有两个矩阵a和b,均为2行3列。
求两个矩阵之和。
重载运算符“+”,使之能用于矩阵相加。
如:c=a+b。
并重载输出运算符用于输出计算结果。
27.读入并显示一个文本文件中的内容,分别统计并输出文件英文字符和数字字符的个数以及文件的行数。
然后将其中的英文字母大小写取反后,写入新创建的另一个文件中。
28.构造一个日期时间类(Timedate ),数据成员包括年、月、日和时、分、秒,函数成员包括设置日期时间和输出时间,其中年、月用枚举类型,并完成测试。
(包括用成员函数和用普通函数)29.设计并测试一个矩形类(Rectangle ),属性为矩形的左下与右上角的坐标,矩形水平放置。
操作为计算矩形周长与面积。
测试包括用成员函数和普通函数。
30.定义一个圆类(Circle ),属性为半径(radius )、圆周长和面积,操作为输入半径并计算周长、面积,输出半径、周长和面积。
要求定义构造函数(以半径为参数,默认值为0 ,周长和面积在构造函数中生成)和复制构造函数。
31.定义一个复数类Complex,重载运算符“+”,使之能用于复数的加法运算。
将运算符函数重载为非成员、非友元的普通函数。
编写程序,求两个复数之和。
32.定义一个复数类Complex,重载运算符“+”,“-”,“*”,“/”,使之能用于复数的加、减、乘、除。
运算符重载函数作为Complex类的成员函数。
编程序,分别求两个复数之和、差、积和商。
33.定义一个复数类Complex,重载运算符“+”,使之能用于复数的加法运算。
参加运算的两个运算量可以都是类对象,也可以其中有一个是整数,顺序任意。
例如:c1+c2,i+c1,c1+i 均合法(设i为整数,c1,c2为复数)。
编程序,分别求两个复数之和、整数和复数之和。
34.请编写程序,处理一个复数与一个double数相加的运算,结果存放在一个double型的变量d1中,输出d1的值,再以复数形式输出此值。
定义Complex(复数)类,在成员函数中包含重载类型转换运算符:operator double( ){return real;}35.定义一个Teacher(教师)类和一个Student(学生)类,二者有一部分数据成员是相同的,例如num(号码),name(姓名),sex(性别)。
编写程序,将一个Student对象(学生)转换为Teacher(教师)类,只将以上3个相同的数据成员移植过去。
可以设想为:一位学生大学毕业了,留校担任教师,他原有的部分数据对现在的教师身份来说仍然是有用的,应当保留并成为其教师的数据的一部分。