计算机二级上机题库100套.docx
《计算机二级上机题库100套.docx》由会员分享,可在线阅读,更多相关《计算机二级上机题库100套.docx(165页珍藏版)》请在冰豆网上搜索。
计算机二级上机题库100套
第一套:
1.1填空给定程序中,函数fun的功能是:
将形参n所指变量中,各位上为偶函数的数去除,剩余的书按原来从高位到低位的顺序组成一个新的数,并通过形参指针n传回所指变量。
voidfun(unsignedlong*n)
{unsignedlongx=0,i;intt;
i=1;
while(*n)
/**********found**********/
{t=*n%10;
/**********found**********/
if(t%2!
=0)
{x=x+t*i;i=i*10;}
*n=*n/10;}
/**********found**********/
*n=x;}
1.2改错给定程序MODI1.C中函数fun的功能是:
计算n!
。
doublefun(intn)
{doubleresult=1.0;
/************found************/
if(n==0)
return1.0;
while(n>1&&n<170)
/************found************/
result*=n--;
returnresult;}
1.3程序请编写一个函数fun,它的功能是:
将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。
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**********/
FILE*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(fp)){
/**********found**********/
putchar(ch);ch=fgetc(fp);}
putchar('\n');
fclose(fp);}
2.2改错给定程序MODI1.C中函数fun的功能是:
依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
#include
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';}
2.3程序请编写函数fun,函数的功能是:
将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。
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(filename,"rb+");
/**********found**********/
fseek(fp,-1L*sizeof(STU),SEEK_END);
/**********found**********/
fwrite(&n,sizeof(STU),1,fp);
fclose(fp);}
3.2改错给定程序MODI1.C中的函数Creatlink的功能是创建带头结点的单向链表,并为各结点数据域赋0到m-1的值。
typedefstructaa
{intdata;
structaa*next;
}NODE;
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***********/
returnh;}
3.3程序请编写函数fun,函数的功能是:
统计一行字符串中单词的个数,作为函数值返回。
一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始没有空格。
(有问题)
intfun(char*s)
{intk=1;
while(*s)
{if(*s=='')k++;
s++;}
returnk;}
第四套:
4.1填空程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。
所有学生数据均以二进制方式输出到文件中。
函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排列后,再用二进制方式把排序后的学生数据输出到filename所指的文件中,覆盖原来的文件内容。
#defineN5
typedefstructstudent{
longsno;
charname[10];
floatscore[3];
}STU;
voidfun(char*filename)
{FILE*fp;inti,j;
STUs[N],t;
/**********found**********/
fp=fopen(filename,"rb");
fread(s,sizeof(STU),N,fp);
fclose(fp);
for(i=0;ifor(j=i+1;j/**********found**********/
if(s[i].sno>s[j].sno)
{t=s[i];s[i]=s[j];s[j]=t;}
fp=fopen(filename,"wb");
/**********found**********/
fwrite(s,sizeof(STU),N,fp);
fclose(fp);}
4.2改错给定程序MODI1.C中函数fun的功能是:
在字符串的最前端假如n个*号,形成新串,并且覆盖原串。
注意:
字符串的长度最长允许为79。
voidfun(chars[],intn)
{chara[80],*p;
inti;
/**********found***********/
p=s;
for(i=0;ido
{a[i]=*p;
i++;}
/**********found***********/
while(*p++);
a[i]=0;
strcpy(s,a);}
4.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**********/
FILE*fp;
charstr[100],str1[100],str2[100];
inta1;doublef1;
fp=fopen("file1.txt","w");
fprintf(fp,"%s%d%f\n",s,a,f);
/**********found**********/
fclose(fp);
fp=fopen("file1.txt","r");
/**********found**********/
fscanf(fp,"%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);}
5.2改错给定程序MODI1.C中函数fun的功能是:
对N名学生的学习成绩按从高到低的顺序找出前m(≤10)名学生出来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首笛子作为函数值返回。
typedefstructss
{charnum[10];
ints;
}STU;
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;}
5.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。
doublef1(doublex)
{returnx*x;}
doublef2(doublex,doubley)
{returnx*y;}
/**********found**********/
doublefun(inti,doublex,doubley)
{if(i==1)
/**********found**********/
returnf1(x);
else
/**********found**********/
returnf2(x,y);}
6.2改错给定程序MODI1.C中函数fun的功能是:
比较两个字符串,将长的那个字符串的首地址作为函数值返回。
/**********found**********/
char*fun(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;}
6.3程序请编写函数fun函数的功能是:
移动字符串中的内容,移动的规则如下:
把第1到第m个字符,平移到字符串的最后,把第m+1到最后的字符移动到字符串的前部。
例如,字符串中原由的内容为:
ABCDEFGHIJK,m的值为3,则移动后,字符串中的内容应该是DEFGHIJKABC。
voidfun1(char*w)/*本函数的功能是将字符串中字符循环左移一个位置*/
{inti;chart;
t=w[0];
for(i=0;iw[i]=w[i+1];
w[strlen(w)-1]=t;}
voidfun(char*w,intm)/*可调用fun1函数左移字符*/
{inti;
for(i=0;i第七套:
7.1填空程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的信息。
函数fun的功能是输出这位学生的信息。
typedefstruct
{intnum;
charname[9];
charsex;
struct{intyear,month,day;}birthday;
floatscore[3];
}STU;
/**********found**********/
voidshow(STUtt)
{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",tt.score[i]);
printf("\n");}
7.2改错给定程序MODI1.C中函数fun的功能是:
求出数组中最大数和次最大数,并把最大数和a[0]中的数对调、次最大数和a[1]中的数对调。
intfun(int*a,intn)
{inti,m,t,k;
for(i=0;i<2;i++){
/**********found**********/
m=i;
for(k=i+1;k/**********found**********/
if(a[k]>a[m])m=k;
t=a[i];a[i]=a[m];a[m]=t;}}
7.3程序请编写一个函数unsignedfun(unsignedw),w是一个大于10的无符号整数,若w是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。
voidshow(STUtt)
{inti;
printf("%d%s:
",tt.num,tt.name);
for(i=0;i<3;i++)
printf("%5.1f",tt.score[i]);
printf("\n");}
/**********found**********/
voidmodify(STU*ss,floata)
{inti;
for(i=0;i<3;i++)
/**********found**********/
ss->score[i]*=a;}
8.2改错给定程序MODI1.C中的函数fun的功能是:
求k!
(k<13),所求阶乘的值作为函数值返回。
例如:
若K=10,则应输出:
3628800。
longfun(intk)
{/************found************/
if(k>0)
return(k*fun(k-1));
/************found************/
elseif(k==0)
return1L;}
8.3程序程序定义了N×N的二维数组,并在主函数中自动赋值。
请编写函数fun(inta[],intn),函数的功能是:
使数组左下三角元素中的值乘以n。
例如:
若n的值为3,a数组中的值为则返回主程序后a数组中的值应为。
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=p->next;
/**********found**********/
while(q)
{if(p->data>q->data)
{t=p->data;p->data=q->data;q->data=t;}
q=q->next;}
/**********found**********/
p=p->next;}}
9.2改错给定程序MODI1.C中函数fun的功能是:
将s所指字符串中的字母转换为按字母序列的后续字母(但Z转换为A,z转换为a),其他字符不变。
voidfun(char*s)
{/**********found***********/
while(*s)
{if(*s>='A'&*s<='Z'||*s>='a'&&*s<='z')
{if(*s=='Z')*s='A';
elseif(*s=='z')*s='a';
else*s+=1;}
/**********found***********/
s++;}}
9.3程序请编写函数fun,函数的功能是:
移动一维数组中的内容;若猪组中有N个整数,要求把下标从0到P(含P,P小于等于N-1)的数组元素平移到数组的最后。
例如,一维数组中的原始内容为:
1,2,3,4,5,6,7,8,9,10;P的值为3。
移动后一维数组中的内容应为:
5,6,7,8,9,10,1,2,3,4。
voidfun(int*w,intp,intn)
{inti,j=0,b[N];
for(i=p+1;ifor(i=0;i<=p;i++)b[j++]=w[i];
for(i=0;i第十套:
10.1填空给定程序中,函数fun的功能是:
判定形参a所指的N×N(规定N为奇数)的矩阵是否是“幻方”,若是,函数返回值为1;不四,函数返回值为0。
“幻方”的判定条件是:
矩阵每行、每列、主对角线及反对角线上元素之和都相等。
例如,以下3×3的矩阵就是一个“幻方”:
。
intfun(int(*a)[N])
{inti,j,m1,m2,row,colum;
m1=m2=0;
for(i=0;i{j=N-i-1;m1+=a[i][i];m2+=a[i][j];}
if(m1!
=m2)return0;
for(i=0;i/**********found**********/
row=colum=0;
for(j=0;j{row+=a[i][j];colum+=a[j][i];}
/**********found**********/
if((