PDF版下载(非扫描): 2005年4月计算机二级C语言真题
if(a%2= =1) {a+ =5; continue;} a=3; } printf("%d\n",b); } A)3 B)4 C)5 D)6 (42)下列程序的输出结果是( )。 main( ) { char s[ ]="159",*p; p=s; printf("%c",*p+ +); printf("%c",*p+ +); } A)15 B)16 C)12 D)59 (43)有下列函数: fun(char *a,char *b) { while(*a! ='\0')&&(*b! = '\0')&&(*a= =*b)} { a+ +; b+ +;} return(*a-*b); } 该函数的功能是( )。 A)计算a 和b 所指字符串的长度之差 B)将b 所指字符串复制到a 所指字符串中 C)将b 所指字符串连接到a 所指字符串后面 D)比较a 和b 所指字符串的大小 (44)有下列程序: main( ) { int num[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},i,j; for(i=0;i<4;i+ +) { for(j=0;j<i;j+ +) printf("%4c",' '); for(j=__;j<4;j+ +) printf("%4d",num[i][j]); printf("\n"); } } 若要按下列形式输出数组右上半三角。 1 2 3 4 6 7 8 11 12 16 则在程序下划线处应填入的是( )。 A)i-1 B)i C)i+1 D)4-i (45)下列程序的输出结果是( )。 point(char*p){ p+ =3; } main( ) { char b[4]={'a','b','c','d'},*p=b; point(p); printf("%c\n",*p); } A)a B)b C)c D)d (46)程序中若有下列说明和定义语句: char fun(char *); main( ) { char *s="one",a[5]={0},(*f1)( )=fun,ch; … } 下列选项中对fun()函数的正确调用语句是( )。 A)(*fl)(a); B)*fl(*s); C)fun(&a); D)ch=*fl(s); (47)有下列结构体说明和变量定义,如图所示,指针p、q、r 分别指向此链表中的三个连 续结点。
 struct node { int data; struct node *next; }*p,*q,*r; 现要将q 所指结点从链表中删除,同时要保持链表的连续,下列不能完成指定操作的 语句是( )。 A)p->next=q->next; B)p-next=p->next->next; C)p->next=r; D)p=q->enxt; (48)下列对结构体类型变量td 的定义中,错误的是( )。 A)typedef struct aa B)struct aa { int n; { int n; float m; float m; }AA; }td; AA td; struct aa td; C)struct D)struct { int n; { int n; float m; float m; }aa; }td; struct aa td; (49)下列与函数fseek(fp,0L,SEEK_SET)有相同作用的是( )。 A)feof(fp) B)ftell(fp) C)fgetc(fp) D)rewind(fp) (50)有下列程序: #include <stdio.h> void WriteStr(char *fn,char *str) { FILE *fp; fp=fopen(fn,"w"); fputs(str,fp); fclose(fp); } main( ) { WriteStr("t1.dat","start"); WriteStr("t1.dat","end"); } 程序运行后,文件t1.dat 中的内容是( )。 A)start B)end C)startend D)endrt 二、填空题(每空2 分,共40 分) (1)某二叉树中度为2 的结点有18 个,则该二叉树中有【1】个叶子结点。 (2)在面向对象方法中,类的实例称为【2】。 (3)诊断和改正程序中错误的工作通常称为【3】。 (4)在关系数据库中,把数据表示成二维表,每一个二维表称为【4】。 (5)问题处理方案正确而完整的描述称为【5】。 (6)下列程序运行时若从键盘输入:10 20 30<CR>。输出结果是【6】。 #include <stdio.h> main( ) { int i=0, j=0, k=0; scanf("%d%*d%d",&i,&j,&k); printf("%d%d%d\n",i,j,k); } (7)下列程序运行后的输出结果是【7】。 #define S(x) 4*x*x+1 main( ) { int i=6, j=8; printf("%d\n",S(i+j)); } (8)下列程序运行后的输出结果是【8】。 main( ) { int a=3,b=4,c=5,t=99; if(b<a&&a<c)t=a;a=c;c=t; if(a<c&&b<c)t=b,b=a,a=t; printf("%d%d%d\n",a,b,c); } (9)下列程序运行后的输出结果是【9】。 main( ) { int a, b,c; a=10; b=20; c=(a%b<1)‖(a/b>1); printf("%d %d %d\n",a,b,c); } (10)下列程序运行后的输出结果是【10】。 main( ) { char c1,c2; for(c1='0',c2='9';c1<c2;c1+ +,c2--) printf("%c%c",c1,c2); printf("\n"); } (11)已知字符A 的ASCII 代码值为65,下列程序运行时若从键盘输入:B33<CR>。则输 出结果是 【11】。 #include <stdio.h> main( ) { char a,b; a=getchar( );scanf("%d", &b); a=a-'A'+'0'; b=b*2; printf("%c %c\n",a,b); } (12)下列程序中,fun()函数的功能是求3 行4 列二维数组每行元素中的最大值。请填空。 void fun(int, int, int(*)[4],int*); main( ) { int a[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i; fun(3,4,a,b); for(i=0;i<3;i+)printf("%4d",b[i]); printf("\n"); } void fun(int m, int n, int ar[ ][4], int *br) { int i, j, x; for(i=0;i<m;i+ +) { x=ar[i][0]; for(j=0;j<n;j+ +) if(x<ar[i][j]) x=ar[i][j]; 【12】=x; } } (13)下列程序运行后的输出结果是【13】。 void swap(int x,int y) { int t; t=x;x=y;y=t;printf("%d %d ",x,y); } main( ) { int a=3,b=4; swap(a,b); printf("%d %d\n",a,b); } (14)下列程序运行后的结果是【14】。 #include <string.h> void fun(char *s, int p, int k) { int i; for(i=p;i<k-1;i+ +) s[i]=s[i+2]; } main( ) { char s[ ]="abcdefg"; fun(s,3,strlen(s)); puts(s); } (15)下列程序运行后的输出结果是【15】。 #include <string.h> main( ) { char ch[ ]="abc",x[3][4]; int i; for(i=0;i<3;i+ +) strcpy(x[i],ch); for(i=0;i<3;i+ +) printf("%s",&x[i][i]); printf("\n"); } (16)下列程序运行后的输出结果是【16】。 fun(int a) { int b=0; static int c=3; b+ +; c+ +; return(a+b+c); } main( ) { int i, a=5; for(i=0;i<3;i+ +)printf("%d%d",i,fun(a)); printf("\n"); } (17)下列程序运行后的输出结果是【17】。 stuct NODE { int k; struct NODE *link;}; main( ) { struct NODE m[5],*p=m,*q=m+4; int i=0; while(p! =q) { p->k=+ +i; p+ +; q->k=i+ +; q--; } q->k=i; for(i=0;i<5;i+ +) printf("%d",m[i].k); printf("\n"); } (18)下列程序中huiwen()函数的功能是检查一个字符串是否是回文,当字符串是回文时, 函数返回字符串:yes!,否则函数返回字符串:no!,并在主函数中输出。所谓回文即 正向与反向的拼写都一样,例如:adgda。请填空。 #include <string.h> char*huiwen(char *str) { char *p1,*p2; int i,t=0; p1=str; p2= 【18】; for(i=0);i<=strlen(str)/2;i+ +) if(*p1+ +! =*p2--){t=1;break;} if( 【19】) return("yes!"); else return("no!"); } main( ) { char str[50]; printf("Input:"); scanf("%s",str); printf("%s\n", 【20】); }
|