C语言上机附加题附13答案.docx

上传人:b****6 文档编号:7010099 上传时间:2023-01-16 格式:DOCX 页数:12 大小:17.76KB
下载 相关 举报
C语言上机附加题附13答案.docx_第1页
第1页 / 共12页
C语言上机附加题附13答案.docx_第2页
第2页 / 共12页
C语言上机附加题附13答案.docx_第3页
第3页 / 共12页
C语言上机附加题附13答案.docx_第4页
第4页 / 共12页
C语言上机附加题附13答案.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

C语言上机附加题附13答案.docx

《C语言上机附加题附13答案.docx》由会员分享,可在线阅读,更多相关《C语言上机附加题附13答案.docx(12页珍藏版)》请在冰豆网上搜索。

C语言上机附加题附13答案.docx

C语言上机附加题附13答案

C语言--上机附加题-附1-3答案

七、附加题

附加题1

一、填空题

给定的程序中,函数fun的功能是:

在任意给定的9个正整数中找出按升序排列时处于中间的数,将原数据序列中比该中间数小的书用该中间数代替,位置不变,在主函数中输出处理后的数据序列,并将中间数作为函数值返回。

例如,有9个正整数:

1572387582145

按升序排列时的中间数为:

8

处理后主函数中的输出的数列为:

8882387882145

请在程序的下划线处天如正确的内容并把下划线删除,使程序得出正确的结果。

注意:

源程序存放在考生文件夹下的BLANK1.C中。

不得增行或删行,也不得更改程序的结构!

#include

#defineN9

intfun(intx[])

{inti,j,k,t,mid,b[N];

for(i=0;i

for(i=0;i<=N/2;i++)

{k=i;

for(j=i+1;jb[j])k=j;

if(k!

=i)

{

/**********found**********/

t=b[i];b[i]=b[k];b[k]=t;

}

}

/**********found**********/

mid=b[N/2];

for(i=0;i

/**********found**********/

if(x[i]

returnmid;

}

main()

{inti,x[N]={1,5,7,23,87,5,8,21,45};

for(i=0;i

printf("\nThemiddatais:

%d\n",fun(x));

for(i=0;i

printf("\n");

}

二、改错题

给定程序MODI1.C中,fun函数的功能是,删除b所指数组中小于10的数据。

主函数中输出删除后数组中余下的数据。

请改正函数fun中制定部位的错误,使它能得出正确的结果。

注意,不要改动main函数,不得增行或删行,也不得更改程序的结构!

#include

#include

#defineN20

intfun(int*b)

{

/**********found**********/

intt[N],i,num=0;

for(i=0;i

if(b[i]>=10)

/**********found**********/

t[num++]=b[i];

/**********found**********/

for(i=0;i

b[i]=t[i];

return(num);

}

main()

{inta[N],i,num;

printf("a数组中的数据:

\n");

for(i=0;i

printf("\n");

num=fun(a);

for(i=0;i

printf("\n");

}

三、编程题

请编写函数fun其功能是:

统计s所指字符串中的数字字符个数,并作为函数值返回。

例如,s所指字符串中的内容是:

2def35adh253kjsdf7/kj8655x,

函数fun返回值为:

11

注意:

部分源程序在文件PROG1.C文件中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include

voidNONO();

intfun(char*s)

{

inti=0,num=0;

while(*(s+i)!

=0)

{

if(*(s+i)>='0'&&*(s+i)<='9')num++;

i++;

}

returnnum;

 

}

main()

{char*s="2def35adh253kjsdf7/kj8655x";

printf("%s\n",s);

printf("%d\n",fun(s));

NONO();

}

voidNONO()

{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。

*/

FILE*fp,*wf;

inti;

chars[256];

fp=fopen("C:

\\k01\\24010001\\in.dat","r");

wf=fopen("C:

\\k01\\24010001\\out.dat","w");

for(i=0;i<10;i++){

fgets(s,255,fp);

fprintf(wf,"%d\n",fun(s));

}

fclose(fp);

fclose(wf);

}

附加题2

一、填空题

给定程序的主函数中,已给出由结构体构成的链表结点a、b、c,各结点的数据域中均存入字符,函数fun()的作用是,将a、b、c三个结点链接成一个单向链表,并输出链表节点中的数据。

请在程序的下划线处天如正确的内容并把下划线删除,使程序得出正确的结果。

注意:

源程序存放在考生文件夹下的BLANK1.C中。

不得增行或删行,也不得更改程序的结构!

#include

typedefstructlist

{chardata;

structlist*next;

}Q;

voidfun(Q*pa,Q*pb,Q*pc)

{Q*p;

/**********found**********/

pa->next=pb;

pb->next=pc;

p=pa;

while(p)

{

/**********found**********/

printf("%c",p->data);

/**********found**********/

p=p->next;

}

printf("\n");

}

main()

{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中),并输出结果。

请改正函数fun中制定部位的错误,使它能得出正确的结果。

注意,不要改动main函数,不得增行或删行,也不得更改程序的结构!

#include

voidfun(int*s,intn)

{

/**********found**********/

inti,one=0,zero=0;

for(i=0;i

/**********found**********/

switch(s[i])

{

/**********found**********/

case0:

zero++;break;

case1:

one++;

}

printf("one:

%dzero:

%d\n",one,zero);

}

main()

{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中存放同样的字符串。

说明:

不得使用系统提供的字符串函数。

注意:

部分源程序在文件PROG1.C文件中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include

#defineN20

voidNONO();

voidfun(char*a,char*s)

{

inti;

while(*a++=*s++);

}

main()

{chars1[N],*s2="abcdefghijk";

fun(s1,s2);

printf("%s\n",s1);

printf("%s\n",s2);

//NONO();

}

voidNONO()

{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。

*/

FILE*fp,*wf;

inti;

chars1[256],s2[256];

fp=fopen("C:

\\k01\\24010001\\in.dat","r");

wf=fopen("C:

\\k01\\24010001\\out.dat","w");

for(i=0;i<10;i++){

fgets(s2,255,fp);

fun(s1,s2);

fprintf(wf,"%s",s1);

}

fclose(fp);

fclose(wf);

}

 

附加题3

一、填空题

函数fun的功能是:

输出a所致数组中的前n个数据,要求每行输出5个数。

请在程序的下划线处填入正确的内容并把下划线删除,是程序得出正确的结果。

注意:

源程序存放在考生文件夹下的BLANK1.C中。

不得增行或删行,也不得更改程序的结构!

#include

#include

voidfun(int*a,intn)

{inti;

for(i=0;i

{

/**********found**********/

if(i%5==0)

/**********found**********/

printf("\n");

/**********found**********/

printf("%d",a[i]);

}

}

main()

{inta[100]={0},i,n;

n=22;

for(i=0;i

fun(a,n);

printf("\n");

}

二、改错题

给定程序MODI1.C中,函数fun的功能是,在任意给定的N个正整数中,从左到右依次逐个取三个数作为一组,按值大小找出该组数的中值。

用该中值替换与该组数对应的原三个数中的中间位置的数。

处理后原数列中首尾2个数不变。

处理后数列在主函数中输出。

例如,有10个正整数如下:

初始数列为:

657231858214538

第1组数为:

657中值为:

6

替换后的数列为:

667231858214538

第2组数为:

657中值为:

7

替换后的数列为:

667231858214538

第3组数为:

72318中值为:

18

替换后的数列为:

667181858214538

第4组数为:

23185中值为:

18

替换后的数列为:

667181858214538

第5组数为:

1858中值为:

8

替换后的数列为:

667181888214538

第6组数为:

5821中值为:

8

替换后的数列为:

667181888214538

第7组数为:

82145中值为:

21

替换后的数列为:

667181888214538

第8组数为:

214538中值为:

38

替换后的数列为:

667181888213838

最终结果为:

667181888213838

请改正函数fun中制定部位的错误,使它能得出正确的结果。

注意,不要改动main函数,不得增行或删行,也不得更改程序的结构!

#include

#defineN10

intfindmid(inta,intb,intc)

{intt;

t=(a>b)?

(b>c?

b:

(a>c?

c:

a)):

((a>c)?

a:

((b>c)?

c:

b));

/**********found**********/

returnt;

}

voidfun(intx[])

{inti,a,b,c,t[N];

/**********found**********/

for(i=0;i

for(i=0;i

{a=t[i];b=t[i+1];c=t[i+2];

/**********found**********/

x[i+1]=findmid(a,b,c);

}

}

main()

{inti,x[N]={6,5,7,23,18,5,8,21,45,38};

for(i=0;i

printf("\n");

fun(x);

for(i=0;i

printf("\n");

}

三、编程题

请编写函数fun,函数的功能是查找x在s所致数组中下标的位置作为函数值返回。

若x不存在,则返回-1.

注意:

部分源程序在文件PROG1.C文件中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include

#include

#defineN15

voidNONO();

intfun(int*s,intx)

{

inti=0,t=-1;

while(*(s+i)!

=0)

{

if(*(s+i)==x)

{t=i;break;}

i++;

}

returnt;

}

main()

{inta[N]={29,13,5,22,10,9,3,18,22,25,14,15,2,7,27},i,x,index;

printf("a数组中的数据:

\n");

for(i=0;i

printf("给x输入待查找的数:

");scanf("%d",&x);

index=fun(a,x);

printf("index=%d\n",index);

NONO();

}

voidNONO()

{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。

*/

FILE*fp,*wf;

inti,j,a[10],x,index;

fp=fopen("C:

\\k01\\24010001\\in.dat","r");

wf=fopen("C:

\\k01\\24010001\\out.dat","w");

for(i=0;i<10;i++){

for(j=0;j<10;j++){

fscanf(fp,"%d",&a[j]);

}

fscanf(fp,"%d",&x);

index=fun(a,x);

fprintf(wf,"%d\n",index);

}

fclose(fp);

fclose(wf);

}

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1