全国计算机等级考试真题(2011年全国计算机等级考试2级C语言机试题库)

2024-05-14 19:32:04

重要说明:本题库为从题中一题一题复制出来工作量大,而且有许多表达式无法在word中快速表示出来(这样会加大工作量)故而省略,或者表达错位,有的地方可能或者肯定会有错,我相信准备参加C语言二级考试的同学应当能够对照参考答案看出来,这是2011年最新版最完整考试题库,相信大家一定都能通过!

第一套

程序填空

给定程序中,函数fun的功能是:将形参n所指变量中,各位上为偶数的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针n传回所指变量。如输入一个数:27638496,新的数为729

第一空:{ t=*n%10;

第二空:if(t%2!=0)

第三空:*n=x;

2.程序修改

给定程序modi1.c中函数fun的功能是:计算n!。例如,给n输入5,则输出120.000000。

double fun(int n )

{ double result=1.0;

/*****found******/

if(n==0)

return 1.0;

while(n>1&&n<170)

/*****found******/

result*=n--;

return result;

}

程序设计

请编写一个函数fun,它的功能是:将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。例如,若输入字符串"-1234",则函数把它转换为整数值-1234。

long fun(char *p)

{

int i,len,t;

long x=0;

len=strlen(p);

if(p[0]=='-')

{ t=-1;len--;p++;}

else t=1;

while(*p)

x=x*10-48+(*p++);

return x*t;

}

第二套

1. 给定程序中,函数fun的功能是将形参给定的字符串、整数、浮点数写到文本文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:源程序存放在考生文件夹下的BLANK1.C中。

第1 处 FILE * fp;

第2 处 while (!feof(fp)) {

第3 处 putchar(ch); ch = fgetc(fp); }

2.程序修改

给定程序MODI1.C中函数fun的功能是:依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。

void fun( char *s )

{ int i,j;

for(i=0,j=0;s[i]!='\0';i++)

if(s[i]>='0'&&s[i]<='9')

/*****found******/

s[j++]=s[i];

/*****found******/

s[j]='\0';

}

3.程序设计题

请编写函数fun,函数的功能是:将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。

void fun(char s[][N],char *b)

{

int i,j,n=0;

for(i=0;i<N;i++)

/*请填写其相应语句完成其功能*/

{

for(j=0;j<M;j++) {

b[n]=s[j][i];

n=i*M+j+1;

}

}

b[n]='\0';

}

第三套

1. 程序填空

程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数 fun的功能是重写形参filename所指的文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其它学生的数据不变。

第1处:fp=fopen(filename,

"rb+")

第2处:fseek(fp,-1L*

sizeof(STU),SEEK_END);

第3处:fwrite(&n,

sizeof(STU),1,fp);

2. 程序修改

给定程序MODI1.C中的函数Creatlink的功能是创建带头结点的单向链表,并为各结点数据域赋0到m-1的值。请改正函数Creatlink中指定部位的错误,使它能得出正确的结果。

NODE *Creatlink(int n,int m)

{ NODE *h=NULL,*p,*s;

int i;

/*****found******/

p=( NODE *) malloc(sizeof(NODE));

h=p;

p->next=null;

for(i=1;i<=n;i++)

{s=( NODE *) malloc(sizeof(NODE));

s->data=rand()%m;

s->next=p->next;

p->next=s;

p=p->next;

}

/*****found******/

return h;

}

3. 程序设计

请编写函数fun,函数的功能是:统计一行字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格格开,一行的开始没有空格。

int fun(char *s)

{

int k=1;

while(*s)

{ if(*s=='')k++;

s++; }

return k;

}

第四套

1. 程序填空

程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的学生数据输出到filename所指的文件中,覆盖原来的文件内容。

第1处fp = fopen(filename, "rb");

第2处if (s[i].sno >s[j].sno)

第3处 fwrite(s,sizeof(STU),N,fp);

2. 程序修改

给定程序MODI1.C中函数fun的功能是:在字符串的最前端加入n个*号,形成新串,差且覆盖原串。注意:字符串的长度最长允许为79.

void fun(char s[ ],int n)

{

char a[80],*p;

int i;

/*****found******/

p=s;

for(i=0;i<n;i++)

a[i]='*';

do

{a[i]=*p;

i++;

}

/*****found******/

while(*p++)

a[i]=0;

strcpy(s,a);

}

3. 程序设计

请编写函数fun,函数的功能是:统计各年龄段的人数,N个年龄能过调用随机函数获得,并放在主函数的age 数组中:要求函数把0至9岁的年龄段的人数放在d[0]中,把10至19岁的年龄段的人数放在d[1]中,把20至29岁的年龄段的人数放在d[2]中,其余依次类推,把100岁(含100岁)以上年龄的人数都放在d[10]中。结果在主函数中输出。

void fun(int *a, int *b)

{

int i,j;

for(i=0;i<M;i++)b[i]=0;

for(i=0;i<N;i++)

{ j=a[i]/10;

if(j>10)b[M-1]++;

else b[j]++;

}

}

第五套

1. 程序填空

给定程序中,函数fun的功能是将参数给定的字符串、整数、浮点数写到文件文件中,再用字符串方式从此文本文件中逐个读入,并调用库函数atoi和atof将字符串换成相应的整数和浮点数,然后将其显示在屏幕上。

第1处: FILE *fp;

第2处:fclose(fp);

第3处:fscanf(fp,"%s%s%s",str,str1,str2);

2.程序修改

给定程序MODI1.C中函数fun的功能是:对N名学生的学生成绩,按从高到低的顺序找出前m(m<10) 名学生来,将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。

STU *fun(STU a[ ],int m)

{ STU b[N],*t;

int i,j,k;

/*****found******/

t=(STU *)calloc(sizeof(STU),m);

for(i=0;i<N;i++)

b[i]=a[i];

for(k=0;k<m;k++)

{ for(i=j=0;i<N;i++)

if(b[i].s>b[j].s)j=i;

/*****found******/

t[k]=b[j];

b[j].s=0;

}

return t;

}

3. 程序设计

请编写函数fun,函数的功能是,删去一维数组中所有相同的数,使之只剩一个。数组中的数已按从小到大的顺序排序,函数返回删除后数组中数据的个数。

int fun(int a[ ],int n)

{

int i,j=1,k=a[0];

for(i=1;i<n;i++)

if(k!=a[i]){

a[j++]=a[i];

k=a[i];}

a[j]=0;

return j;

}

第六套

1. 程序填空

给定程序中,函数fun的功能是根据形参i的值返回某个函数年值。当调用正确时,程序输出:x1=5.000000

x2=3.000000.

x1*x1+x1*x2=40.000000

第一处:double fun(int i,double x,double y)

第二处:return f1(x);

第三处:return f2(x,y);

2.程序修改

给定程序MODI1.C中函数fun的功能是:比较两个字符串,将长的那个字符串的首地址作为函数值返回。

#include <stdio.h>

/*****found******/

char *fun(char *s,char *t)

{

int sl=0,tl=0;

char *ss,*tt;

ss=s; tt=t;

while(*ss)

{ sl++;

/*****found******/

ss++;

}

while(*tt)

{ tl++;

/*****found******/

tt++;

}

if(tl>sl) return t;

else return s;

}

3. 程序设计

请编写函数fun,函数的功能是:移动字符串中的内容,移动的规则如下:把第1到第m个字符,平均移到字符串的最后,把第m+1个到最后的;字符移到字符串的前部。

void fun(char *w, int m )

{

int i;

for(i=0;i<m;i++)

fun1(w);

}

第七套

1. 程序填空

程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的信息,函数fun的功能是输出这位学生的信息。

第1处 void show( STU tt)

第2处 printf("%5.1f",tt.score[i]);

第2处 show(std)

2.程序修改

给定程序MODI1中函数fun的功能是:求出数组中最大数和次最大数,并把最大数和a[0]中的数对调、次最大数和a[1]中的数对调。

int fun(int *a,int n)

{ int i,m,t,k;

for(i=0;i<2;i++){

/*****found******/

m=i;

for(k=i+1;k<n;k++)

/*****found******/

if(a[k]>a[m])m=k;

t=a[i];a[i]=a[m];a[m]=t;

}

}

3.程序设计

请编写一个unsigned fun(unsigned w),w是一个大于10的无符号整数,若w是n(n>=2)位的整数,函数求出w的后n-1位的数作为函数值返回。

例如:w值为5923,则函数返回923;w值为923则函数返回23。

unsigned fun( unsigned w )

{

if(w>=10000) return w%10000;

if(w>=1000) return w%1000;

if(w>=100) return w%100;

return w%10;

}

第八套

1. 程序填空

给定程序通过定义并赋值的方式,利用结构体变量存储了一名学生学号、姓名和3门课的成绩。函数fun的功能是将该学生的各科成绩都乘以一个系统a。

第1处 void modify(STU *ss,float a )

第2处 ss->score[i]*=a;

第3处 modify(&std,a);

2.程序修改

给定程序MODI1.C中函数fun的功能是:求k!<13>,所求阶乘的值作为函数值返回。例如:若k=10,则应输出:3628800。

long fun(int k)

{

/*****found******/

if(k>0)

return (k*fun(k-1));

/*****found******/

else if(k==0)

return 1L;

}

3.程序设计

程序定义了N*N的二维数组,并在主函数中自动赋值。请编写函数fun(int a[ ][N],int n),函数的功能是:使数组左下三角元素中的值乘以n。

int fun(int a[ ][N],int n)

{ int i,j;

for(i=0;i<N;i++)

for(j=0;j<=i;j++)

a[i][j]*=n;

}

第九套

1.程序填空

给定程序中,函数fun的功能是将不带头节点的单向链表结点数据域中的数据从小到大排序。即若原链表结点数据域从头到尾的数据为:10、4、2、8、6,排序后链表结点数据域从头至尾的数据为2、4、6、8、10。

第1处 q=p->next;

第2处 while(q)

第3处 p=p->next;

2.程序修改

给定程序MODI1.C中函数fun的功能是:将s所指字符串中的字母转换为按字母序列的后续字母(但Z转换为A,z转换成a ),其它字符不变。

void fun(char *s)

{

/*****found******/

while(*s)

{ if(*s>'A'&&*s<='Z'

||*s>='a'&&*s<='z')

{ if(*s=='Z')*s='A';

else if(*s=='z')*s='a';

else *s=*s+1;}

/*****found******/

s++;

}

}

3.程序设计

void fun(int *w,int p, int n)

{

int i,j=0,b[N];

for(i=p+1;i<n;i++)b[j++]=w[i];

for(i=0;i<=p;i++)

b[j++]=w[i];

for(i=0;i<n;i++)

w[i]=b[i];

}

第十套

1程序填空

给定程序中,函数fun的功能是:判定形参a所指的N×N(规定N为奇数)的矩阵是否是"幻方",若是,函数返回值为1;不是,函数返回值为0。"幻方"的判定条件是:矩阵每行、每列、主对角线及反对角线上元素之和都相等。

第1处 row=colum=0;

第2处 if((row!=colum)||(row!=m1))return 0;

第3处 return 1;

2程序修改

给定MODI1.Cfun函数的功能是:根据整型形参m,计算如下公式的值。t=1-1/2-1/3-......-1/m.

#include <sdio.h>

double fun( int m )

{

double t = 1.0;

int i;

for(i=2;i<=m;i++)

/********found***********/

t=t-1.0/i;

/********found***********/

return t;

}

求最新的计算机二级考试题库

一、选择题((1)~(40)每小题1分,(41)~(55)每小题2分,共60分)

下列各题 A) 、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。

(1) 用8位无符号二进制数能表示的最大十进制数为

A) 127 B) 128 C) 255 D) 256

(2) 在64位高档微机中,一个字长所占的二进制位数为

A) 8 B) 16 C) 32 D) 64

(3) 在Windows环境下,为了复制一个对象,在用鼠标拖动该对象时应同时按住

A) Alt键 B)Esc键 C)Shift键 D)Ctrl键

(4) 在Windows菜单中,暗淡(灰色)的命令项表示该命令

A) 暂时不能用 B) 正在执行 C) 包含下一层菜单 D) 包含对话框

(5) 在DOS环境下,为了得到TYPE命令的帮助信息,正确的DOS命令为

A) TYPE B) TYPE/H C) TYPE/* D) TYPE/?

(6) 下列选项中,能作为合法DOS文件名的是

A) ANP/A.DAT B) ABCCOM C) ECD.BASIC D) XY+Z.TXT

(7) 下列叙述中正确的是

A) 在Windows环境下,最大化的窗口是不能移动的

B) 在Windows环境下,应用程序窗口最小化后,该应用程序暂停执行

C) 在Windows环境下,只有最小化的窗口才能关闭

D) 在Windows环境下,不能关闭最大化的窗口

(8) 在Windows环境下,工具栏中的复制按钮是

A) 打印机图标 B) 剪刀标志 C) 复制标志 D) 粘贴标志

(9) 在Windows98环境下,若要将整个屏幕上显示的内容存入剪贴板,可以按

A) Ctrl+PrintScreen键 B) Alt+PrintScree键

C) Shift+PrintScreen键 D) PrintScreen键

(10) 目前,计算机病毒扩散最快的途径是

A) 通过软件复制 B) 通过网络传播

C) 通过磁盘考贝 D) 运行游戏软件

(11) 以下叙述中正确的是

A) C语言比其他语言高级

B) C语言可以不用编译就能被计算机识别执行

C) C语言以接近英语国家的自然语言和数学语言作为语言的表达形式

D) C语言出现的最晚,具有其他语言的一切优点

(12) C语言中用于结构化程序设计的三种基本结构是

A) 顺序结构、选择结构、循环结构 B) if、switch、break

C) for、while、do-while D) if、for、continue

(13) 在一个C程序中

A) main函数必须出现在所有函数之前 B) main函数可以在任何地方出现

C) main函数必须出现在所有函数之后 D) main函数必须出现在固定位置

(14) 下列叙述中正确的是

A) C语言中既有逻辑类型也有集合类型

B) C语言中没有逻辑类型但有集合类型

C) C语言中有逻辑类型但没有集合类型

D) C语言中既没有逻辑类型也没有集合类型

(15) 下列关于C语言用户标识符的叙述中正确的是

用户标识符中可以出现在下划线和中划线(减号)

用户标识符中不可以出现中划线,但可以出现下划线

用户标识符中可以出现下划线,但不可以放在用户标识符的开头

用户标识符中可以出现在下划线和数字,它们都可以放在用户标识符的开头

(16) 若有以下程序段(n所赋的是八进制数)

int m=32767,n=032767

printf("%d,%o/n",m,n);

执行后输出结果是

A) 32767,32767 B) 32767,032767

C) 32767,77777 D) 32767,077777

(17) 下列关于单目运算符++、--的叙述中正确的是

A) 它们的运算对象可以是任何变量和常量

B) 它们的运算对象可以是char型变量和int型变量,但不能是float型变量

C) 它们的运算对象可以是int型变量,但不能是double型变量和float型变量

D) 它们的运算对象可以是char型变量、int型变量和float型变量

(18) 若有以下程序段

int m=0xabc,n=0xabc;

m-=n;

printf("%X\n",m);

执行后输出结果是

A) 0X0 B) 0x0 C) 0 D) 0XABC

(19) 有以下程序段

int m=0,n=0; char c='a';

scanf("%d%c%d",&m,&c,&n);

printf("%d,%c,%d\n",m,c,n);

若从键盘上输入:10A10<回车>,则输出结果是:

A) 10,A,10 B) 10,a,10 C) 10,a,0 D) 10,A,0

(20) 有以下程序

main()

{ int i;

for(i=0;i<3;i++)

switch(i)

{ case 1: printf("%d",i);

case 2: printf("%d",i);

default: printf("%d",i);

}

}

执行后输出结果是

A) 011122 B) 012 C) 012020 D) 120

(21) 有以下程序

main()

{ int i=1,j=1,k=2;

if((j++‖k++)&&i++) printf("%d,%d,%d\n",i,j,k);

}

执行后输出结果是

A) 1,1,2 B) 2,2,1 C) 2,2,2 D) 2,2,3

(22) 有以下程序

main()

{ int a=5,b=4,c=3,d=2;

if(a>b>c)

printf("%d\n",d);

else if((c-1>=d)==1)

printf("%d\n",d+1);

else

printf("%d\n",d+2)

}

执行后输出结果是

A) 2 B) 3 C) 4 D) 编译时有错,无结果

(23) 有以下程序

main()

{ int p[7]={11,13,14,15,16,17,18},i=0,k=0;

while(i<7&&p[i]%2){k=k+p[i];i++;}

printf("%d\n",k);

}

执行后输出结果是

A) 58 B) 56 C) 45 D) 24

(24) 有以下程序

main()

{ int i=0,s=0;

do{

if(i%2){i++;continue;}

i++;

s +=i;

}while(i<7);

printf("%d\n",s);

}

执行后输出结果是

A) 16 B) 12 C) 28 D) 21

(25) 有以下程序

main()

{ int i=10,j=1;

printf("%d,%d\n",i--,++j);

}

执行后输出结果是

A) 9,2 B) 10,2 C) 9,1 D) 10,1

(26) 有以下程序

main()

{ char a,b,c,*d;

a='\'; b='\xbc';

c='\0xab'; d="\017";

print("%c%c%c\n",a,b,c,*d);

}

编译时出现错误,以下叙述中正确的是

A) 程序中只有a='\';语句不正确 B) b='\xbc';语句不正确

C) d="\0127";语句不正确 D) a='\';和c='\0xab';语句都不正确

(27) 有以下程序

int fl(int x,int y)

{ return x>y?x:y; }

int f2(int x,int y)

{ return x>y?y:x; }

main()

{ int a=4,b=3,c=5,d,e,f;

d=f1(a,b); d=f1(d,c);

e=f2(a,b); e=f2(e,c);

f=a+b+c-d-e;

printf("%d,%d,%d\n",d,f,e);

}

执行后输出结果是

A) 3,4,5 B) 5,3,4 C) 5,4,3 D) 3,5,4

(28) 有如下程序

void f(int x,int y)

{ int t;

if(x }

main()

{ int a=4,b=3,c=5;

f(a,b); f(a,c); f(b,c);

printf("%d,%d,%d\n",a,b,c);

}

执行后输出结果是

A) 3,4,5 B) 5,3,4 C) 5,4,3 D) 4,3,5

(29) 若有以下定义和语句

#include

int a=4,b=3,*p,*q,*w;

p=&a; q=&b; w=q; q=NULL;

则以下选项中错误的语句是

A) *q=0; B) w=p; C) *p=a; D) *p=*w;

(30) 有以下程序

int *f(int *x,int *y)

{ if(*x<*y)

return x;

else

return y;

}

main()

{ int a=7,b=8,*p,*q,*r};

}

执行后输出结果是

A) 7,8,8 B) 7,8,7 C) 8,7,7 D) 8,7,8

(31) 有以下程序

main()

{ char *s[]={"one","two","three"},*p;

p=s[1];

printf("%c,%s\n",*(p+1),s[0]);

}

执行后输出结果是

A) n,two B) t,one C)w,one D) o,two

(32) 有以下程序

main()

{ int x[8]={8,7,6,5,0,0},*s;

s=x+3

printf("%d\n",s[2]);

}

执行后输出结果是

A) 随机值 B) 0 C) 5 D) 6

(33) 以下能正确定义数组并正确赋初值的语句是

A) int N=5,b[N][N]; B) int a[1][2]={{1},{3}};

C) int c[2][]={{1,2},{3,4}}; D) int d[3][2]={{1,2},{34}};

(34) 有以下程序

main()

{ int m[][3]={1,4,7,2,5,8,3,6,9};

int i,j,k=2;

for(i=0;i<3;i++)

{ printf("%d",m[k][i]); }

}

执行后输出结果是

A) 4 5 6 B) 2 5 8 C) 3 6 9 D) 7 8 9

(35) 以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。

#define N 10

void arrin(int x[N])

{ int i=0;

while(i scanf("%d", );

}

在下划线处应填入的是

A) x+i B)&x[i+1] C)x+(i++) D)&x[++i]

(36) 有以下程序

main()

{ char s[]="\n123\\";

printf("%d,%d\n",strlen(s),sizeof(s));

}

执行后输出结果是

A) 赋初值的字符串有错 B) 6,7 C) 5,6 D) 6,6

(37) 阅读以下函数

fun(char *s1,char *s2)

{ int i=0;

while(s1[i]==s2[i]&& s2[i]!='\0')i++;

return(s1[i]== && s2{i}!=='\0');

}

此函数的功能是

A) 将s2所指字符串赋给s1

B) 比较s1和s2所指字符串的大小,若s1比s2的大,函数值为1,否则函数值为0

C) 比较s1和s2所指字符串是否相等,若相等,函数值为1,否则函数值为0

D) 比较s1和s2所指字符串的长度,若s1比s2的长,函数值为1,否则函数值为0

(38) 以下叙述中正确的是

A) 全局变量的作用域一定比局部变量的作用域范围大

B)静态(static)类别变量的生存期贯穿于整个程序的运行期间

C)函数的形参都属于全局变量

D)未在定义语句中赋初值的auto变量和static变量的初值都是随机值

(39) 设有如下说明

typedef struct

{ int n; char c; double x;}STD;

则以下选项中,能正确定义结构体数组并赋初值的语句是

A) STD tt[2]={{1,'A',62},{2, 'B',75}};

B) STD tt[2]={1,"A",62},2, "B",75};

C) struct tt[2]={{1,'A'},{2, 'B'}};

D)structtt[2]={{1,"A",62.5},{2, "B",75.0}};

(40) 有以下程序

main()

{ union { unsigned int n;

unsigned char c;

}u1;

ul.c=‘A‘;

printf("%c\n",u1.n);

}

执行后输出结果是

A) 产生语法错 B) 随机值 C) A D) 65

(41) 有以下程序

main()

{ char str[]="xyz",*ps=str;

while(*ps)ps++;

for(ps--;ps-str>=0;ps--) puts(ps);

}

执行后的输出结果是

A) yz B) z C) z D) x

xyz yz yz xy

xyz xyz

(42) 有以下程序

main()

{ int a[][3]={{1,2,3},{4,5,0}},{*pa}[3],i;

pa=a;

for(i=0;i<3;i++)

if(i<2) pa[1][i]=pa[1][i]-1;

else pa[1][i]=1;

printf("%d\n",a[0][1]+a[1][1]+a[1][2]);

}

执行后输出结果是

A) 7 B) 6 C) 8 D) 无确定值

(43) 有以下程序

void fun(int *a,int i,int j)

{ int t;

if(i { t=a[i];a[i]=a[j];a[j]=t;

fun(a,++i,--j);

}

}

main()

{ int a[]={1,2,3,4,5,6},i;

fun(a,0,5)

for(i=0;i<6;i++)

printf("%d",a[i]);

}

执行后的输出结果是

A) 6 5 4 3 2 1 B) 4 3 2 1 5 6 C) 4 5 6 1 2 3 D) 1 2 3 4 5 6

(44) 有以下程序

main(int arge,char *argv[])

{ int n,i=0;

while(arv[1][i]!='\0'

{ n=fun(); i++;}

printf(%d\n",n*argc);

}

int fun()

{ static int s=0;

s+=1;

return s;

}

假设程序经编译、连接后生成可执行文件exam.exe,若键入以下命令行

exam 123<回车>

则运行结果为

A) 6 B)8 C)3 D)4

(45) 以下程序段中,能够通过调用函数fun,使main函数中的指针变量p指向一个合法的整型单元的是

A) main() B) main

{ int *p; { int *p;

fun(p); fun(&p);

}

}

int fun(int *p) int fun(int **p)

{ int s; p=&s;} { int s;*p=&s;}

C) #include D) #include

main() main()

{ int *p; { int *p;

fun(&p); fun(p);

} }

int fun(int **p) int fun(int *p)

{ *p=(int *)malloc(2);} { p=(int *)malloc(sizeo(int));}

(46) 若要说明一个类型名STP,使得定义语句STP s等价于char *s,以下选项中正确的是

A) typedef STP char *s; B) typedef *char STP;

C) typedef stp *char; D) typedef char* STP;

(47) 设有如下定义

struct ss

{ char name[10];

int age;

char sex;

}std[3],*p=std;

下面各输入语句中错误的是

A) scanf("%d",&(*p).age); B) scanf("%s",&std.name);

C) scanf("%c",&std[0].sex) D) scanf("%c",&(p->sex));

(48) 设char型变量x中的值为10100111,则表达式(2+x)^(~3)的值是

A) 10101001 B) 10101000 C) 11111101 D) 01010101

(49) 以下叙述中不正确的是

A)C语言中的文本文件以ASCⅡ码形式存储数据

B)C语言中对二进制文件的访问速度比文本文件快

C)C语言中,随机读写方式不适用于文本文件

D)C语言中,顺序读写方式不适用于二进制文件

(50) 以下程序企图把从终端输入的字符输出到名为abc.txt的文件中,直到从终端读入字符#号时结束输入和输出操作,但程序有错。

#include

main()

{ FILE *fout; char ch;

fout=fopen('abc.txt','w');

ch=fgetc(stdin);

while(ch!='#')

{ fputc(ch,fout);

ch=fgetc(stdin);

}

fclose(fout);

}

出错的原因是

A) 函数fopen调用形式错误 B) 输入文件没有关闭

C) 函数fgetc调用形式错误 D) 文件指针stdin没有定义

二、填空题(每空2分,共20分)

请将每空的正确答案写在答题卡上1-20序号的横线上,答在试卷上不得分。

(1) 用十六进制绘存储器中的字节地址进行编号,若地址编号从000到FFFF,则该存诸器的容量为1KB。

(2) 假设在当前盘的当前目录下有两个文件A.TXT和B.TXT,现要将文件B.TXT合并连接到文件A.TXT的后面。若使用COPY命令,则完整的命令为2。

(3) E-mail地址由用户和域名两部分组成,这两部分的分隔符为3。

(4) 假设在当前盘当前目录下有一个可执行程序USER.EXE。现要执行该程序,并要求在执行过程中将显示输出的结果信息存入当前盘当前目录的文件OUT.DAT中,则完整的DOS命令为4。

(5) 在DOS环境下,表示打印机的设备文件名为5 。

(6) 若有语句

int i=-19,j=i%4;

printf("%d\n",j);

则输出结果是 6 。

(7) 若有程序

main()

{ int i,j;

scanf("i=%d,j=%d";&i,&j);

printf("i=%d,j=%d\n",i,j);

}

要求给i赋10,给j赋20,则应该从键盘输入 7 。

(8) 若有以下程序

main()

{ int p,a=5;

if(p=a!=0)

printf("%d\n",p);

else

printf("%d\n",p+2);

}

执行后输出结果是 8 。

(9) 若有以下程序

main()

{ int a=4,b=3,c=5,t=0;

if(a if(a printf("%d %d %d\n",a,b,c);

}

执行后输出结果是 9 。

(10) 若有以下程序

main()

{ int a[4][4]={{1,2,-3,-4},{0,-12,-13,14},{-21,23,0,-24},{-31,32,-33,0}};

int i,j,s=0;

for(i=0;i<4;i++)

{ for(j=0;j<4;j++)

{ if(a[i][j]<0)continue;

if(a[i][j]==0)break;

s+=a[i][j];

}

}

printf("%d\n",s);

}

执行后输出的结果是 10 。

(11) 若有以下程序

main()

{ char a;

a='H'-'A'+'0';

print("%c\n",a);

}

执行后的输出结果是 11 。

(12) 若有以下程序

int f(int x,int y)

{ return(y-x)*x; }

main()

{ int a=3,b=4,c=5,d;

d=f(f(3,4),f(3,5));

printf("%d\n",d);

}

执行后输出的结果是12。

(13) 函数YangHui的功能是把杨辉三角形的数据赋给二维数组的下半三角,形式如下

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

其构成规律是:

第0列元素和主对角线无素均为1

其余元素为其左上方和正上方元素之和

数据的个数每行递增1

请将程序补充完整。

#defint N 6

void YangHui(int *[N][N])

{ int i,j;

x[0][0]=1

for(i=1;i { x[i][0]= 13 =1;

for(j=1;j x[i][j]= 14 ;

}

}

(14) 以下函数的功能是删除字符串s中的所有数字字符。请填空。

void dele(char *s)

{ int n=0,i;

for(i=0,s[i];i++)

if(15)

s[n++]=s[i];

s[n]=16;

}

(15) 设函数findbig已定义为求3个数中的最大值。以下程序将利用函数指针调用findbig函数。请填空。

main()

{ int findbig(int,int,int);

int (*f)(),x,yz,z,big;

f=17;

scanf("%d%d%d",&x,&y,&z);

big=(*f)(x,y,z);

printf("bing=%d\n",big);

}

(16) 以下程序的输出结果是18 。

#defint MCRA(m) 2*m

#define MCRB(n,m) 2*MCRA(n)+m

main()

{ int i=2,j=3;

printf("%d\n",MCRB(j,MCRA(i)));

}

(17) 设有以下定义

struct ss

{ int info;struct ss *link;}x,y,z;

且已建立如下图所示链表结构:

□□ →□□→□□

X Y Z

请写出删除点y的赋值语句19 。

(18) 已有文本文件test.txt,其中的内容为:Hello,everyone!。以下程序中,文件test.txt已正确为"读"而打开,由文件指针fr指向该文件,则程序的输出结果是 20 。

#include

main()

{ FILE *fr; char str[40];

……

fgets(str,5,fr);

printf("%s\n",str);

fclose(fr);

}

2003年4月全国计算机等级考试二级C笔试答案

一、选择题

1-5:CDDAD 6-10:BACDB 11-15:CABDB 16-20:ADCAA

21-25:CBDAB 26-30:DCDAB 31-35:CBDCC 36-40:CCBAC

41-45:CAAAC 46-50:DBDDA

二、填空题

(1) 64

(2) COPY A.TXT+B.TXT A.TXT

(3) @

(4) USER >OUT.DAT

(5) PRN或LPT1或LPT2

(6) -3

(7) i=10,j=20

(8) 1

(9) 5 0 3

(10) 58

(11) 7

(12) 9

(13) x[i][i]和x[i-1][j-1]+x[i-1][j]

(14) !(s[i]>='0'&&s[i]<='9')和'\0'

(15) findbig

(16) 16

(17) x.link=y.link;

(18) Hell

④ 计算机等级考试题库百度网盘免费资源在线学习

链接: https://pan.baidu.com/s/1CFP0Wm06zRVIslYWpPx-HA

提取码: as3q ? ④ 计算机等级考试题库 未来教育vip版 2019.9 无忧考吧 最新题库 2019.3 无忧考吧 计算机题库 2018.9 无忧考吧考试题库 2018.9 未来教育 最新版 2018.3 无忧考吧版题库 2018.3 未来教育 普通版 未来教育计算机等级考试手机版3.0 vip破解版,不用注册,直接点确定.apk 一级MS Office无纸化考试模拟软件.zip 三级网络技术无纸化考试模拟软件.zip 三级数据库无纸化考试模拟软件.zip 三级嵌入式无纸化考试模拟软件.zip 二级C无纸化考试模拟软件.zip 二级C++无纸化考试模拟软件(Express).zip

TAGS:
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;
2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;
3.作者投稿可能会经我们编辑修改或补充。

搜索
排行榜
标签列表