国二上机试题.docx
《国二上机试题.docx》由会员分享,可在线阅读,更多相关《国二上机试题.docx(288页珍藏版)》请在冰豆网上搜索。
国二上机试题
填空题
1、给定程序的功能是调用fun函数建立班级通讯录。
通讯录中记录每位学生的编号、姓名和电话号码。
班级的人数和学生的信息从键盘读入,每个人的信息作为一个数据块写到名为myfile5.dat的二进制文件中。
/**********found**********/
intfun(_1__*std)/*STYPE*/
{/**********found*********/
__2*fp;inti;/*FILE*/
/**********found**********/
fwrite(&std[i],sizeof(STYPE),1,___3___);
/*fp*/
2、给定程序的功能是:
从键盘输入若干行文本(每行不超过80个字符),写到文件myfile4.txt中,用-1作为字符串结束的标志。
然后将文件的内容读出显示在屏幕上。
文件的读写由自定义函数ReadText和WriteText实现。
/**********found**********/
voidWriteText(FILE___1___)
/**fw*/
){/**********found*********/
fputs(___2___,fw);/*str*/
/**********found**********/
printf("%s",_3__);/*str*/
3、给定程序中,函数fun的功能是:
将自然数1~10以及它们的平方根写到名为myfile3.txt的文本文件中,然后再顺序读出显示在屏幕上。
/**********found**********/
fprintf(___1___,"%d%f\n",
i,sqrt((double)i));/*fp*/
/**********found**********/
___2___;/*fclose(fp)*/
printf("\nThedatainfile:
\n");
/**********found**********/
if((fp=fopen(___3___,"r"))==NULL)/*fname*/
4、给定程序的功能是:
调用函数fun将指定源文件中的内容复制到指定的目标文件中,复制成功时函数返回值为1,失败时返回值为0。
在复制的过程中,把复制的内容输出到终端屏幕。
主函数中源文件名放在变量sfname中,目标文件名放在变量tfname中。
/**********found**********/
if((fs=fopen(source,___1___))==NULL)/*“r”*/
/**********found**********/
while(!
feof(__2__))/*fs*/
{putchar(ch);
/**********found**********/
fputc(ch,___3___);/*ft*/
5、给定程序中已建立一个带有头结点的单向链表,链表中的各结点按结点数据域中的数据递增有序链接。
函数fun的功能是:
把形参x的值放入一个新结点并插入到链表中,插入后各结点数据域的值仍保持递增有序。
;
/**********found**********/
s->data=___1___;/*x*/
/**********found**********/
q=___2___;/*p*/
/**********found**********/
q->next=___3___;/*s*/
}
6、给定程序中已建立一个带有头结点的单向链表,在main函数中将多次调用fun函数,每调用一次fun函数,输出链表尾部结点中的数据,并释放该结点,使链表缩短。
/**********found**********/
t=t->___1___;/*next*/
}
/**********found**********/
printf("%d",___2___);
/*t->data*/
s->next=NULL;
/**********found**********/
free(___3___);/*t*/}
7、给定程序中已建立一个带有头结点的单向链表,链表中的各结点按数据域递增有序链接。
函数fun的功能是:
删除链表中数据域值相同的结点,使之只保留一个。
/**********found**********/
free(___1___);/*q*/
/**********found**********/
q=p->___2___;/*next*/
}
else{p=q;
/**********found**********/
q=q->___3___;/*next*/
}}}}
8、给定程序中,函数fun的功能是:
在带有头结点的单向链表中,查找数据域中值为ch的结点。
找到后通过函数值返回该结点在链表中所处的顺序号;若不存在值为ch的结点,函数返回0值。
/**********found**********/
while(p!
=___1___)/*0*/
{n++;
/**********found**********/
if(p->data==ch)
return___2___;/*n*/
/**********found**********/
k=fun(___3___);/*head,ch*/
9、给定程序中,函数fun的功能是:
统计出带有头结点的单向链表中结点的个数,存放在形参n所指的存储单元中。
/**********found**********/
___1___=0;/**n*/
p=h->next;
/**********found**********/
p=p->___2___;/*next*/}}
/**********found**********/
fun(___3__,&num);/*head*/
10、给定程序中,函数fun的功能是:
计算出带有头结点的单向链表中各结点数据域中值之和作为函数值返回。
/**********found**********/
s+=p->___1___;/*data*/
/**********found**********/
p=p->___2___;/*next*/}
/**********found**********/
printf("\nsum=%d\n",fun(___3___));/*head*/}
11、人员的记录由编号和出生年、月、日组成,N名人员的数据已在主函数中存入结构体数组std中,且编号唯一。
函数fun的功能是:
找出指定编号人员的数据,作为函数值返回,由主函数输出,若指定编号不存在,返回数据中的编号为空串。
/**********found**********/
___1__fun(STU*std,char*num)/*STU*/
{inti;STUa={"",9999,99,99};
for(i=0;i/**********found**********/
if(strcmp(___2___,num)==0)
/*std[i].num*/
/**********found**********/
return(___3___);/*std[i]*/
12、人员的记录由编号和出生年、月、日组成,N名人员的数据已在主函数中存入结构体数组std中。
函数fun的功能是:
找出指定出生年份的人员,将其数据放在形参k所指的数组中,由主函数输出,同时由函数值返回满足指定条件的人数。
/**********found**********/
if(_1_==year)/*std[i].year*/
/**********found**********/
k[n++]=___2___;/*std[i]*/
/**********found**********/
return(___3___);/*n*/
}
13、给定程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的学号、姓名和3门课的成绩。
函数fun的功能是将该学生的各科成绩都乘以一个系数a。
/**********found**********/
voidmodify(___1___*ss,floata)/*STU*/
/**********found**********/
ss->___2_*=a;/*score[i]*/
}
/**********found**********/
modify(___3___,a);/*&std*/
14、给定程序中,函数fun的功能是:
将形参指针所指结构体数组中的三个元素按num成员进行升序排列。
/**********found**********/
voidfun(PERSON__1__)/**std*/
{/**********found*********/
__2___temp;/*PERSON*/
/**********found**********/
fun(___3___);/*std*/
15、给定程序中,函数fun的功能是:
将形参std所指结构体数组中年龄最大者的数据作为函数值返回,并在main函数中输出。
/**********found**********/
max=___1___;/**std*/
for(i=1;i/**********found**********/
if(max.age<___2___)max=std[i];/*std[i].age*/
/**********found**********/
printf("\nName:
%s,Age:
%d\n",__3__,max.age);/*max.name*/
}
16、程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的信息。
函数fun的功能是输出这位学生信息。
/**********found**********/
voidshow(STU__1__)/*tt*/
{inti;
/**********found**********/
printf("%5.1f",___2___);
/*tt.score[i]*/
/**********found**********/
show(___3___);/*std*/}
17、给定程序中,fun的功能是:
对形参ss所指字符串数组中的M个字符串按长度由短到长进行排序。
ss所指字符串数组中共M个字符串,且串长/**********found**********/
for(j=__1_;j/**********found**********/
if(n[k]>n[j])__2__;/*k=j*/
;
/**********found**********/
strcpy(ss[k],___3__);/*t*/
18、给定程序中,函数fun的功能是:
求出形参ss所指字符串数组中最长字符串的长度,其余字符串左边用字符*补齐,使其与最长的字符串等长。
字符串数组中共有M个字符串,且串长/**********found**********/
n=len;___1___=i;/*k*/
/**********found**********/
for(j=_2_;j>=0;j--)/*len*/
/**********found**********/
___3___='*';/*ss[i][j]*/
19、函数fun的功能是:
求出形参ss所指字符串数组中最长字符串的长度,将其余字符串右边用字符*补齐,使其与最长的字符串等长。
ss所指字符串数组中共有M个字符串,且串长/**********found**********/
n=strlen(___1___);/*ss[i]*/
for(j=0;j/**********found**********/
ss[i][___2___]='*';/*n+j*/
/**********found**********/
ss[i][n+j+___3___]='\0';/*1*/
20、给定程序中,函数fun的功能是:
求ss所指字符串数组中长度最长的字符串所在行下标,作为函数值返回,并把串长放在形参n所指变量中。
ss所指字符串数组中共有M个字符串,且串长/**********found**********/
intfun(char(*ss)__1_,int*n)/*[N]*/
/**********found**********/
if(i==0)*n=__2__;/*len*/
if(len>*n){
/**********found**********/
___3___;/**n=len;*/
21、给定程序中,函数fun的功能是:
求ss所指字符串数组中长度最短的字符串所在的行下标,作为函数值返回,并把其串长放在形参n所指变量中。
ss所指字符串数组共有M个字符串,串长/**********found**********/
for(i=0;i<__1_;i++)/*M*/
{len=strlen(ss[i]);
if(i==0)*n=len;
/**********found**********/
if(len___2___*n)/*<*/
/**********found**********/
return(___3___);/*k*/
}
22、给定程序中,函数fun的功能是:
将s所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符串和非数字字符串原有的先后次序。
例如,形参s所指的字符串为:
def35adh3kjsdf7。
执行结果为:
defadhkjsdf3537。
/**********found**********/
t2[j]=s[i];___1___;/*j++*/
}
/**********found**********/
for(i=0;i/*s[i]=t1[i]*/
/**********found**********/
for(i=0;i<___3___;i++)s[k+i]=t2[i];/*j*/
}
23、给定程序中,函数fun的功能是:
在形参s所指字符串中的每个数字字符之后插入一个*号。
例如,形参s所指的字符串为:
def35adh3kjsdf7。
执行结果为:
def3*5*adh3*kjsdf7*。
/**********found**********/
if(s[i]>='0'___1___s[i]<='9')/*&&*/
{n=0;
/**********found**********/
while(s[i+1+n]!
=__2__)n++;/*0*/
/**********found**********/
s[j+1]=___3___;/*s[j]*/
s[j+1]='*';
24、函数fun的功能是:
统计形参s所指字符串中数字字符出现的次数,并存放在形参t所指的变量中,最后在主函数中输出。
例如,形参s所指字符串为:
abcdef35adgh3kjsdf7。
输出结果为:
4。
/**********found**********/
for(i=0;___1___!
=0;i++)/*s[i]*/
/**********found**********/
if(s[i]>='0'&&s[i]<=___2___)n++;/*‘9’*/
/**********found**********/
___3___;/**t=n*/}
25、给定程序中,函数fun的功能是:
把形参s所指字符串中下标为奇数的字符右移到下一个奇数位置,最右边被移出字符串的字符绕回放到第一个奇数位置,下标为偶数的字符不动(注:
字符串的长度大于等于2)。
例如,形参s所指的字符串为:
abcdefgh,执行结果为:
ahcbedgf。
#i
/**********found**********/
if(n%2==0)k=n-__1__;/*1*/
elsek=n-2;
/**********found**********/
c=___2___;/*s[k]*/
for(i=k-2;i>=1;i=i-2)s[i+2]=s[i];
/**********found**********/
s[1]=___3___;/*c*/
}
26、给定程序中,函数fun的功能是:
对形参s所指字符串中下标为奇数的字符按ASCII码大小递增排序,并将排序后下标为奇数的字符取出,存入形参p所指字符数组中,形成一个新串。
例如,形参s所指的字符串为:
baawrskjghzlicda,执行后p所指字符数组中的字符串应为:
aachjlsw。
/**********found**********/
___1___;/*t=i*/
/**********found**********/
for(j=___2___+2;j/**********found**********/
p[j]=___3___;/*0*/
}
main()
27、给定程序中,函数fun的功能是:
在形参s所指字符串中寻找与参数c相同的字符,并在其后插入一个与之相同的字符,若找不到相同的字符则函数不做任何处理。
例如,s所指字符串为:
baacda,c中的字符为:
a,执行后s所指字符串为:
baaaacdaa。
/**********found**********/
for(i=0;s[i]!
=___1___;i++)/*0*/
if(s[i]==c)
/**********found**********/
n=___2___;/*0*/
/**********found**********/
s[j+1]=___3___;/*c*/
i=i+1;}}
28、给定程序中,函数fun的功能是:
有N×N矩阵,根据给定的m(m<=N)值,将每行元素中的值均右移m个位置,左边置为0。
例如,N=3,m=2,有下列矩阵
123
456
789
程序执行结果为
001
004
007
/**********found**********/
for(i=0;i{for(j=N-1-m;j>=0;j--)
/**********found**********/
t[i][j+_2__]=t[i][j];/*m*/
/**********found**********/
for(j=0;j<___3_;j++)/*m*/
t[i][j]=0;}}
29、给定程序中,函数fun的功能是:
将N×N矩阵中元素的值按列右移1个位置,右边被移出矩阵的元素绕回左边。
例如,N=3,有下列矩阵
123
456
789
计算结果为
312
645
978
/**********found**********/
for(i=0;i<___1___;i++)/*N*/
{
/**********found**********/
x=t[i][___2___];/*N-1*/
for(j=N-1;j>=1;j--)
t[i][j]=t[i][j-1];
/**********found**********/
t[i][___3___]=x;/*0*/
}}
{int
30、给定程序中,函数fun的功能是:
有N×N矩阵,将矩阵的外围元素顺时针旋转。
操作顺序是:
首先将第一行元素的值存入临时数组r,然后使第一列成为第一行,最后一行成为第一列,最后一列成为最后一行,临时数组中的元素成为最后一列。
例如,若N=3,有下列矩阵:
123
456
789
计算结果为
741
852
963
/**********found**********/
t[0][N-j-1]=t[j][___1___];/*0*/
for(j=0;jt[j][0]=t[N-1][j];
/**********found**********/
for(j=N-1;j>=0;_2_)/*j--*/
t[N-1][N-1-j]=t[j][N-1];
for(j=N-1;j>=0;j--)
/**********found**********/
t[j][N-1]=r[___3__];/*j*/
31、给定程序中,函数fun的功能是:
有N×N矩阵,以主对角线为对称线,对称元素相加并将结果存放在左下三角元素中,右上三角元素置为0。
例如,若N=3,有下列矩阵:
123
456
789
计算结果为
100
650
10149
/**********found**********/
voidfun(int(*t)_1_)/*[N]*/
/**********found**********/
___2___=t[i][j]+t[j][i];/*t[i][j]*/
/**********found**********/
___3___=0;/*t[j][i]*/
32、给定程序中,函数fun的功能是:
将N×N矩阵主对角线元素中的值与反向对角线对应位置上元素中的值进行交换。
例如,若N=3,有下列矩阵:
123
456
789
交换后为:
321
456
987
/**********found**********/
voidfun(int___1___,intn)/*t[][N]*/
/**********found**********/
for(___2___;i++)/*i=0;i/**********found**********/
t[i][n-1-i]=___3___;/*s*/
33、给定程序中,函数fun的功能是:
计算N×