计算机技能改错易.docx

上传人:b****7 文档编号:23605594 上传时间:2023-05-18 格式:DOCX 页数:19 大小:17.92KB
下载 相关 举报
计算机技能改错易.docx_第1页
第1页 / 共19页
计算机技能改错易.docx_第2页
第2页 / 共19页
计算机技能改错易.docx_第3页
第3页 / 共19页
计算机技能改错易.docx_第4页
第4页 / 共19页
计算机技能改错易.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

计算机技能改错易.docx

《计算机技能改错易.docx》由会员分享,可在线阅读,更多相关《计算机技能改错易.docx(19页珍藏版)》请在冰豆网上搜索。

计算机技能改错易.docx

计算机技能改错易

计算机技能改错(易)

2011-02-0919:

53试卷编号:

8539

所属语言:

大学计算机基础

试卷方案:

程序改错易

试卷总分:

300分

共有题型:

1种

━━━━━━━━━━━━━━━━━━

一、程序改错共10题(共计300分)

━━━━━━━━━━━━━━━━━━

第1题(30.0分)题号:

4

/*------------------------------------------------------

【程序改错】

--------------------------------------------------------

功能:

在一个已按升序排列的数组中插入一个数,插入后,数

组元素仍按升序排列。

------------------------------------------------------*/

#defineN11

main()

{

inti,j,t,number,a[N]={1,2,4,6,8,9,12,15,149,156};

printf("pleaseenteranintegertoinsertinthearray:

\n");

/**********FOUND**********/

scanf("%d",&number)

printf("Theoriginalarray:

\n");

for(i=0;i

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

printf("\n");

/**********FOUND**********/

for(i=N-1;i>=0;i--)

if(number<=a[i])

/**********FOUND**********/

a[i]=a[i-1];

else

{

a[i+1]=number;

/**********FOUND**********/

exit;

}

if(number

printf("Theresultarray:

\n");

for(i=0;i

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

printf("\n");

}

答案:

1).scanf("%d",&number);

2).for(i=N-2;i>=0;i--)或for(i=N-2;0<=i;i--)

3).a[i+1]=a[i];

4).break;

 

第2题(30.0分)题号:

255

/*------------------------------------------------------

【程序改错】

--------------------------------------------------------

功能:

以下程序把两个数按由大到小的顺序输出来.

------------------------------------------------------*/

/***********FOUND***********/

swap(int*p1,*p2)

{

intp;

p=*p1;

*p1=*p2;

*p2=p;

}

main()

{

inta,b,*p,*q;

printf("inputa,b:

");

/***********FOUND***********/

scanf("%d%d",a,b);

p=&a;

q=&b;

if(a

swap(p,q);

printf("a=%d,b=%d\n",a,b);

/***********FOUND***********/

printf("max=%d,min=%d\n",p,q);

}

答案:

1).swap(int*p1,int*p2)或voidswap(int*p1,int*p2)

2).scanf("%d%d",&a,&b);

3).printf("max=%d,min=%d\n",*p1,*p2);或printf("max=%d,min=%d\n",a,b);

 

第3题(30.0分)题号:

370

/*------------------------------------------------------

【程序改错】

--------------------------------------------------------

功能:

将s所指字符串中出现的、t1所指子串全部替换成t2所指

子字符串,所形成的新串放在w所指的数组中。

在此处,

要求t1和t2所指字符串的长度相同。

例如:

当s所指字符串中的内容为:

"abcdabfab",t1所指子串中

的内容为:

"ab",t2所指子串中的内容为:

"99"时,结果

在w所指的数组中的内容应为:

"99cd99f99"。

------------------------------------------------------*/

#include

#include

#include

intfun(char*s,char*t1,char*t2,char*w)

{

inti;char*p,*r,*a;

strcpy(w,s);

while(*w)

{

p=w;r=t1;

/**********FOUND**********/

while(r)

if(*r==*p)

{

r++;

p++;

}

else

break;

/**********FOUND**********/

if(*r='\0')

{

a=w;r=t2;

/**********FOUND**********/

while(*a)

{

*a=*r;

a++;

r++;

}

w+=strlen(t2);

}

else

w++;

}

}

main()

{

chars[100],t1[100],t2[100],w[100];

clrscr();

printf("\nPleaseenterstringS:

");scanf("%s",s);

printf("\nPleaseentersubstringt1:

");scanf("%s",t1);

printf("\nPleaseentersubstringt2:

");scanf("%s",t2);

if(strlen(t1)==strlen(t2))

{

fun(s,t1,t2,w);

printf("\nTheresultis:

%s\n",w);

}

else

printf("Error:

strlen(t1)!

=strlen(t2)\n");

}

答案:

1).while(*r)

2).if(*r=='\0')

3).while(*r)

 

第4题(30.0分)题号:

402

/*------------------------------------------------------

【程序改错】

--------------------------------------------------------

功能:

编写函数fun求20以内所有5的倍数之积。

------------------------------------------------------*/

#defineN20

#include"stdio.h"

main()

{

intsum;

sum=fun(5);

printf("%d以内所有%d的倍数之积为:

%d\n",N,5,sum);

getch();

}

intfun(intm)

{

/**********FOUND**********/

ints=0,i;

for(i=1;i

/**********FOUND**********/

if(i%m=0)

/**********FOUND**********/

s=*i;

returns;

}

答案:

1).ints=1,i;

2).if(i%m==0)

3).s=s*i或s=i*s或s*=i

 

第5题(30.0分)题号:

448

/*------------------------------------------------------

【程序改错】

--------------------------------------------------------

功能:

编写函数fun计算下列分段函数的值:

x*20x<0且x≠-3

f(x)=sin(x)0≤x<10且x≠2及x≠3

x*x+x-1其它

------------------------------------------------------*/

#include

#include"stdio.h"

floatfun(floatx)

{

/**********FOUND**********/

floaty

/**********FOUND**********/

if(x<0||x!

=-3.0)

y=x*20;

elseif(x>=0&&x<10.0&&x!

=2.0&&x!

=3.0)

y=sin(x);

elsey=x*x+x-1;

/**********FOUND**********/

returnx;

}

main()

{

floatx,f;

printf("Inputx=");

scanf("%f",&x);

f=fun(x);

printf("x=%f,f(x)=%f\n",x,f);

getch();

}

答案:

1).floaty;

2).if(x<0&&x!

=-3.0)

3).returny;

 

第6题(30.0分)题号:

9

/*------------------------------------------------------

【程序改错】

--------------------------------------------------------

功能:

将一个字符串中的大写字母转换成小写字母。

例如:

输入aSdFG输出为asdfg。

------------------------------------------------------*/

#include

/**********FOUND**********/

boolfun(char*c)

{

if(*c<='Z'&&*c>='A')*c-='A'-'a';

/**********FOUND**********/

fun=c;

}

main()

{

/**********FOUND**********/

chars[81],p=s;

gets(s);

while(*p)

{

*p=fun(p);

/**********FOUND**********/

puts(*p);

p++;

}

putchar('\n');

}

答案:

1).charfun(char*c)

2).return*c;或return(*c);或return(*c);

3).chars[81],*p=s;

4).putchar(*p);或printf("%c",*p);

 

第7题(30.0分)题号:

253

/*------------------------------------------------------

【程序改错】

--------------------------------------------------------

功能:

输入10个数,要求输出这10个数的平均值

------------------------------------------------------*/

floataverage(floatarray[10])

{

inti;

floataver,sum=array[0];

/***********FOUND***********/

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

sum=sum+array[i];

aver=sum/10.0;

return(aver);

}

main()

{

/***********FOUND***********/

intscore[10],aver;

inti;

printf("input10scores:

\n");

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

/***********FOUND***********/

scanf("%f",score);

printf("\n");

/***********FOUND***********/

aver=average(score[10]);

printf("averagescoreis%5.2f",aver);

}

答案:

1).for(i=1;i<10;i++)或for(i=1;i<=9;i++)

2).floatscore[10],aver;或floataver,score[10];

3).scanf("%f",&score[i]);或scanf("%f",score+i);

4).aver=average(score);

 

第8题(30.0分)题号:

386

/*------------------------------------------------------

【程序改错】

--------------------------------------------------------

功能:

分别统计输入的字符串中各元音字母(即:

A、E、I、O、U)

的个数。

注意:

字母不分大、小写。

例如:

若输入:

THIsisaboot,则输出应该是:

1、0、2、2、0。

------------------------------------------------------*/

#include

#include

fun(char*s,intnum[5])

{

intk,i=5;

for(k=0;k

/**********FOUND**********/

num[i]=0;

for(;*s;s++)

{

i=-1;

/**********FOUND**********/

switch(s)

{

case'a':

case'A':

{

i=0;

break;

}

case'e':

case'E':

{

i=1;

break;

}

case'i':

case'I':

{

i=2;

break;

}

case'o':

case'O':

{

i=3;

break;

}

case'u':

case'U':

{

i=4;

break;

}

}

/**********FOUND**********/

if(i<0)

num[i]++;

}

}

main()

{

chars1[81];intnum1[5],i;

clrscr();

printf("\nPleaseenterastring:

");gets(s1);

fun(s1,num1);

for(i=0;i<5;i++)

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

printf("\n");

}

答案:

1).num[k]=0;

2).switch(*s)

3).if(i>=0)

 

第9题(30.0分)题号:

381

/*------------------------------------------------------

【程序改错】

--------------------------------------------------------

功能:

读入一个英文文本行,将其中每个单词的第一个字母改成

大写,然后输出此文本行(这里的“单词”是指由空格

隔开的字符串)。

例如:

若输入:

“Iamastudenttotaketheexamination.”,

则应输出:

“IAmAStudentToTakeTheExamination.”。

------------------------------------------------------*/

#include

#include

#include

/**********FOUND**********/

upfst(charp)

{

intk=0;

/**********FOUND**********/

for(;p;p++)

if(k)

{

if(*p=='')k=0;

}

/**********FOUND**********/

elseif(*p=='')

{

k=1;

*p=toupper(*p);

}

}

main()

{

charchrstr[81];

clrscr();

printf("\nPleaseenteranEnglishtextline:

");

gets(chrstr);

printf("\n\nBeforechanging:

\n%s",chrstr);

upfst(chrstr);

printf("\nAfterchanging:

\n%s\n",chrstr);

}

 

答案:

1).upfst(char*p)

2).for(;*p;p++)

3).elseif(*p!

='')

 

第10题(30.0分)题号:

431

/*------------------------------------------------------

【程序改错】

--------------------------------------------------------

功能:

编写input()和output()函数输入,输出5个学生的数据记录。

------------------------------------------------------*/

#include"stdio.h"

#defineN5

structstudent

{

charnum[6];

charname[8];

intscore[4];

}stu[N];

input(stu)

structstudentstu[];

{

/**********FOUND**********/

inti;j;

for(i=0;i

{

printf("\npleaseinput%dof%d\n",i+1,N);

printf("num:

");

scanf("%s",&stu[i].num);

printf("name:

");

scanf("%s",stu[i].name);

for(j=0;j<3;j++)

{

/**********FOUND**********/

printf("score%d.",j);

scanf("%d",&stu[i].score[j]);

}

printf("\n");

}

}

print(stu)

structstudentstu[];

{

inti,j;

printf("\nNo.NameSco1Sco2Sco3\n");

/**********FOUND**********/

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

{

printf("%-6s%-10s",stu[i].num,stu[i].name);

for(j=0;j<3;j++)

printf("%-8d",stu[i].score[j]);

printf("\n");

}

}

main()

{

input();

print();

getch();

}

答案:

1).inti,j;

2).printf("score%d.",j+1);

3).for(i=0;i

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

当前位置:首页 > 解决方案 > 学习计划

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

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