程序设计基础程序修改题及参考答案.docx

上传人:b****9 文档编号:23384640 上传时间:2023-05-16 格式:DOCX 页数:33 大小:102.33KB
下载 相关 举报
程序设计基础程序修改题及参考答案.docx_第1页
第1页 / 共33页
程序设计基础程序修改题及参考答案.docx_第2页
第2页 / 共33页
程序设计基础程序修改题及参考答案.docx_第3页
第3页 / 共33页
程序设计基础程序修改题及参考答案.docx_第4页
第4页 / 共33页
程序设计基础程序修改题及参考答案.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

程序设计基础程序修改题及参考答案.docx

《程序设计基础程序修改题及参考答案.docx》由会员分享,可在线阅读,更多相关《程序设计基础程序修改题及参考答案.docx(33页珍藏版)》请在冰豆网上搜索。

程序设计基础程序修改题及参考答案.docx

程序设计基础程序修改题及参考答案

第1题/*------------------------------------------------------

【程序改错】

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

功能:

在一个一维整型数组中找出其中最大的数及其下标。

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

#include

#defineN10

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

floatfun(int*a,int*b,intn)

{

int*c,max=*a;

for(c=a+1;c

if(*c>max)

{

max=*c;

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

b=c-a;

}

returnmax;

}

voidmain()

{

inta[N],i,max,p=0;

printf("pleaseenter10integers:

\n");

for(i=0;i

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

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

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

m=fun(a,p,N);

printf("max=%d,position=%d",max,p);

}

第2题/*------------------------------------------------------

【程序改错】

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

功能:

为一维数组输入10个整数;将其中最小的数与第一个数

对换,将最大的数与最后一个数对换,输出数组元素。

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

#include

main()

{

inta[10];

voidinput();

voidoutput();

voidmax_min();

input(a,10);

max_min(a,10);

output(a,10);

}

voidinput(int*arr,intn)

{

int*p,i;

p=arr;

printf("pleaseenter10integers:

\n");

for(i=0;i

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

scanf("%d",p);

}

voidmax_min(int*arr,intn)

{

int*min,*max,*p,t;

min=max=arr;

for(p=arr+1;p

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

if(*p<*max)

max=p;

elseif(*p<*min)min=p;

t=*arr;*arr=*min;*min=t;

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

if(max=arr)max=min;

t=*(arr+n-1);

*(arr+n-1)=*max;

*max=t;

}

voidoutput(int*arr,intn)

{

int*p,i;

p=arr;

printf("Thechangedarrayis:

\n");

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

while(i=0;i

printf("%3d",*p++);

printf("\n");

}

[备注]此答案中的“★”请忽略。

本文档中其它地方出现的“★”请都忽略!

比如scanf("%d",p★++);就是表示scanf("%d",p++);

if(★max★==★arr★)即表示if(max==arr)“★”号表示可以有一个或多个空格。

第3题/*------------------------------------------------------

【程序改错】

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

功能:

用起泡法对10个整数从小到大排序。

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

#include

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

voidsort(intx,intn)

{

inti,j,t;

for(i=0;i

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

for(j=0;j

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

if(x[i]>x[i+1])

{

t=x[j];

x[j]=x[j+1];

x[j+1]=t;

}

}

main()

{

inti,n,a[100];

printf("pleaseinputthelengthofthearray:

\n");

scanf("%d",&n);

for(i=0;i

scanf("%d",&a[i]);

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

sort(n,a);

printf("outputthesortedarray:

\n");

for(i=0;i<=n-1;i++)

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

printf("\n");

}

第4题/*------------------------------------------------------

【程序改错】

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

功能:

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

组元素仍按升序排列。

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

#include

#defineN11

main()

{inti,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");

}

第5题/*-----------------------------------------------------------------------------

【程序改错】

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

功能:

求如下表达式:

111

S=1+——+———+......+———————

1+21+2+31+2+3+......+n

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

#include

main()

{intn;

doublefun(intn);

printf("Pleaseinputanumber:

");

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

print("%d",n);

printf("%10.6f\n",fun(n));

}

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

fun(intn)

{inti,j,t;

doubles;

s=0;

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

while(i=1;i<=n;i++);

{

t=0;

for(j=1;j<=i;j++)

t=t+j;

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

=s+1/t;

}

returns;

}

第6题/*------------------------------------------------------

【程序改错】

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

功能:

利用二维数组输出如图所示的图形。

*******

*****

***

*

***

*****

*******

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

#include

#include

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

#defineN=7

main()

{

chara[N][N];

inti,j,z;

for(i=0;i

for(j=0;j

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

a[i][j]=;

z=0;

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

{

for(j=z;j

a[i][j]='*';

z=z+1;

}

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

z=0;

for(i=(N+1)/2;i

{

z=z-1;

for(j=z;j

a[i][j]='*';

}

for(i=0;i

{

for(j=0;j

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

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

printf("\n");

}

}

第7题/*------------------------------------------------------

【程序改错】

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

功能:

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

例如:

输入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');

}

第8题/*------------------------------------------------------

【程序改错】

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

功能:

将若干学生的档案存放在一个文件中,并显示其内容。

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

#include

structstudent

{

intnum;

charname[10];

intage;

};

structstudentstu[3]={{001,"LiMei",18},

{002,"JiHua",19},

{003,"SunHao",18}};

#include

voidmain()

{

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

structstudentp;

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

cfilefp;

inti;

if((fp=fopen("stu_list","wb"))==NULL)

{

printf("cannotopenfile\n");

return;

}

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

for(*p=stu;p

fwrite(p,sizeof(structstudent),1,fp);

fclose(fp);

fp=fopen("stu_list","rb");

printf("No.Nameage\n");

for(i=1;i<=3;i++)

{

fread(p,sizeof(structstudent),1,fp);

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

scanf("%4d%-10s%4d\n",*p.num,p->name,(*p).age);

}

fclose(fp);

}

序号3和4的全部答案请见下图

第9题/*------------------------------------------------------

【程序改错】

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

功能:

判断m是否为素数,若是返回1,否则返回0。

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

#include

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

voidfun(intn)

{

inti,k=1;

if(m<=1)k=0;

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

for(i=1;i

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

if(m%i=0)k=0;

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

returnm;

}

intmain()

{

intm,k=0;

for(m=1;m<100;m++)

if(fun(m)==1)

{

printf("%4d",m);k++;

if(k%5==0)printf("\n");

}

}

第10题/*------------------------------------------------------

【程序改错】

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

功能:

用下面的和式求圆周率的近似值。

直到最后一项的绝对值

小于等于0.0001。

π111

—=1-—+—-—+...

4357

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

#include

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

#include

fun()

{

inti=1;

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

ints=0,t=1,p=1;

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

while(fabs(t)<=1e-4)

{

s=s+t;

p=-p;

i=i+2;

t=p/i;

}

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

printf("pi=%d\n",s*4);

}

main()

{

fun();

}

第11题/*------------------------------------------------------

【程序改错】

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

功能:

求1到20的阶乘的和。

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

#include

fun()

{

intn,j;

floats=0.0,t=1.0;

for(n=1;n<=20;n++)

{

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

s=1;

for(j=1;j<=n;j++)

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

t=t*n;

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

s+t=s;

}

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

printf("jiecheng=%d\n",s);

}

main()

{

fun();

}

第12题/*------------------------------------------------------

【程序改错】

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

功能:

输出Fabonacci数列的前20项,要求变量类型定义成浮点型,

输出时只输出整数部分,输出项数不得多于或少于20。

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

#include

fun()

{

inti;

floatf1=1,f2=1,f3;

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

printf("%8d",f1);

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

for(i=1;i<=20;i++)

{

f3=f1+f2;

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

f2=f1;

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

f3=f2;

printf("%8.0f",f1);

}

printf("\n");

}

main()

{

fun();

}

第13题/*------------------------------------------------------

【程序改错】

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

功能:

计算正整数num的各位上的数字之积。

例如:

输入252,则输出应该是20。

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

#include

longfun(longnum)

{

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

longk;

do

{

k*=num%10;

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

num\=10;

}while(num);

returnk;

}

main()

{

longn;

printf("\nPleaseenteranumber:

");

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

scanf("%ld",n);

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

printf("\n%ld\n",fun(longn));

}

第14题/*------------------------------------------------------

【程序改错】

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

功能:

已知一个数列从第0项开始的前三项分别为0、0、1,以

后的各项都是其相邻的前三项的和。

下列给定程序中,

函数fun的功能是:

计算并输出该数列的前n项的平方根

之和sum,n的值通过形参传入。

例如:

当n=10时,程序的输出结果应为23.197745。

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

#include

#include

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

fun(intn)

{

doublesum,s0,s1,s2,s;

intk;

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

sum=0.0;

if(n<=2)sum=0.0;

s0=0.0;

s1=0.0;

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

s2=0.0;

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

for(k=4;k>n;k++)

{

s=s0+s1

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

当前位置:首页 > 考试认证 > 其它考试

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

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