51CTO下载计算机二级C语言机考题库.doc
《51CTO下载计算机二级C语言机考题库.doc》由会员分享,可在线阅读,更多相关《51CTO下载计算机二级C语言机考题库.doc(16页珍藏版)》请在冰点文库上搜索。
![51CTO下载计算机二级C语言机考题库.doc](https://file1.bingdoc.com/fileroot1/2023-4/30/6efcea8e-5d38-4564-a192-252f77ecbe9f/6efcea8e-5d38-4564-a192-252f77ecbe9f1.gif)
第1套:
1
1.填空题
给定程序中,函数fun的功能是:
将形参n所指变量中,各位上为偶数的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针n传回所指变量。
例如,输入一个数:
27638496,新的数为:
739。
voidfun(unsignedlong*n)
{unsignedlongx=0,i;intt;
i=1;
while(*n)
/**********found**********/
{t=*n%__1__;
/**********found**********/
if(t%2!
=__2__)
{x=x+t*i;i=i*10;}
*n=*n/10;
}
/**********found**********/
*n=__3__;
}
答案:
(1)10
(2)0 (3)x
2.改错题
给定程序MODI1.C中函数fun的功能是:
计算n!
。
例如,给n输入5,则输出120.000000。
doublefun(intn)
{doubleresult=1.0;
/************found************/
ifn==0
return1.0;
while(n>1&&n<170)
/************found************/
result*=n--
returnresult;
}
答案:
(1)if(n==0)
(2)result*=n--;
3.编程题
请编写一个函数fun,它的功能是:
将一个数字字符串转换为一个整数。
例如,若输入字符串“-1234”,则函数把它转换为整数数值-1234。
longfun(char*p)
{inti,len,t;/*len为串长,t为正负标识*/
longx=0;
len=strlen(p);
if(p[0]=='-')
{t=-1;len--;p++;}
elset=1;
/*以下完成数字字符串转换为一个数字*/
while(*p)x=x*10-48+(*p++);
returnx*t;
}
第2套:
1.填空题
给定程序中,函数fun的功能是将形参给定的字符串、整数、浮点数写到文本文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。
voidfun(char*s,inta,doublef)
{/**********found**********/
__1__fp;
charch;
fp=fopen("file1.txt","w");
fprintf(fp,"%s%d%f\n",s,a,f);
fclose(fp);
fp=fopen("file1.txt","r");
printf("\nTheresult:
\n\n");
ch=fgetc(fp);
/**********found**********/
while(!
feof(__2__)){
/**********found**********/
putchar(__3__);ch=fgetc(fp);}
putchar('\n');
fclose(fp);
}
答案:
(1)FILE*
(2)fp (3)ch
2.改错题
给定程序MODI1.C中函数fun的功能是:
依次取出字符串中所有数字字符,形成的字符串,并取代原字符串。
voidfun(char*s)
{inti,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";
}
答案:
(1)s[j++]=s[i];
(2)s[j]='\0';
3.编程题
请编写函数fun,函数的功能是:
将m行n列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。
例如,二维数组中的数据为:
WWWW
SSSS
HHHH
则字符串中的内容应该是:
WSHWSHWSH。
voidfun(chars[][N],char*b)
{inti,j,n=0;
for(i=0;i{for(j=0;jb[n]=s[j][i];
n=i*M+j+1;
}
}
b[n]='\0';
}
第3套:
1.填空题
程序通过定义学生结构体变量,存储了学生的学号,姓名和3门课的成绩。
所有学生数据均以二进制方式输出到文件中。
函数fun的功能是重写形参filename所指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其它学生的数据不变。
voidfun(char*filename,STUn)
{FILE*fp;
/**********found**********/
fp=fopen(__1__,"rb+");
/**********found**********/
fseek(__2__,-1L*sizeof(STU),SEEK_END);
/**********found**********/
fwrite(&n,sizeof(STU),1,__3__);
fclose(fp);
}
答案:
(1)filename
(2)fp(3)fp
2.改错题
给定程序MODI1.C中的函数Creatlink的功能是创建军带头结点的单向链表,并为各结点数据域赋0到m-1的值。
NODE*Creatlink(intn,intm)
{NODE*h=NULL,*p,*s;
inti;
/**********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***********/
returnp;
}
答案:
(1)p=(NODE*)malloc(sizeof(NODE));
(2)returnh;
3.编程题
请编写函数fun,函数的功能是:
统计一行字符串中单词的个数,作为函数值返回。
一行字符串在主函数中输入,规定所有的单词由小写字母组成,单词之间由若干个空格隔开,一行的开始没有空格。
intfun(char*s)
{intk=1;
while(*s){
if(*s=='')k++;
s++;
}
returnk;
}
第4套:
1.填空题
程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。
所有学生数据均以二进制方式输出到文件中,函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的学生数据输出到filename所指的文件中,覆盖原来的文件内容。
voidfun(char*filename)
{FILE*fp;inti,j;
STUs[N],t;
/**********found**********/
fp=fopen(filename,__1__);
fread(s,sizeof(STU),N,fp);
fclose(fp);
for(i=0;ifor(j=i+1;j/**********found**********/
if(s[i].sno__2__s[j].sno)
{t=s[i];s[i]=s[j];s[j]=t;}
fp=fopen(filename,"wb");
/**********found**********/
__3__(s,sizeof(STU),N,fp);/*二进制输出*/
fclose(fp);
}
答案:
(1)"rb"
(2)>(3)fwrite
2.改错题
给定程序MODI1.C中函数fun的功能是:
在字符串的最前端加入n个*号,形成新串,并且覆盖原串。
注意:
字符串的长度最长允许为79。
voidfun(chars[],intn)
{chara[80],*p;
inti;
/**********found***********/
s=p;
for(i=0;ido
{a[i]=*p;
i++;
}
/**********found***********/
while(*p++)
a[i]=0;
strcpy(s,a);
}
答案:
(1)p=s;
(2)while(*p++);
3.编程题
请编写函数fun,函数的功能是:
统计各年龄段的人数。
N个年龄通过调用随机函数获得,并放在主函数的age数组中;要求函数把0至9岁年龄段的人数放在d[0]中,把10至19岁年龄段的人数放在d[1]中,把20至29岁年龄段的人数放在d[2]中,其余依次类推,把100岁(含100岁)以上年龄的人数放在d[10]中。
结果在主函数中输出。
voidfun(int*a,int*b)
{inti,j;
for(i=0;ifor(i=0;ij=a[i]/10;
if(j>10)b[M-1]++;elseb[j]++;
}
}
第5套:
1.填空题
给定程序中,函数fun的功能是将参数给定的字符串、整数浮点数写到文本文件中,再用字符串方式从此文本文件中逐个读入,并调用库函数atoi和atof将字符串转换成相应的整数、浮点数,然后将其显示在屏幕上。
voidfun(char*s,inta,doublef)
{/**********found**********/
__1__fp;
charstr[100],str1[100],str2[100];
inta1;doublef1;
fp=fopen("file1.txt","w");
fprintf(fp,"%s%d%f\n",s,a,f);
/**********found**********/
__2__;
fp=fopen("file1.txt","r");
/**********found**********/
fscanf(__3__,"%s%s%s",str,str1,str2);
fclose(fp);
a1=atoi(str1);
f1=atof(str2);
printf("\nTheresult:
\n\n%s%d%f\n",str,a1,f1);
}
答案:
(1)FILE*
(2)fclose(fp) (3)fp
2.改错题
给定程序MODI1.C中函数fun的功能是:
对n名学生的学习成绩,按从高到低的顺序找出前m(m≤10)名学生来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。
STU*fun(STUa[],intm)
{STUb[N],*t;
inti,j,k;
/**********found**********/
t=(STU*)calloc(sizeof(STU),m)
for(i=0;ifor(k=0;k{for(i=j=0;iif(b[i].s>b[j].s)j=i;
/**********found**********/
t(k)=b(j);
b[j].s=0;
}
returnt;
}
答案:
(1)t=(STU*)calloc(sizeof(STU),m);
(2)t[k]=b[j];
3.编程题
请编写函数fun,函数的功能是:
删去一维数组中所有相同的数,使之只剩一个。
数组中的数已按由小到大的排序排列,函数返回删除后数组中数据的个数。
例如,一维数组中的数据是:
2223445666677899101010。
删除后,数组中的内容应该是:
2345678910。
intfun(inta[],intn)
{inti,j=1,k=a[0];
for(i=1;iif(k!
=a[i]){
a[j++]=a[i];
k=a[i];
}
a[j]=0;
returnj;
}
第6套:
1.填空题
给定程序中,函数fun的功能是根据形参i的值返回某个函数的值。
当调用正确时,程序输出:
X1=5.000000,X2=3.000000,x1*x1+x1*x2=40.000000
/**********found**********/
__1__fun(inti,doublex,doubley)
{if(i==1)
/**********found**********/
return__2__(x);
else
/**********found**********/
return__3__(x,y);
}
答案:
(1)double
(2)f1 (3)f2
2.改错题
给定程序MODI1.C中函数fun的功能是:
比较两个字符串,将长的那个字符串的首地址作为函数值返回。
/**********found**********/
charfun(char*s,char*t)
{intsl=0,tl=0;char*ss,*tt;
ss=s;tt=t;
while(*ss)
{sl++;
/**********found**********/
(*ss)++;
}
while(*tt)
{tl++;
/**********found**********/
(*tt)++;
}
if(tl>sl)returnt;
elsereturns;
}
答案:
(1)char*fun(char*s,char*t)
(2)ss++; (3)tt++;
3.编程题
请编写函数fun,函数的功能是:
移动字符串中的内容,移动的规则如下:
把第1到第m个字符,平移到字符串的最后,把第m+1到最后的字符移动到字符串的前部。
例如,字符串中原有的内容为:
ABCDEFGHIJK,m的值为3,则移动后,字符串中的内容应该是:
DEFGHIJKABC。
voidfun(char*w,intm)/*可调用fun1函数左移字符*/
{inti;
for(i=0;i}
第7套:
1.填空题
程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的信息。
函数fun的功能是输出这位学生的信息。
/**********found**********/
voidshow(STU___1___)
{inti;
printf("\n%d%s%c%d-%d-%d",tt.num,tt.name,tt.sex,
tt.birthday.year,tt.birthday.month,tt.birthday.day);
for(i=0;i<3;i++)
/**********found**********/
printf("%5.1f",___2___);
printf("\n");
}
main()
{STUstd={1,"Zhanghua",'M',1961,10,8,76.5,78.0,82.0};
printf("\nAstudentdata:
\n");
/**********found**********/
show(___3___);
}
答案:
(1)tt
(2)tt.score[i] (3)std
2.改错题
给定程序MODI1.C中函数fun的功能是:
求出数组中最大数和次最大数,并把最大数和a[0]中的数对调、次最大数和a[1]中的数对调。
intfun(int*a,intn)
{inti,m,t,k;
for(i=0;i<2;i++){
/**********found**********/
m=0;
for(k=i+1;k/**********found**********/
if(a[k]>a[m])k=m;
t=a[i];a[i]=a[m];a[m]=t;
}
}
答案:
(1)m=i;
(2)if(a[k]>a[m])m=k;
3.编程题
请编写一个函数unsignedfun(unsignedw),w是一个大于10的无符号整数,若w是n(n≥2)位的整数,函数求出w的低n-1位的数作为函数值返回。
例如:
w值为5923,则函数返回923;w值为923则函数返回23。
unsignedfun(unsignedw)
{if(w>10000)w%=10000;
elseif(w>1000)w%=1000;
elseif(w>100)w%=100;
elseif(w>10)w%=10;
returnw;
}
第8套:
1.填空题
给定程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的学号、姓名和3门课的成绩。
函数fun的功能是将该学生的各科成绩都乘以一个系数a。
/**********found**********/
voidmodify(___1___*ss,floata)
{inti;
for(i=0;i<3;i++)
/**********found**********/
ss->___2___*=a;
}
main()
{STUstd={1,"Zhanghua",76.5,78.0,82.0};
floata;
printf("\nTheoriginalnumberandnameandscores:
\n");
show(std);
printf("\nInputanumber:
");scanf("%f",&a);
/**********found**********/
modify(___3___,a);
printf("\nAresultofmodifying:
\n");
show(std);
}
答案:
(1)STU
(2)score[i] (3)&std
2.改错题
给定程序MODI1.C中函数fun的功能是:
求k!
(k<13),所求阶乘的值作为函数值返回。
例如:
若k=10,则应输出:
3628800。
longfun(intk)
{/************found************/
ifk>0
return(k*fun(k-1));
/************found************/
elseif(k=0)
return1L;
}
答案:
(1)if(k>0)
(2)elseif(k==0)
3.编程题
程序定义了n×n的二维数组,并在主函数中自动赋值。
请编写函数Fun(inta[][N],intn),函数的功能是:
使数组左下三角元素中的值乘以n。
例如:
若n的值为3,a数组中的值为
a=197397
238则返回主程序后a数组中的值应为698
456
121518
intfun(inta[][N],intn)
{inti,j;
for(i=0;ifor(j=0;j<=i;j++)
a[i][j]*=n;
}
第9套:
1.填空题
给定程序中,函数fun的功能是将不带头节点的单向链表结点数据域中的数据从小到大排序。
即若原链表结点数据域从头到尾的数据为:
10、4、2、8、6,排序后链表结点数据域从头至尾的数据为:
2、4、6、8、10。
voidfun(NODE*h)
{NODE*p,*q;intt;
p=h;
while(p){
/**********found**********/
q=__1__;
/**********found**********/
while(__2__)
{if(p->data>q->data)
{t=p->data;p->data=