C语言上机附加题附13答案文档格式.docx
《C语言上机附加题附13答案文档格式.docx》由会员分享,可在线阅读,更多相关《C语言上机附加题附13答案文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
j++)if(b[k]>
b[j])k=j;
if(k!
=i)
{
/**********found**********/
t=b[i];
b[i]=b[k];
b[k]=t;
}
mid=b[N/2];
i<
i++)
if(x[i]<
mid)x[i]=mid;
returnmid;
}
main()
{inti,x[N]={1,5,7,23,87,5,8,21,45};
i++)printf("
%d"
x[i]);
printf("
\nThemiddatais:
%d\n"
fun(x));
\n"
);
二、改错题
给定程序MODI1.C中,fun函数的功能是,删除b所指数组中小于10的数据。
主函数中输出删除后数组中余下的数据。
请改正函数fun中制定部位的错误,使它能得出正确的结果。
注意,不要改动main函数,不得增行或删行,也不得更改程序的结构!
stdlib.h>
#defineN20
intfun(int*b)
{
intt[N],i,num=0;
if(b[i]>
=10)
t[num++]=b[i];
num;
b[i]=t[i];
return(num);
{inta[N],i,num;
a数组中的数据:
N;
i++){a[i]=rand()%21;
%4d"
a[i]);
num=fun(a);
num;
i++)printf("
三、编程题
请编写函数fun其功能是:
统计s所指字符串中的数字字符个数,并作为函数值返回。
例如,s所指字符串中的内容是:
2def35adh253kjsdf7/kj8655x,
函数fun返回值为:
11
注意:
部分源程序在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
voidNONO();
intfun(char*s)
inti=0,num=0;
while(*(s+i)!
=0)
if(*(s+i)>
='
0'
&
*(s+i)<
9'
)num++;
i++;
returnnum;
{char*s="
2def35adh253kjsdf7/kj8655x"
;
%s\n"
s);
%d\n"
fun(s));
NONO();
voidNONO()
{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。
*/
FILE*fp,*wf;
inti;
chars[256];
fp=fopen("
C:
\\k01\\24010001\\in.dat"
"
r"
);
wf=fopen("
\\k01\\24010001\\out.dat"
w"
for(i=0;
i<
10;
i++){
fgets(s,255,fp);
fprintf(wf,"
fun(s));
fclose(fp);
fclose(wf);
附加题2
给定程序的主函数中,已给出由结构体构成的链表结点a、b、c,各结点的数据域中均存入字符,函数fun()的作用是,将a、b、c三个结点链接成一个单向链表,并输出链表节点中的数据。
不得增行或删行,也不得更改程序的结构!
typedefstructlist
{chardata;
structlist*next;
}Q;
voidfun(Q*pa,Q*pb,Q*pc)
{Q*p;
pa->
next=pb;
pb->
next=pc;
p=pa;
while(p)
{
%c"
p->
data);
p=p->
next;
{Qa,b,c;
a.data='
E'
b.data='
F'
c.data='
G'
c.next=NULL;
fun(&
a,&
b,&
c);
给定程序MODI1.C中,函数fun()的功能是统计s所致一维数组中0的个数(存在变量zero中)和1的个数(存在变量one中),并输出结果。
voidfun(int*s,intn)
inti,one=0,zero=0;
n;
switch(s[i])
case0:
zero++;
break;
case1:
one++;
printf("
one:
%dzero:
one,zero);
{inta[20]={1,1,1,0,1,0,0,0,1,0,0,1,1,0,0,1,0,1,0,0},n=20;
fun(a,n);
请编写函数fun,其功能是将形参s所指定的字符串放入形参a所指定的字符数组中,使a中存放同样的字符串。
说明:
不得使用系统提供的字符串函数。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
voidfun(char*a,char*s)
inti;
while(*a++=*s++);
{chars1[N],*s2="
abcdefghijk"
fun(s1,s2);
s1);
s2);
//NONO();
chars1[256],s2[256];
fgets(s2,255,fp);
fun(s1,s2);
%s"
附加题3
函数fun的功能是:
输出a所致数组中的前n个数据,要求每行输出5个数。
请在程序的下划线处填入正确的内容并把下划线删除,是程序得出正确的结果。
voidfun(int*a,intn)
{inti;
if(i%5==0)
{inta[100]={0},i,n;
n=22;
i++)a[i]=rand()%21;
fun(a,n);
给定程序MODI1.C中,函数fun的功能是,在任意给定的N个正整数中,从左到右依次逐个取三个数作为一组,按值大小找出该组数的中值。
用该中值替换与该组数对应的原三个数中的中间位置的数。
处理后原数列中首尾2个数不变。
处理后数列在主函数中输出。
例如,有10个正整数如下:
初始数列为:
657231858214538
第1组数为:
657中值为:
6
替换后的数列为:
667231858214538
第2组数为:
657中值为:
7
667231858214538
第3组数为:
72318中值为:
18
667181858214538
第4组数为:
23185中值为:
第5组数为:
1858中值为:
8
667181888214538
第6组数为:
5821中值为:
第7组数为:
82145中值为:
21
第8组数为:
214538中值为:
38
667181888213838
最终结果为:
请改正函数fun中制定部位的错误,使它能得出正确的结果。
注意,不要改动main函数,不得增行或删行,也不得更改程序的结构!
#defineN10
intfindmid(inta,intb,intc)
{intt;
t=(a>
b)?
(b>
c?
b:
(a>
c:
a)):
((a>
c)?
a:
((b>
b));
returnt;
voidfun(intx[])
{inti,a,b,c,t[N];
i++)t[i]=x[i];
N-2;
{a=t[i];
b=t[i+1];
c=t[i+2];
x[i+1]=findmid(a,b,c);
{inti,x[N]={6,5,7,23,18,5,8,21,45,38};
fun(x);
三、编程题
请编写函数fun,函数的功能是查找x在s所致数组中下标的位置作为函数值返回。
若x不存在,则返回-1.
#defineN15
intfun(int*s,intx)
inti=0,t=-1;
if(*(s+i)==x)
{t=i;
returnt;
{inta[N]={29,13,5,22,10,9,3,18,22,25,14,15,2,7,27},i,x,index;
给x输入待查找的数:
"
scanf("
%d"
&
x);
index=fun(a,x);
index=%d\n"
index);
inti,j,a[10],x,index;
for(j=0;
j<
j++){
fscanf(fp,"
&
a[j]);
index=fun(a,x);
index);
fclose(fp);
fclose(wf);