春江苏省二级C++考试真题附答案.docx
- 文档编号:8314945
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:17
- 大小:22.94KB
春江苏省二级C++考试真题附答案.docx
《春江苏省二级C++考试真题附答案.docx》由会员分享,可在线阅读,更多相关《春江苏省二级C++考试真题附答案.docx(17页珍藏版)》请在冰豆网上搜索。
春江苏省二级C++考试真题附答案
江苏省高校计算机等级考试2009年春季考试试题
第二部分 C程序设计
21.以下定义和声明中,语法均有错误的是____(21)_________
①int j(int x){}②int f(int f){} ③int 2x=1; ④struet for{int x;};
A.②③ B.③④ C.①④ D.①②③④
22.设有定义和声明如下:
#define d 2
int x=5;float Y =3.83;char c='d';
以下表达式中有语法错误的是_(22)______
A.x++ B.y++ C.c++ D.d++
23.以下选项中,不能表示函数 功能的表达式是___(23)______。
A.s=(X>0)?
1:
(X<0)?
-1:
0 B.s=X<0?
-1:
(X>0?
1:
0)
C.s=X<=0?
-1:
(X==0?
0:
1) D.s=x>0?
1:
x==0?
0:
-1
24.以下语句中有语法错误的是____(24)______ 。
A.printf("%d",0e); B.printf("%f",0e2);
C.printf("%d",Ox2); D.printf("%s","0x2");
25.以下函数定义中正确的是___(25)_________ 。
A.double fun(double x,double y){}
B.double fun(double x;double Y){}
C.double fun(double x,double Y);{}
D.double fun(double X,Y){}
26.若需要通过调用f函数得到一个数的平方值,以下f函数定义中不能实现该功能的
是_____(26)______ 。
A.void f(double *a){*a=(*a)*(*a);}
B.void f(double a,double *b){*b=a*a;}
C.void f(double a,double b){b=a*a;}
D.double f(double a){return a*a;}
27.设有声明"int P[10]={1,2},i=0;",以下语句中与"P=P[i+1],i++;"等价的
是____(27)_______。
A.P=P[i++]; B.P[++i]=P;
C.P[++i]=P[i+1]; D.i++,P[i-1]=P;
28.已知有声明"char a[]="It is mine",*p="It is mine";",下列叙述中错误的是28 。
A.strcpy(a,"yes")和strcpy(p,"yes")都是正确的
B.a="yes"和p="yes"都是正确的
C.*a等于*p
D.sizeof(a)不等于sizeof(p)
29.已知有声明"int a[3][3]={0},*p1=a[1],(*p2)[3]=a;",以下表达式中与
"a[1][1]=1"不等价的表达式是29。
A.*(p1+1)=1 B.p1[1][1]=1
C.*(*(p2+1)+1)=1 D.p2[1][1]=1
30.设有结构定义及变量声明如下:
struct product
{char code[5];
float price;
}y[4]={"100",100}"
以下表达式中错误的是____(30)_____。
A.(*y).code[0]='2'; B.y[0].code[0]='2';
C.y->price=10; D.(*y)->price=10;
二、填空题(将答案填写在答题纸的相应答题号内,每个答案只占一行,共30分)
●基本概念
1.在一个C语言源程序中,必不可少的是
(1) 。
2.若有声明"int x;"且sizeof(x)的值为2,则当x值为( 2 )时"x+1>x"为假。
3.若有声明"float y=3.14619;int x;",则计算表达式"x=y*100+0.5,Y=x/100.0"后y
的值是(3) 。
4.执行以下程序段中的语句"k=M*M+1"后k的值是(4)
#define N 2
#define M N+1
k=M*M+1:
●阅读程序
5.以下程序运行时输出结果是(5)
#include
void main()
{double x[3]={1.1,2.2,3.3},Y;
FILE *fp=fopen("d:
\\a.out","wb+");
fwrite(x,sizeof(double),3,fp)"
fseek(fp,2L*sizeof(double),SEEK_SET);
fread(&y,sizeof(double),1,fp)"
printf("%.1f",y);
fclose(fp)"
}
6.以下程序运行时输出结果是(6)。
#include
void main()
{ int k=5,n=0;
while(k>0)
{ switch(k)
{ case 1:
case 3:
n+=1;k--;break"
default:
n=0;k--;
case 2:
case 4:
n+=2;k--;break;
}
}
printf("%3d",n);
}
}
7.以下程序运行时输出结果是(7) 。
#include
void change(int x,int Y,int *z)
{ int t;
t=x;x=y;y=*z;*z=t;
}
void main()
{ int x=18,y=27,z=63;
change(x,y,&z);
printf("x=%d,y=%d,z=%d\n",x,y,z);
}
8.以下程序运行时输出结果是(8) 。
#include
int f(int x,int y)
{retum x+y; }
void main()
{double a=5.5,b=2.5;
printf("%d",f(a,b));
}
9.以下程序运行时输出结果中第-行是 (9) ,第三行是(10) 。
#include
define N 5
void main()
{ static char a[N][N];
int i,j,t,start=0,end=N-1;
char str[]="123",ch;
for(t=0;t<=N/2;t++)
{ ch=str[t];
for(i=j-start;i for(j=start;j for(i=end;i>start;i--)a[j]=ch; for(j=end;j>start;j--)a[j]=ch; if(start==end) a[start][end]=ch; start++,end--; } for(i=O;i { for(j=0;j printf("%c",a[j]); printf("\n"); } } 10.以下程序运行时输出结果中第一行是(11),第二行是(12)。 #include void fun(int x,int P[],int *n) { int i,j=O; for(i=1;i<=x/2;i++) if(x%i==0)p[j++]=i; *n=j: } void main() {int x,a[10],n,i; fun(27,a,&n); for(i=0;i printf("%5d",a); printf("\n%5d",n); } 11.以下程序运行时输出结果是(11) 。 #include #include int count(char s[]) { int i=0; if(s=='\0') return 0; while(isalpha(s))i++; while(! isalpha(s)&&s! ='\O')i++; return 1+count(&s); } void main() {char line[]="one world,one dream."; printf("%d",count(line)); } . 12.以下程序运行时输出结果中第一行是 (14) ,第二行是(15) #include int fun(char *a,char *b) {int m=0,n=0: while(*(a+m)! ='\0')m++; while(b[n]) { *(a+m)=b[n];m++;n++; } *(a+m)='\0'; return m; } void main() {char s1[20]="yes",s2[5]="no"; printf("%d\n",fun(s1,s2)); puts(s1); } 13.以下程序运行时输出结果中第-行是 (16) ,第二行是 (17) ,第三行是( 18 ) #include typedef struct{int x;int y;}S; void fun(S pp[],int n) {int i,j,k;S t; for(i=0;i { k=i; for(j=i+1;j if((pp[j].x k=j; if(k! =i) {t=pp;pp=pp[k];pp[k]=t;} } } void main() {S a[5]={{3,2},{3,1},{1,2},{2,4},{2,3}}; int i,n=5; fun(a,n); for(i=0;i printf("%d,%d\n",a.x,a.y); } . ●完善程序 14? 以下程序求一组整数的最大公约数。 试完善程序以达到要求的功能。 #include int gcd(int a,int b) i {int r; while(_____(19)_______) {r=a%b;a=b;(_____20_____);} return a; } void main() {int x,i,a[6]={12,56,48,32,16,24}; x= (___21_____) for(i=1;i<6;i++) x=gcd(___(22)_____,a); printf("(%d,",a[O]); for(i=1;i<5;i++) printf("%d,",a); printf("%d)=;d\n",a[5],x); } 15.以下程序完成两个长正整数的加法运算并输出计算结果。 函数add模拟手工加法运 算的过程,将a和b指向的数组中存储的两个以字符串形式表示的n位正整数相加,并将运算 结果以字符串形式保存到c指向的数组中。 main函数中pl和p2数组分别存放被加数字符串 和加数字符串,p3数组存放运算结果字符串。 若p1中的字符串为"1000000001"、p2中的字 符串为"9000000009",调用add函数后p3得到的是以字符串表示的这两个整数相加的结果 "10000000010"。 试完善程序以达到要求的功能。 #include "stdio.h" #include "string.h" void add(char a[],char b[],char c[],__(23)____) {int i,k; c[n]='\0';k=0; for(i=n-1;i>=0;i--) {c=(a-'O')+(b-'0')+k; k=______(24)______; c=c%10+'0'; } if(k) {for(i=n+1;i>O;i--) c=___(25)____; c=k+'0'; } } void main() {char p1[80]="1000000001",pz[80]="9000000009",p3[80]; int i,x=strlen(p1),y=strlen(p2); if(x { for(i=x;i>=0;i--) {p1[i+y-x]=p1;p1='0';} _____(26)______; } if(x>y) for(i=y;i>=0;i--) {p2[i+x-y]=p2;p2='0';} add(p1,p2,p3,x); puts(p3); } 16.以下程序创建-个链表并实现数据统计功能。 函数WORD *create(char a[][20], int n)创建-个包含n个结点的单向链表,结点数据来自a指向的数组中存储的n个单词 (字符串)。 函数void count(WORD *h)统计h指向的单向链表中不同单词各自出现的次数, 将统计结果保存到局部数组c中并输出。 程序运行时输出结果为"red: 1 green: 2 blue: 3" 试完善程序以达到要求的功能。 #include "stdio.h" #include "stdlib.h" #include "string.h" typedef struct w {char word[20]; struct w *next: }WORD; WORD *create(char a[][20],int n) {WORD *p1,*p2,*h=0;int i; for(i=0;i {p1=(WORD *)malloc(sizeof(WORD)); strcpy(___(27)___,a); if(h==O) h=p2=p1: else {p2->next=p1;p2=pl;} } p2->next=_____(28)____; return h; } void count(WORD *h) { struct {char word[20]; int num; }c[6]={0}; int m=0,i; while(h) {if(m==O) {strcpy(c[0].word,h->word); c[0].num=1;m++; } else {for(i=O;i if(strcmp(c.word,h->word)==0) { ______(29)_____ break; } if(i>=m) {strcpy(c[m].word,h->word); c[m++].num=1; } } ____(30)_____; } for(i=0;i printf("%s: %d",c.word,c.num); } void main() {char words[6][20]={"red","green","blue","blue","green","blue"}; WORD *head=0: head=create(words,6); count(head); } 第一部分计算机基础知识 1. 在下列有关现代信息技术的一些叙述中,正确的是 1 。 A.集成电路是20世纪90年代初出现的,它的出现直接导致了微型计算机的诞生 B.集成电路的集成度越来越高,目前集成度最高的已包含几百个电子元件 C.目前所有数字通信均不再需要使用调制解调技术和载波技术 D.光纤主要用于数字通信,它采用波分多路复用技术以增大信道容量‘ . 2. 最大的10位无符号二进制整数转换成八进制数是 2 .。 A.1023 B.1777 C.1000 D.1024 3. 在下列有关目前PC机CPU的叙述中,错误的是 3 。 A.CPU芯片主要是由Intel公司和AMD公司提供的 B."双核"是指PC机主板上含有两个独立的CPU芯片 C.Pentium 4微处理器的指令系统由数百条指令组成 D.Pentium 4微处理器中包含一定容量的Cache存储器 4. 在下列有关当前PC机主板和内存的叙述中,正确的是 4 。 A.主板上的BIOS芯片是一种只读存储器,其内容不可在线改写 B.绝大多数主板上仅有一个内存插座,因此PC机只能安装一根内存条 C.内存条上的存储器芯片属于SRAM(静态随机存取存储器) D.目前内存的存取时间大多在几个到十几个ns(纳秒)之间 5. 在下列有关PC机辅助存储器的叙述中,正确的是 5 。 A.硬盘的内部传输速率远远大于外部传输速率 B.对于光盘刻录机来说,其刻录信息的速度一般小于读取信息的速度 C.使用USB 2.0接口的移动硬盘,其数据传输速率大约为每秒数百兆字节 D.CD-ROM的数据传输速率一般比USB 2.0还快 6. 在下列PC机I/O接口中,数据传输速率最快的是 6 。 A.USB 2.0 B.IEEE-1394 C.IrDA (红外) D.SATA 7. 计算机软件可以分为商品软件、共享软件和自由软件等类型。 在下列相关叙述中,错误的是 7 。 A.通常用户需要付费才能得到商品软件的使用权,但这类软件的升级总是免费的 B.共享软件通常是一种"买前免费试用"的具有版权的软件 C.自由软件的原则是用户可共享,并允许拷贝和自由传播 D.软件许可证是一种法律合同,它确定了用户对软件的使用权限 8. 人们通常将计算机软件划分为系统软件和应用软件。 下列软件中,不属于应用软件类型的是 8 A.AutoCAD B.MSN C.Oracle D.Windows Media Player 9. 在下列有关Windows 98/2000/XP操作系统的叙述中,错误的是 9 。 A.系统采用并发多任务方式支持多个任务在计算机中同时执行 B.系统总是将一定的硬盘空间作为虚拟内存来使用 C.文件(夹)名的长度
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 江苏省 二级 C+ 考试 真题附 答案