全国计算机二级C语言上机考试全真题库Word下载.docx
《全国计算机二级C语言上机考试全真题库Word下载.docx》由会员分享,可在线阅读,更多相关《全国计算机二级C语言上机考试全真题库Word下载.docx(123页珍藏版)》请在冰豆网上搜索。
elset=1;
while(*p)
x=x*10-48+(*p++);
returnx*t;
第二套
1.给定程序中,函数fun的功能是将形参给定的字符串、整数、浮点数写到文本文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:
源程序存放在考生文件夹下的BLANK1.C中。
第1处FILE*fp;
第2处while(!
feof(fp)){
第3处putchar(ch);
ch=fgetc(fp);
}
给定程序MODI1.C中函数fun的功能是:
依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。
voidfun(char*s)
{inti,j;
for(i=0,j=0;
s[i]!
=’\0’;
i++)
if(s[i]>
=’0’&
s[i]<
=’9’)
s[j++]=s[i];
s[j]=’\0’;
3.程序设计题
请编写函数fun,函数的功能是:
将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。
voidfun(chars[][N],char*b)
inti,j,n=0;
for(i=0;
i<
N;
/*请填写其相应语句完成其功能*/
{
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(intn,intm)
{NODE*h=NULL,*p,*s;
inti;
p=(NODE*)malloc(sizeof(NODE));
h=p;
p->
next=null;
for(i=1;
=n;
{s=(NODE*)malloc(sizeof(NODE));
s->
data=rand()%m;
s->
next=p->
next;
next=s;
p=p->
returnh;
3.程序设计
请编写函数fun,函数的功能是:
统计一行字符串中单词的个数,作为函数值返回。
一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格格开,一行的开始没有空格。
intfun(char*s)
intk=1;
while(*s)
{if(*s==’’)k++;
s++;
returnk;
第四套
函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的学生数据输出到filename所指的文件中,覆盖原来的文件内容。
第1处fp=fopen(filename,"
rb"
);
第2处if(s[i].sno>
s[j].sno)
第3处fwrite(s,sizeof(STU),N,fp);
在字符串的最前端加入n个*号,形成新串,差且覆盖原串。
字符串的长度最长允许为79.
voidfun(chars[],intn)
chara[80],*p;
inti;
p=s;
n;
a[i]=’*’;
do
{a[i]=*p;
i++;
while(*p++)
a[i]=0;
strcpy(s,a);
统计各年龄段的人数,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;
i++)b[i]=0;
{j=a[i]/10;
if(j>
10)b[M-1]++;
elseb[j]++;
第五套
给定程序中,函数fun的功能是将参数给定的字符串、整数、浮点数写到文件文件中,再用字符串方式从此文本文件中逐个读入,并调用库函数atoi和atof将字符串换成相应的整数和浮点数,然后将其显示在屏幕上。
FILE*fp;
fclose(fp);
fscanf(fp,”%s%s%s”,str,str1,str2);
对N名学生的学生成绩,按从高到低的顺序找出前m(m<
10)名学生来,将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。
STU*fun(STUa[],intm)
{STUb[N],*t;
inti,j,k;
t=(STU*)calloc(sizeof(STU),m);
b[i]=a[i];
for(k=0;
k<
m;
k++)
{for(i=j=0;
if(b[i].s>
b[j].s)j=i;
t[k]=b[j];
b[j].s=0;
returnt;
请编写函数fun,函数的功能是,删去一维数组中所有相同的数,使之只剩一个。
数组中的数已按从小到大的顺序排序,函数返回删除后数组中数据的个数。
intfun(inta[],intn)
inti,j=1,k=a[0];
i++)
if(k!
=a[i]){
a[j++]=a[i];
k=a[i];
a[j]=0;
returnj;
第六套
给定程序中,函数fun的功能是根据形参i的值返回某个函数年值。
当调用正确时,程序输出:
x1=5.000000
x2=3.000000.
x1*x1+x1*x2=40.000000
第一处:
doublefun(inti,doublex,doubley)
第二处:
returnf1(x);
第三处:
returnf2(x,y);
比较两个字符串,将长的那个字符串的首地址作为函数值返回。
#include<
stdio.h>
char*fun(char*s,char*t)
intsl=0,tl=0;
char*ss,*tt;
ss=s;
tt=t;
while(*ss)
{sl++;
ss++;
while(*tt)
{tl++;
tt++;
if(tl>
sl)returnt;
elsereturns;
移动字符串中的内容,移动的规则如下:
把第1到第m个字符,平均移到字符串的最后,把第m+1个到最后的;
字符移到字符串的前部。
voidfun(char*w,intm)
fun1(w);
第七套
程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的信息,函数fun的功能是输出这位学生的信息。
第1处voidshow(STUtt)
第2处printf(“%5.1f”,tt.score[i]);
第2处show(std)
给定程序MODI1中函数fun的功能是:
求出数组中最大数和次最大数,并把最大数和a[0]中的数对调、次最大数和a[1]中的数对调。
intfun(int*a,intn)
{inti,m,t,k;
for(i=0;
2;
i++){
m=i;
for(k=i+1;
if(a[k]>
a[m])m=k;
t=a[i];
a[i]=a[m];
a[m]=t;
3.程序设计
请编写一个unsignedfun(unsignedw),w是一个大于10的无符号整数,若w是n(n>
=2)位的整数,函数求出w的后n-1位的数作为函数值返回。
例如:
w值为5923,则函数返回923;
w值为923则函数返回23。
unsignedfun(unsignedw)
if(w>
=10000)returnw%10000;
=1000)returnw%1000;
=100)returnw%100;
returnw%10;
第八套
给定程序通过定义并赋值的方式,利用结构体变量存储了一名学生学号、姓名和3门课的成绩。
函数fun的功能是将该学生的各科成绩都乘以一个系统a。
第1处voidmodify(STU*ss,floata)
第2处ss->
score[i]*=a;
第3处modify(&
std,a);
求k!
<
13>
所求阶乘的值作为函数值返回。
若k=10,则应输出:
3628800。
longfun(intk)
if(k>
0)
return(k*fun(k-1));
elseif(k==0)
return1L;
程序定义了N*N的二维数组,并在主函数中自动赋值。
请编写函数fun(inta[][N],intn),函数的功能是:
使数组左下三角元素中的值乘以n。
intfun(inta[][N],intn)
for(j=0;
=i;
j++)
a[i][j]*=n;
第九套
1.程序填空
给定程序中,函数fun的功能是将不带头节点的单向链表结点数据域中的数据从小到大排序。
即若原链表结点数据域从头到尾的数据为:
10、4、2、8、6,排序后链表结点数据域从头至尾的数据为2、4、6、8、10。
第1处q=p->
第2处while(q)
第3处p=p->
将s所指字符串中的字母转换为按字母序列的后续字母(但Z转换为A,z转换成a),其它字符不变。
voidfun(char*s)
{if(*s>
’A’&
*s<
=’Z’
||*s>
=’a’&
=’z’)
{if(*s==’Z’)*s=’A’;
elseif(*s==’z’)*s=’a’;
else*s=*s+1;
voidfun(int*w,intp,intn)
inti,j=0,b[N];
for(i=p+1;
i++)b[j++]=w[i];
=p;
b[j++]=w[i];
w[i]=b[i];
第十套
1程序填空
判定形参a所指的N×
N(规定N为奇数)的矩阵是否是“幻方”,若是,函数返回值为1;
不是,函数返回值为0。
“幻方”的判定条件是:
矩阵每行、每列、主对角线及反对角线上元素之和都相等。
第1处row=colum=0;
第2处if((row!
=colum)||(row!
=m1))return0;
第3处return1;
2程序修改
给定MODI1.Cfun函数的功能是:
根据整型形参m,计算如下公式的值。
t=1-1/2-1/3-……-1/m.
sdio.h>
doublefun(intm)
doublet=1.0;
for(i=2;
=m;
/********found***********/
t=t-1.0/i;
3程序设计
请编写一个函数,函数的功能是删除字符串中的所有空格。
intfun(char*str)
char*p=str;
inti=0;
while(*p){
if(*p!
=’’)str[i++]=*p;
str[i]=0;
第十一套
给定程序中,函数fun的功能是将带头结点的单向链表逆置。
即若原链表中从头至尾结点数据域依次为:
2、4、6、8、10,逆置后,从头至尾结点数据域依次为:
10、8、6、4、2、。
第1处p=h->
第2处if(p==0)return;
第3处p=q;
q=r;
计算s所指字符串中含有t所指字符串的数目,并作为函数值返回。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
#include<
string.h>
#defineN80
intfun(char*s,char*t)
{intn;
char*p,*r;
n=0;
while(*s)
{p=s;
/*******found******/
r=t;
while(*r)
if(*r==*p){r++;
elsebreak;
if(*r==0)
n++;
returnn;
将放在字符串数组中的M个字符串(每串的长度不超过N),按顺序合并组成一个新的字符串,函数fun中给出的语句供供参考。
voidfun(chara[M][N]),char*b)
{inti;
*b=0;
i++)strcat(b,a[i]);
第十二套
给定程序中,函数fun的功能是将不带头结点的单向链表逆置。
10、8、6、4、2。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
第1处NODE*fun(NODE*h)
第2处r=q->
第3处q=r;
将s所指字符串中位于奇数位置的字符或ASCII码为偶数的字符放入t所指数组中(规定第一个字符放在第0位中)。
#include<
voidfun(char*s,chart[])
{inti,j=0;
strlen(s);
if(i%2||s[i]%2==0)
t[j++]=s[i];
t[j]=’\0’;
将M行N列的二维数组中的数据,按列的顺序依次放到一维数组中。
函数fun中给出的语句仅供参考。
voidfun(int(*s)[10],int*b,int*n,intmm,intnn)
inti,j,np=0;
nn;
mm;
b[np]=s[j][i];
np=i*mm+j+1;
*n=np;
第十三套
给定程序中,函数fun的功能是将带头节点的单向链表结点数据域中的数据从小到大排序,即若原链表结点数据域从头至尾的数据为:
10、4、2、8、6,排序后链表结点数据域从头至尾的数据为:
2、4、6、8、10。
第1处p=h->
第2处q=p->
第3处if(p->
data>
=q->
data))
给定程序MODI1.C是建立一个带头结点的单向链表,并用随机函数为各结点数据域赋值。
函数fun的作用是求出单向链表结点(不包括头结点)数据域中的最大值,并且作为函数值返回。
fun(NODE*h)
{intmax=-1;
NODE*p;
p=h->
while(p)
{if(p->
max)
max=p->
data;
returnmax;
将M行N列的二维数组中的数据,按行的顺序依次放到一维数组中。
一维数组中数据的个数存放在形参n所指的存储单元中。
voidfun(int(*s)[10],int*b,int*n,intmm,intnn)
inti,j,k;
k=i*nn+j;
b[k]=s[i][j];
*n=mm*nn;
}
第十四套
给定程序中,函数fun的功能是用函数指针指向要调用的函数,并进行调用。
规定在_2_处使f指向函数f1,在_3_处使f指向函数f2。
x1=5.000000,x2=3.000000,x1*x1+x1*x2=40.000000请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
第1处double(*f)();
第2处f=f1;
第3处f=f2;
给定程序MODI1.C是建立一个带头点的单向链表,并用随机函数为各结点赋值。
函数fun的功能是将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并且作为函数值返回。
intfun(NODE*h)
{intsum=0;
while(p)
{if(p->
data%2==0)
sum+=p->
returnsum;
请编写函数fun,函数的功能是:
判断字符串是否为回文?
叵是,函数返回1,主函数中输出:
YEX,否则返回0,主函数中输出NO。
回文是指顺读t和倒读都一样的字符串。
inti,j=strlen(str);
j/2;
if(str[i]!
=str[j-i-1])return0;
return1;
第十五套
程序通过定义学生结构体变量,存储了学生的学号,姓名和3门课的成绩。
所有学生数据均以二进制方式输出到student.dat文件中。
函数fun的功能是从指定文件中找出指定学号的学生数据,读入此学生数据,对该生的分数进行修改,使每门课的分数加3分,修改后重写文件中该学生的数据,即用该学生的背后数据覆盖原数据,其它学生数据不变;
若找不到,则什么都不做。
第1处while(!
feof(fp))
第2处if(n.sno==sno)break;
第3处fseek(fp,-1L*sizeof(STU),SEEKCUR);
给定程序MODI1