计算机二级复习资料50题.docx
《计算机二级复习资料50题.docx》由会员分享,可在线阅读,更多相关《计算机二级复习资料50题.docx(223页珍藏版)》请在冰点文库上搜索。
计算机二级复习资料50题
第1套.填空
给定程序中,函数fun的功能是:
将a所指4*3矩阵中第k行的元素与第0行
元素交换。
例如,有下列矩阵:
123
456
789
101112
若k为2,程序执行结果为:
789
456
123
101112
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:
源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
#defineN3
#defineM4
/**********found**********/
voidfun(int(*a)[N],int__1__)
{inti,temp;
/**********found**********/
for(i=0;i<__2__;i++)
{temp=a[0][i];
/**********found**********/
a[0][i]=__3__;
a[k][i]=temp;
}
}
main()
{intx[M][N]={{1,2,3},{4,5,6},{7,8,9},{10,11,12}},i,j;
printf("Thearraybeforemoving:
\n\n");
for(i=0;i{for(j=0;jprintf("\n\n");
}
fun(x,2);
printf("Thearrayaftermoving:
\n\n");
for(i=0;i{for(j=0;jprintf("\n\n");
}
}
第1空:
k第2空:
N第3空:
a[k][i]
程序修改题:
给定程序MODI1.C中函数fun的功能是:
读入一个字符串(长度<20),将该字符
串中的所有字符按ASCII码升序排序后输出。
例如,若输入:
edcba,则应输出:
abcde。
请改正程序中的错误,使它能统计出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
#include
voidfun(chart[])
{
charc;
inti,j;
/**********found***********/
for(i=strlen(t);i;i--)
for(j=0;j
/**********found***********/
if(t[j]{
c=t[j];
t[j]=t[j+1];
t[j+1]=c;
}
}
main()
{
chars[81];
printf("\nPleaseenteracharacterstring:
");
gets(s);
printf("\n\nBeforesorting:
\n\"%s\"",s);
fun(s);
printf("\nAftersortingdecendingly:
\n\"%s\"\n",s);
}
第1处:
“for(i=strlen(t);i;i--)”应改为“for(i=strlen(t)-1;i;i--)”;
第2处:
“if(t[j]t[j+1])”。
程序设计
请编写一个函数fun,其功能
是:
将ss所指字符串中下标为奇数位置上的字母转换为大写(若该位置不是字母,则不转换)
例如,若输入"abc4EFg",则应输出"aBc4EFg"
注意:
部分源程序在文件PROG1.C文件中。
请勿改动住函数main和其它函数的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
#include
voidfun(char*ss)
{
}
voidmain(void)
{
chartt[51];voidNONO();
printf("\nPleaseenterancharacterstringwithin50characters:
\n");
gets(tt);
printf("\n\nAfterchanging,thestring\n\"%s\"",tt);
fun(tt);
printf("\nbecomes\n\"%s\"",tt);
NONO();
}
voidNONO()
{
/*请在此函数内打开文件,输入测试数据,调用fun函数,
输出数据,关闭文件。
*/
chartt[51],ch;
FILE*rf,*wf;
intlen,i=0;
rf=fopen("in.dat","r");
wf=fopen("out.dat","w");
while(i<10){
fgets(tt,50,rf);
len=strlen(tt)-1;
ch=tt[len];
if(ch=='\n'||ch==0x1a)tt[len]=0;
fun(tt);
fprintf(wf,"%s\n",tt);
i++;
}
fclose(rf);
fclose(wf);
}
答案:
voidfun(char*ss)
{
inti=0;
while(*ss)
{
if(*ss>=’a’&&*ss<=’z’&&i%2==1)
ss++;
i++;
}
}
第2套.填空
给定程序中,函数fun的功能是:
将N*N矩阵中元
789素的值按列右移1个位置,右边
被移出矩阵的元素绕回左边。
例如,N=3,有下列矩阵
123
456
计算结果为
312
645
978
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:
源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
#defineN4
voidfun(int(*t)[N])
{inti,j,x;
/**********found**********/
for(i=0;i<___1___;i++)
{
/**********found**********/
x=t[i][___2___];
for(j=N-1;j>=1;j--)
t[i][j]=t[i][j-1];
/**********found**********/
t[i][___3___]=x;
}
}
main()
{intt[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10},i,j;
printf("Theoriginalarray:
\n");
for(i=0;i{for(j=0;jprintf("\n");
}
fun(t);
printf("\nTheresultis:
\n");
for(i=0;i{for(j=0;jprintf("\n");
}
}
第一空:
N第二空:
N-1第三空:
0
改错
给定程序MODI1.C中函数fun的功能是:
计算并输出下列级数的前N项之和Sn,直到Sn+1大于q为止,q的值通过形参传入。
234N+1
Sn=---+---+---+.....+------
123N
例如,若q的值为:
50.0则函数值为:
49.394948。
请改正程序中的错误,使程序能输出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
doublefun(doubleq)
{intn;doubles,t;
n=2;
s=2.0;
while(s<=q)
{
t=s;
/************found************/
s=s+(n+1)/n;
n++;
}
printf("n=%d\n",n);
/************found************/
returns;
}
main()
{
printf("%f\n",fun(50));
}
1处改为“s=s+(n+1)/n;”应改为“s=s+(double)(n+1)/n;”;
2处改为“returns;”应改为“returnt;”
程序设计题
编写函数fun,它的功能是:
求Fibonacci数列中大于t的最小的一个数,结果由函数返回
其中Fibonacci数列F(n)的定义为:
F(0)=0,F
(1)=1
F(n)=F(n-1)+F(n-2)
例如:
当t=1000时,函数值为:
1597。
#include
#include
intfun(intt)
{
}
main()/*主函数*/
{intn;
voidNONO();
n=1000;
printf("n=%d,f=%d\n",n,fun(n));
NONO();
}
voidNONO()
{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。
*/
FILE*fp,*wf;
inti,n,s;
fp=fopen("in.dat","r");
wf=fopen("out.dat","w");
for(i=0;i<10;i++){
fscanf(fp,"%d",&n);
s=fun(n);
fprintf(wf,"%d\n",s);
}
fclose(fp);
fclose(wf);
}
答案:
intfun(intt)
{
intf0=0,f1=1,f=0;
while(f{
f=f0+f1;
f0=f1;
f1=f;
}
returnf;
}
第三套:
填空
给定程序中已建立带有头节点的单项列表,链表中的各节点按数据域递增有序链接。
函数fun的功能是:
删除链表中数据域相同的结点,使之只保留一个。
#include
#include
#defineN8
typedefstructlist
{intdata;
structlist*next;
}SLIST;
voidfun(SLIST*h)
{SLIST*p,*q;
p=h->next;
if(p!
=NULL)
{q=p->next;
while(q!
=NULL)
{if(p->data==q->data)
{p->next=q->next;
/**********found**********/
free(___1___);
/**********found**********/
q=p->___2___;
}
else
{p=q;
/**********found**********/
q=q->___3___;
}
}
}
}
SLIST*creatlist(int*a)
{SLIST*h,*p,*q;inti;
h=p=(SLIST*)malloc(sizeof(SLIST));
for(i=0;i{q=(SLIST*)malloc(sizeof(SLIST));
q->data=a[i];p->next=q;p=q;
}
p->next=0;
returnh;
}
voidoutlist(SLIST*h)
{SLIST*p;
p=h->next;
if(p==NULL)printf("\nThelistisNULL!
\n");
else
{printf("\nHead");
do{printf("->%d",p->data);p=p->next;}while(p!
=NULL);
printf("->End\n");
}
}
main()
{SLIST*head;inta[N]={1,2,2,3,4,4,4,5};
head=creatlist(a);
printf("\nThelistbeforedeleting:
\n");outlist(head);
fun(head);
printf("\nThelistafterdeleting:
\n");outlist(head);
}
答案:
第1空:
q第2空:
next第3空:
next
修改题:
用选择法对数组中n个元素按从小到大的顺序进行修改。
#include
#defineN20
voidfun(inta[],intn)
{inti,j,t,p;
for(j=0;j/************found************/
p=j
for(i=j+1;iif(a[i]/************found************/
p=j;
t=a[p];a[p]=a[j];a[j]=t;
}
}
main()
{
inta[N]={9,6,8,3,-1},i,m=5;
printf("排序前的数据:
");
for(i=0;ifun(a,m);
printf("排序后的数据:
");
for(i=0;i}
第1处:
“p=j”应改为“p=j;”。
第2处:
“p=j;”应改为“p=i;”。
程序设计题
请编写一个函数fun,它的功能是:
求出11到m之间(含m)能被7或11整除的所有整数放在数组a中
通过n返回这些数的个数。
例如,若传送给m的值为50.则程序输出:
711142122283335424449
#include
#defineM100
voidfun(intm,int*a,int*n)
{
}
main()
{intaa[M],n,k;
voidNONO();
fun(50,aa,&n);
for(k=0;kif((k+1)%20==0)printf("\n");
elseprintf("%4d",aa[k]);
printf("\n");
NONO();
}
voidNONO()
{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。
*/
FILE*fp,*wf;
inti,n,j,k,aa[M],sum;
fp=fopen("in.dat","r");
wf=fopen("out.dat","w");
for(i=0;i<10;i++){
fscanf(fp,"%d,",&j);
fun(j,aa,&n);
sum=0;
for(k=0;kfprintf(wf,"%d\n",sum);
}
fclose(fp);
fclose(wf);
}
答案:
voidfun(intm,int*a,int*n)
{
inti,j=0;
for(i=1;i<=m;i++)
if((i%7==0)||(i%11==0))
a[j++]=i;
*n=j;
}
第四套:
填空题
函数fun的功能是:
将形参n中,各位上为偶数的数取出,并使原来从高位到地位相反的
顺序组成一个新数,并作为函数值返回。
例如,输入一个整数:
27638496,函数返回值为:
64862.
#include
unsignedlongfun(unsignedlongn)
{unsignedlongx=0;intt;
while(n)
{t=n%10;
/**********found**********/
if(t%2==__1__)
/**********found**********/
x=__2__+t;
/**********found**********/
n=__3__;
}
returnx;
}
main()
{unsignedlongn=-1;
while(n>99999999||n<0)
{printf("Pleaseinput(0");scanf("%ld",&n);}
printf("\nTheresultis:
%ld\n",fun(n));
}
答案:
第1空:
0第2空:
x*10第3空:
n/10
修改题:
函数fun的功能是:
将长整型数中每一位上为奇数的数依次取出,构成一个新书数
放在t中,高位仍在高位,地位仍在低位。
例如,当s中的数为;87653142,t中的数为:
7531
#include
voidfun(longs,long*t)
{intd;
longsl=1;
/************found************/
t=0;
while(s>0)
{d=s%10;
/************found************/
if(d%2==0)
{*t=d*sl+*t;
sl*=10;
}
s/=10;
}
}
main()
{longs,t;
printf("\nPleaseenters:
");scanf("%ld",&s);
fun(s,&t);
printf("Theresultis:
%ld\n",t);
}
答案:
第1处:
“t=0;”应改为“*t=0;”;
第2处:
“d%2==0”应改为“d%2==1”。
程序设计题;
编写一个函数fun,它的功能是:
实现两个字符串的连接(不使用库函数strcat),
即把p2所指的字符串连接到p1所指的字符串后面。
例如,分别输入下面两个字符串后,
FirstString--
SecondString
程序输出;
FirstString--SecondString
#include
voidfun(charp1[],charp2[])
{
}
main()
{chars1[80],s2[40];voidNONO();
printf("Enters1ands2:
\n");
scanf("%s%s",s1,s2);
printf("s1=%s\n",s1);
printf("s2=%s\n",s2);
printf("Invokefun(s1,s2):
\n");
fun(s1,s2);
printf("Afterinvoking:
\n");
printf("%s\n",s1);
NONO();
}
voidNONO()
{/*本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。
*/
inti;
FILE*rf,*wf;
chars1[80],s2[40];
rf=fopen("in.dat","r");
wf=fopen("out.dat","w");
for(i=0;i<10;i++){
fscanf(rf,"%s",s1);
fscanf(rf,"%s",s2);
fun(s1,s2);
fprintf(wf,"%s\n",s1);
}
fclose(rf);
fclose(wf);
}
答案:
voidfun(charp1[],charp2[])
{
while(*p1)
p1++;
while(*p2)
*p1++=*p2++;
*p1=’\0’;
}
第五套;填空题
程序通过定义学生结构体变量,存储了学生的学号,姓名和3门课的成绩。
所有
学生数据均以二进制方式输出到student.dat文件中。
函数fun的功能是从指定
文件中找出指定学号的学生数据,读入此学生的数据,对该生的分数进行修改
,是每门课的分数家3分,修改后重写文件中该学生的数据,即用学生的新数据
覆盖原数据,其它学生数据不变;若找不到,则什么都不做。
#include
#defineN5
typedefstructstudent{
longsno;
charname[10];
floatscore[3];
}STU;
voidfun(char*filename,longsno)
{FILE*fp;
STUn;inti;
fp=fopen(filename,"rb+");
/**********found**********/
while(!
feof(__1__))
{fread(&n,sizeof(STU),1,fp);
/**********found**********/
if(n.sno__2__sno)break;
}
if(!
feof(fp))
{for(i=