2005年9月全国等级考试二级真题C下
2007-01-10 11:29:59 来源:东方教育网 标签:西班牙语
??(41)有以下程序
?? #include
?? main()
?? { char p[]={'a', 'b', 'c'}, q[10]={'a', 'b', 'c'};
?? printf("%d %dn", strlen(p), strlen(q));
?? }
??以下叙述中正确的是
?? A)在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3
?? B)由于p数组中没有字符串结束符,长度不能确定;但q数组中字符串长度为3
?? C)由于q数组中没有字符串结束符,长度不能确定;但p数组中字符串长度为3
?? D)由于p和q数组中都没有字符串结束符,故长度都不能确定
??
??(42)有以下程序,其中函数f的功能是将多个字符串按字典顺序排序
?? #include
?? void f(char *p[], int n)
?? { char *t; int i,j;
?? for(i=0; i?? for(j=i+1; j?? if(strcmp(p[i],p[j])>0){ t=p[i]; p[i]=p[j]; p[j]=t; }
?? }
?? main()
?? { char *p[5]={"abc","aabdfg","abbd","dcdbe","cd"};
?? f(p, 5);
?? printf("%dn", strlen(p[1]));
?? }
??程序运行后的输出结果是
?? A)2 B)3 C)6 D)4
??
??(43)有以下程序
?? # include
?? void f(char *s, char *t)
?? { char k;
?? k=*s; *s=*t; *t=k;
?? s++; t--;
?? if (*s) f(s, t);
?? }
?? main()
?? { char str[10]="abcdefg", *p ;
?? p=str+strlen(str)/2+1;
?? f(p, p-2);
?? printf("%sn",str);
?? }
??程序运行后的输出结果是
?? A)abcdefg B)gfedcba C)gbcdefa D)abedcfg
??
??(44)有以下程序
?? float f1(float n)
?? { return n*n; }
?? float f2(float n)
?? { return 2*n; }
?? main()
?? { float (*p1)(float),(*p2)(float),(*t)(float), y1, y2;
?? p1=f1; p2=f2;
?? y1=p2( p1(2.0) );
?? t = p1; p1=p2; p2 = t;
?? y2=p2( p1(2.0) );
?? printf("%3.0f, %3.0fn",y1,y2);
?? }
??程序运行后的输出结果是
?? A)8, 16 B)8, 8 C)16, 16 D)4, 8
??(45)有以下程序
?? int a=2;
?? int f(int n)
?? { static int a=3;
?? int t=0;
?? if(n%2){ static int a=4; t += a++; }
?? else { static int a=5; t += a++; }
?? return t+a++;
?? }
?? main()
?? { int s=a, i;
?? for( i=0; i<3; i++) s+=f(i);
?? printf("%dn", s);
?? }
??程序运行后的输出结果是
?? A)26 B)28 C)29 D)24
??
??(46)有以下程序
?? # include
?? struct STU
?? { int num;
?? float TotalScore; };
?? void f(struct STU p)
?? { struct STU s[2]={{20044,550},{20045,537}};
?? p.num = s[1].num; p.TotalScore = s[1].TotalScore;
?? }
?? main()
?? { struct STU s[2]={{20041,703},{20042,580}};
?? f(s[0]);
?? printf("%d %3.0fn", s[0].num, s[0].TotalScore);
?? }
??程序运行后的输出结果是
?? A)20045 537 B)20044 550 C)20042 580 D)20041 703
??
??(47)有以下程序
?? # include
?? struct STU
?? { char name[10];
?? int num; };
?? void f(char *name, int num)
?? { struct STU s[2]={{"SunDan",20044},{"Penghua",20045}};
?? num = s[0].num;
?? strcpy(name, s[0].name);
?? }
?? main()
?? { struct STU s[2]={{"YangSan",20041},{"LiSiGuo",20042}},*p;
?? p=&s[1]; f(p->name, p->num);
?? printf("%s %dn", p->name, p->num);
?? }
??程序运行后的输出结果是
?? A)SunDan 20042 B)SunDan 20044
?? C)LiSiGuo 20042 D)YangSan 20041
??
??(48)有以下程序
?? struct STU
?? { char name[10]; int num; float TotalScore; };
?? void f(struct STU *p)
?? { struct STU s[2]={{"SunDan",20044,550},{"Penghua",20045,537}}, *q=s;
?? ++p ; ++q; *p=*q;
?? }
?? main()
?? { struct STU s[3]={{"YangSan",20041,703},{"LiSiGuo",20042,580}};
?? f(s);
?? printf("%s %d %3.0fn", s[1].name, s[1].num, s[1].TotalScore);
?? }
??程序运行后的输出结果是
?? A)SunDan 20044 550 B)Penghua 20045 537
?? C)LiSiGuo 20042 580 D)SunDan 20041 703
??
??(49)以下程序的功能是进行位运算
?? main()
?? { unsigned char a, b;
?? a=7^3; b= ~4 & 3;
??printf("%d %dn",a,b);
?? }
??程序运行后的输出结果是
?? A)4 3 B)7 3 C)7 0 D)4 0
??
??(50)有以下程序
?? #include
?? main()
?? { FILE *fp; int i, k, n;
?? fp=fopen("data.dat", "w+");
?? for(i=1; i<6; i++)
?? { fprintf(fp,"%d ",i);
?? if(i%3==0) fprintf(fp,"n");
?? }
?? rewind(fp);
?? fscanf(fp, "%d%d", &k, &n); printf("%d %dn", k, n);
?? fclose(fp);
?? }
??程序运行后的输出结果是
?? A)0 0 B)123 45 C)1 4 D)1 2
??
??二、填空题(每空2分,共40分)
?? 请将每一个空的正确答案写在答题卡【1】至【20】序号的横线上,答在试卷上不得分。
??
??(1)数据管理技术发展过程经过人工管理、文件系统和数据库系统三个阶段,其中数据独立性最高的阶段是 【1】 。 ?
??(2)算法复杂度主要包括时间复杂度和 【2】 复杂度。
??(3)在进行模块测试时,要为每个被测试的模块另外设计两类模块:驱动模块和承接模块(桩模块)。其中 【3】 的作用是将测试数据传送给被测试的模块,并显示被测试模块所产生的结果。 ??(4)一棵二叉树第六层(根结点为第一层)的结点数最多为 【4】 个。
??(5)数据结构分为逻辑结构和存储结构,循环队列属于 【5】 结构。
??(6)以下程序运行后的输出结果是 【6】 。
?? main()
?? { int x=0210; printf("%Xn",x);
?? }
??(7)以下程序运行后的输出结果是 【7】 。
?? main()
?? { int a=1,b=2,c=3;
?? if(c=a) printf("%dn",c);
?? else printf("%dn",b);
?? }
??(8)已有定义:double *p;,请写出完整的语句,利用malloc函数使p指向一个双精度型 的动态存储单元 【8】 。
??(9)以下程序运行后的输出结果是 【9】 。
?? main()
?? { char c; int n=100;
?? float f=10; double x;
?? x=f*=n/=(c=50);
?? printf("%d %fn",n,x);
?? } ?
??(10)以下程序的功能是计算:s=1+12+123+1234+12345。请填空。
?? main()
?? { int t=0,s=0,i;
?? for( i=1; i<=5; i++)
?? { t=i+ 【10】 ; s=s+t; }
?? printf("s=%dn",s);
?? }
??(11)已知字母A的ASCII码为65。以下程序运行后的输出结果是 【11】 。
?? main()
?? { char a, b;
?? a='A'+'5'-'3'; b=a+'6'-'2' ;
?? printf("%d %cn", a, b);
?? }
??(12)有以下程序
?? int sub(int n) { return (n/10+n%10); }
?? main()
?? { int x,y;
?? scanf("%d",&x);
?? y=sub(sub(sub(x)));
?? printf("%dn",y);
?? }
??若运行时输入:1234<回车>,程序的输出结果是 【12】 。
??(13)以下函数sstrcat()的功能是实现字符串的连接,即将t所指字符串复制到s所指字符串的尾部。例如:s所指字符串为abcd,t所指字符串为efgh,函数调用后s所指字符串为abcdefgh。请填空。
?? # include
?? void sstrcat(char *s, char *t)
?? { int n;
?? n= strlen(s);
?? while (*(s+n)= 【13】 ){s++; t++;}
?? }
??(14)以下程序运行后的输出结果是 【14】 。
?? #include
?? char *ss(char *s)
?? { char *p, t;
?? p=s+1; t=*s;
?? while(*p) { *(p-1) = *p; p++;}
?? *(p-1)=t;
?? return s;
?? }
?? main()
?? { char *p, str[10]="abcdefgh";
?? p = ss(str) ;
?? printf("%sn",p);
?? }
??(15)以下程序运行后的输出结果是 【15】 。
?? int f(int a[], int n)
?? { if (n >= 1) return f(a, n-1)+a[n-1];
?? else return 0;
?? }
?? main()
?? { int aa[5]={1,2,3,4,5}, s;
?? s=f(aa, 5); printf("%dn", s);
?? } ?
??(16)以下程序运行后的输出结果是 【16】 。
?? struct NODE
?? { int num; struct NODE *next;
?? } ;
?? main()
?? { struct NODE s[3]={{1, ' '},{2, ' '},{3, ' '}}, *p, *q, *r;
?? int sum=0;
?? s[0].next=s+1; s[1].next=s+2; s[2].next=s;
?? p=s; q=p->next; r=q->next;
?? sum+=q->next->num; sum+=r->next->next->num;
?? printf("%dn", sum);
?? }
??(17)以下程序的功能是输出如下形式的方阵:
?? 13 14 15 16
?? 9 10 11 12
?? 5 6 7 8
?? 1 2 3 4
??请填空。
?? main()
?? { int i,j,x;
?? for(j=4; j 【17】 ; j--)
?? { for(i=1; i<=4; i++)
?? { x=(j-1)*4 + 【18】 ;
?? printf("%4d",x);
?? }
?? printf("n");
?? }
?? } ?
??(18)以下函数rotate的功能是:将a所指N行N列的二维数组中的最后一行放到b所指二维数组的第0列中,把a所指二维数组中的第0行放到b所指二维数组的最后一列中,b所指二维数组中其他数据不变。
?? # define N 4
?? void rotate(int a[][N], int b[][N])
?? { int i, j;
?? for (i=0; i?? { b[i][N-1] = 【19】 ; 【20】 = a[N-1][i]; }
?? }
??
??
??2005年下半年C语言笔试参考答案
??一、题答案
??(1)—(10) CACDC DAABB
??(11)—(20)ACBBA CCDAB
??(21)—(30)DCABC DDABD
??(31)—(40)BCCAA DCCAA
??(41)—(50)BCBAC DABAD
??二、填空题
??(1) 数据库系统
??(2) 空间
??(3) 驱动模块
??(4) 32
??(5) 存储结构
??(6) 88
??(7) 1
??(8) p=(double * ) malloc (sizeof(double))
??(9) 2 20
??(10) t*10
??(11) 67 G
??(12) 10
??(13) *t
??(14) bcdefgha
??(15) 15
??(16) 5
??(17) >0
??(18) 6
??(19) a[0][i]
??(20) b[i][0]
[上一页]
?? #include
?? main()
?? { char p[]={'a', 'b', 'c'}, q[10]={'a', 'b', 'c'};
?? printf("%d %dn", strlen(p), strlen(q));
?? }
??以下叙述中正确的是
?? A)在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3
?? B)由于p数组中没有字符串结束符,长度不能确定;但q数组中字符串长度为3
?? C)由于q数组中没有字符串结束符,长度不能确定;但p数组中字符串长度为3
?? D)由于p和q数组中都没有字符串结束符,故长度都不能确定
??
??(42)有以下程序,其中函数f的功能是将多个字符串按字典顺序排序
?? #include
?? void f(char *p[], int n)
?? { char *t; int i,j;
?? for(i=0; i?? for(j=i+1; j?? if(strcmp(p[i],p[j])>0){ t=p[i]; p[i]=p[j]; p[j]=t; }
?? }
?? main()
?? { char *p[5]={"abc","aabdfg","abbd","dcdbe","cd"};
?? f(p, 5);
?? printf("%dn", strlen(p[1]));
?? }
??程序运行后的输出结果是
?? A)2 B)3 C)6 D)4
??
??(43)有以下程序
?? # include
?? void f(char *s, char *t)
?? { char k;
?? k=*s; *s=*t; *t=k;
?? s++; t--;
?? if (*s) f(s, t);
?? }
?? main()
?? { char str[10]="abcdefg", *p ;
?? p=str+strlen(str)/2+1;
?? f(p, p-2);
?? printf("%sn",str);
?? }
??程序运行后的输出结果是
?? A)abcdefg B)gfedcba C)gbcdefa D)abedcfg
??
??(44)有以下程序
?? float f1(float n)
?? { return n*n; }
?? float f2(float n)
?? { return 2*n; }
?? main()
?? { float (*p1)(float),(*p2)(float),(*t)(float), y1, y2;
?? p1=f1; p2=f2;
?? y1=p2( p1(2.0) );
?? t = p1; p1=p2; p2 = t;
?? y2=p2( p1(2.0) );
?? printf("%3.0f, %3.0fn",y1,y2);
?? }
??程序运行后的输出结果是
?? A)8, 16 B)8, 8 C)16, 16 D)4, 8
??(45)有以下程序
?? int a=2;
?? int f(int n)
?? { static int a=3;
?? int t=0;
?? if(n%2){ static int a=4; t += a++; }
?? else { static int a=5; t += a++; }
?? return t+a++;
?? }
?? main()
?? { int s=a, i;
?? for( i=0; i<3; i++) s+=f(i);
?? printf("%dn", s);
?? }
??程序运行后的输出结果是
?? A)26 B)28 C)29 D)24
??
??(46)有以下程序
?? # include
?? struct STU
?? { int num;
?? float TotalScore; };
?? void f(struct STU p)
?? { struct STU s[2]={{20044,550},{20045,537}};
?? p.num = s[1].num; p.TotalScore = s[1].TotalScore;
?? }
?? main()
?? { struct STU s[2]={{20041,703},{20042,580}};
?? f(s[0]);
?? printf("%d %3.0fn", s[0].num, s[0].TotalScore);
?? }
??程序运行后的输出结果是
?? A)20045 537 B)20044 550 C)20042 580 D)20041 703
??
??(47)有以下程序
?? # include
?? struct STU
?? { char name[10];
?? int num; };
?? void f(char *name, int num)
?? { struct STU s[2]={{"SunDan",20044},{"Penghua",20045}};
?? num = s[0].num;
?? strcpy(name, s[0].name);
?? }
?? main()
?? { struct STU s[2]={{"YangSan",20041},{"LiSiGuo",20042}},*p;
?? p=&s[1]; f(p->name, p->num);
?? printf("%s %dn", p->name, p->num);
?? }
??程序运行后的输出结果是
?? A)SunDan 20042 B)SunDan 20044
?? C)LiSiGuo 20042 D)YangSan 20041
??
??(48)有以下程序
?? struct STU
?? { char name[10]; int num; float TotalScore; };
?? void f(struct STU *p)
?? { struct STU s[2]={{"SunDan",20044,550},{"Penghua",20045,537}}, *q=s;
?? ++p ; ++q; *p=*q;
?? }
?? main()
?? { struct STU s[3]={{"YangSan",20041,703},{"LiSiGuo",20042,580}};
?? f(s);
?? printf("%s %d %3.0fn", s[1].name, s[1].num, s[1].TotalScore);
?? }
??程序运行后的输出结果是
?? A)SunDan 20044 550 B)Penghua 20045 537
?? C)LiSiGuo 20042 580 D)SunDan 20041 703
??
??(49)以下程序的功能是进行位运算
?? main()
?? { unsigned char a, b;
?? a=7^3; b= ~4 & 3;
??printf("%d %dn",a,b);
?? }
??程序运行后的输出结果是
?? A)4 3 B)7 3 C)7 0 D)4 0
??
??(50)有以下程序
?? #include
?? main()
?? { FILE *fp; int i, k, n;
?? fp=fopen("data.dat", "w+");
?? for(i=1; i<6; i++)
?? { fprintf(fp,"%d ",i);
?? if(i%3==0) fprintf(fp,"n");
?? }
?? rewind(fp);
?? fscanf(fp, "%d%d", &k, &n); printf("%d %dn", k, n);
?? fclose(fp);
?? }
??程序运行后的输出结果是
?? A)0 0 B)123 45 C)1 4 D)1 2
??
??二、填空题(每空2分,共40分)
?? 请将每一个空的正确答案写在答题卡【1】至【20】序号的横线上,答在试卷上不得分。
??
??(1)数据管理技术发展过程经过人工管理、文件系统和数据库系统三个阶段,其中数据独立性最高的阶段是 【1】 。 ?
??(2)算法复杂度主要包括时间复杂度和 【2】 复杂度。
??(3)在进行模块测试时,要为每个被测试的模块另外设计两类模块:驱动模块和承接模块(桩模块)。其中 【3】 的作用是将测试数据传送给被测试的模块,并显示被测试模块所产生的结果。 ??(4)一棵二叉树第六层(根结点为第一层)的结点数最多为 【4】 个。
??(5)数据结构分为逻辑结构和存储结构,循环队列属于 【5】 结构。
??(6)以下程序运行后的输出结果是 【6】 。
?? main()
?? { int x=0210; printf("%Xn",x);
?? }
??(7)以下程序运行后的输出结果是 【7】 。
?? main()
?? { int a=1,b=2,c=3;
?? if(c=a) printf("%dn",c);
?? else printf("%dn",b);
?? }
??(8)已有定义:double *p;,请写出完整的语句,利用malloc函数使p指向一个双精度型 的动态存储单元 【8】 。
??(9)以下程序运行后的输出结果是 【9】 。
?? main()
?? { char c; int n=100;
?? float f=10; double x;
?? x=f*=n/=(c=50);
?? printf("%d %fn",n,x);
?? } ?
??(10)以下程序的功能是计算:s=1+12+123+1234+12345。请填空。
?? main()
?? { int t=0,s=0,i;
?? for( i=1; i<=5; i++)
?? { t=i+ 【10】 ; s=s+t; }
?? printf("s=%dn",s);
?? }
??(11)已知字母A的ASCII码为65。以下程序运行后的输出结果是 【11】 。
?? main()
?? { char a, b;
?? a='A'+'5'-'3'; b=a+'6'-'2' ;
?? printf("%d %cn", a, b);
?? }
??(12)有以下程序
?? int sub(int n) { return (n/10+n%10); }
?? main()
?? { int x,y;
?? scanf("%d",&x);
?? y=sub(sub(sub(x)));
?? printf("%dn",y);
?? }
??若运行时输入:1234<回车>,程序的输出结果是 【12】 。
??(13)以下函数sstrcat()的功能是实现字符串的连接,即将t所指字符串复制到s所指字符串的尾部。例如:s所指字符串为abcd,t所指字符串为efgh,函数调用后s所指字符串为abcdefgh。请填空。
?? # include
?? void sstrcat(char *s, char *t)
?? { int n;
?? n= strlen(s);
?? while (*(s+n)= 【13】 ){s++; t++;}
?? }
??(14)以下程序运行后的输出结果是 【14】 。
?? #include
?? char *ss(char *s)
?? { char *p, t;
?? p=s+1; t=*s;
?? while(*p) { *(p-1) = *p; p++;}
?? *(p-1)=t;
?? return s;
?? }
?? main()
?? { char *p, str[10]="abcdefgh";
?? p = ss(str) ;
?? printf("%sn",p);
?? }
??(15)以下程序运行后的输出结果是 【15】 。
?? int f(int a[], int n)
?? { if (n >= 1) return f(a, n-1)+a[n-1];
?? else return 0;
?? }
?? main()
?? { int aa[5]={1,2,3,4,5}, s;
?? s=f(aa, 5); printf("%dn", s);
?? } ?
??(16)以下程序运行后的输出结果是 【16】 。
?? struct NODE
?? { int num; struct NODE *next;
?? } ;
?? main()
?? { struct NODE s[3]={{1, ' '},{2, ' '},{3, ' '}}, *p, *q, *r;
?? int sum=0;
?? s[0].next=s+1; s[1].next=s+2; s[2].next=s;
?? p=s; q=p->next; r=q->next;
?? sum+=q->next->num; sum+=r->next->next->num;
?? printf("%dn", sum);
?? }
??(17)以下程序的功能是输出如下形式的方阵:
?? 13 14 15 16
?? 9 10 11 12
?? 5 6 7 8
?? 1 2 3 4
??请填空。
?? main()
?? { int i,j,x;
?? for(j=4; j 【17】 ; j--)
?? { for(i=1; i<=4; i++)
?? { x=(j-1)*4 + 【18】 ;
?? printf("%4d",x);
?? }
?? printf("n");
?? }
?? } ?
??(18)以下函数rotate的功能是:将a所指N行N列的二维数组中的最后一行放到b所指二维数组的第0列中,把a所指二维数组中的第0行放到b所指二维数组的最后一列中,b所指二维数组中其他数据不变。
?? # define N 4
?? void rotate(int a[][N], int b[][N])
?? { int i, j;
?? for (i=0; i?? { b[i][N-1] = 【19】 ; 【20】 = a[N-1][i]; }
?? }
??
??
??2005年下半年C语言笔试参考答案
??一、题答案
??(1)—(10) CACDC DAABB
??(11)—(20)ACBBA CCDAB
??(21)—(30)DCABC DDABD
??(31)—(40)BCCAA DCCAA
??(41)—(50)BCBAC DABAD
??二、填空题
??(1) 数据库系统
??(2) 空间
??(3) 驱动模块
??(4) 32
??(5) 存储结构
??(6) 88
??(7) 1
??(8) p=(double * ) malloc (sizeof(double))
??(9) 2 20
??(10) t*10
??(11) 67 G
??(12) 10
??(13) *t
??(14) bcdefgha
??(15) 15
??(16) 5
??(17) >0
??(18) 6
??(19) a[0][i]
??(20) b[i][0]
[上一页]





