C语言程序改错题范本模板.docx

上传人:b****3 文档编号:5053364 上传时间:2022-12-12 格式:DOCX 页数:21 大小:21.30KB
下载 相关 举报
C语言程序改错题范本模板.docx_第1页
第1页 / 共21页
C语言程序改错题范本模板.docx_第2页
第2页 / 共21页
C语言程序改错题范本模板.docx_第3页
第3页 / 共21页
C语言程序改错题范本模板.docx_第4页
第4页 / 共21页
C语言程序改错题范本模板.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

C语言程序改错题范本模板.docx

《C语言程序改错题范本模板.docx》由会员分享,可在线阅读,更多相关《C语言程序改错题范本模板.docx(21页珍藏版)》请在冰豆网上搜索。

C语言程序改错题范本模板.docx

C语言程序改错题范本模板

第1题【程序改错】

功能:

先将在字符串s中的字符按逆序存放到t串中,然后把s中的

字符按正序连接到t串的后面.

例如:

当s中的字符串为:

“ABCDE”时,则t中的字符串应为:

“EDCBAABCDE”。

—-——----—--—--—---———---——--——--——---———-—-——---—---—-*/

#include

h〉

#include〈stdio。

h〉

#include

h>

voidfun(char*s,char*t)

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

inti;

sl=strlen(s);

for(i=0;i

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

t[i]=s[sl-i];

for(i=0;i

t[sl+i]=s[i];

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

t[2*sl]="0";

}

main()

{

chars[100],t[100];

printf(”\nPleaseenterstrings:

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

fun(s,t);

printf("Theresultis:

%s\n”,t);

答案:

1).inti,sl;

2)。

t[i]=s[sl—i—1];

3).t[2*sl]=’\0’;或t[2*sl]=0;

 

第2题【程序改错】

功能:

求出以下分数序列的前n项之和.和值通过函数值返回main

函数.

2/1+3/2+5/3+8/5+13/8+21/13……

例如:

若n=5,则应输出:

8.391667。

—----—-———--—-—-—--——-———-—-—--——-——————-—---—--——----*/

#include〈conio.h〉

#include〈stdio。

h>

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

fun(intn)

{

inta,b,c,k;doubles;

s=0。

0;a=2;b=1;

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

{

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

s=(double)a/b;

c=a;

a=a+b;

b=c;

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

returnc;

main()

{

intn=5;

printf("\nThevalueoffunctionis:

%lf\n",fun(n));

}

答案:

1).doublefun(intn)

2)。

s=s+(double)a/b;或s+=(double)a/b;或s+=a/(double)b;或s=s+a/(double)b;

3).returns;

第3题【程序改错】

功能:

读入一个整数m(5≤m≤20),函数getarr调用函数rnd获

得m个随机整数,函数sortpb将这m个随机整数从小到大排序.

例如:

若输入整数7,则应输出:

3101728323647.

-———--——-——-—--———-—--—-——----—--—-----——---——--—-----*/

#include”conio.h"

#include〈stdio。

h>

sortpb(intn,int*a)

{

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

inti,j,p,t

for(j=0;j

{

p=j;

for(i=j+1;i〈n;i++)

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

if(a[p]〉a[j])p=i;

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

if(p==j)

t=a[j];

a[j]=a[p];

a[p]=t;

}

}

}

doublernd()

{

statict=29,c=217,m=1024,r=0;

r=(r*t+c)%m;return((double)r/m);

getarr(intn,int*x)

{

inti;

for(i=1;i〈=n;i++,x++)*x=(int)(50*rnd());

putarr(intn,int*z)

inti;

for(i=1;i<=n;i++,z++)

{

printf("%4d",*z);

if(!

(i%10))printf("\n");

printf(”\n");

}

main()

{

intaa[20],n;

printf(”\nPleaseenteranintegernumberbetween5and20:

");

scanf("%d”,&n);

getarr(n,aa);

printf(”\n\nBeforesorting%dnumbers:

\n”,n);putarr(n,aa);

sortpb(n,aa);

printf("\nAftersorting%dnumbers:

\n",n);putarr(n,aa);

答案:

1).inti,j,p,t;

2)。

if(a[p]>a[i])p=i;

3)。

if(p!

=j)

 

第4题【程序改错】

--—-——-——-—---—-——-—-———--——-——-———--—-——————------———-—

功能:

以下程序能求出1*1+2*2+。

.。

.+n*n<=1000中满足条件的

最大的n。

--—-—---——----—-———--——-——--————-———----——-——-—--—-—-—*/

#include〈stdio。

h>

#include”string。

h"

main()

intn,s;

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

s==n=0;

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

while(s>1000)

++n;

s+=n*n;

}

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

printf(”n=%d\n”,&n—1);

}

答案:

1)。

s=n=0;

2).while(s〈=1000)

3).printf(”n=%d\n”,n-1);

第5题【程序改错】

——-———---———-——-———————-—-—---——-—--————-—-—-———--—----—

功能:

求出a所指数组中最大数和次最大数(规定最大数和次最大

数不在a[0]和a[1]中),依次和a[0]、a[1]中的数对调。

例如:

数组中原有的数:

7、10、12、0、3、6、9、11、5、8,

输出的结果为:

12、11、7、0、3、6、9、10、5、8。

-——-—-——-—-—-—-———-—-———-----——--—-——-----—-——-——————-*/

#include

h〉

#include〈stdio。

h>

#defineN20

voidfun(int*a,intn)

{

intk,m1,m2,max1,max2,t;

max1=max2=—32768;m1=m2=0;

for(k=0;k〈n;k++)

if(a[k]>max1)

{

max2=max1;m2=m1;

max1=a[k];m1=k;

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

elseif(a[k]>max1)

max2=a[k];m2=k;}

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

t=a[0];

a[m1]=a[0];

a[m1]=t;

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

t=a[1];

a[m2]=a[1];

a[m2]=t;

main()

intb[N]={7,10,12,0,3,6,9,11,5,8},n=10,i;

for(i=0;i

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

printf(”\n");

fun(b,n);

for(i=0;i〈n;i++)

printf(”%d”,b[i]);

printf(”\n");

答案:

1).elseif(a[k]>max2)

2)。

t=a[0];a[0]=a[m1];a[m1]=t;

3).t=a[1];a[1]=a[m2];a[m2]=t;

 

第6题【程序改错】

——---—--——--—----—-----—-—————-———-—-—-—-—-——-———————-——

功能:

读入一个整数k(2≤k≤10000),打印它的所有质因子(即

所有为素数的因子).

例如:

若输入整数:

2310,则应输出:

2、3、5、7、11。

请改正程序中的语法错误,使程序能得出正确的结果。

—-——-——--—-——-——-—-------—----————-—------—---——---———*/

#include"conio.h"

#include

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

isPrime(integern)

inti,m;

m=1;

for(i=2;i

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

if(n%i)

{

m=0;

break;

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

returnn;

}

main()

{

intj,k;

printf("\nPleaseenteranintegernumberbetween2and10000:

");

scanf(”%d”,&k);

printf(”\n\nTheprimefactor(s)of%dis(are):

”,k);

for(j=2;j〈=k;j++)

if((!

(k%j))&&(IsPrime(j)))printf(”\n%4d",j);

printf("\n");

}

答案:

1)。

IsPrime(intn)

2).if(!

(n%i))

3)。

returnm;

 

第7题【程序改错】

———-—--—--—---—-————-——-—-—--—--———--—-——--—-———-———--—-

功能:

为一维数组输入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〈n;i++)

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

scanf("%d”,p);

}

voidmax_min(int*arr,intn)

{

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

min=max=arr;

for(p=arr+1;p〈arr+n;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〈n;i++)

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

printf(”\n”);

}

答案:

1)。

scanf("%d",p++);或scanf("%d",arr[i]);或scanf(”%d",p+i);或scanf("%d”,arr+i);

2).if(*p>*max)或if(*max<*p)

3).if(max==arr)

4).for(i=0;i〈n;i++)或for(i=0;n>i;i++)或for(p=arr;p〈arr+n;)或for(i=0;i〈=n—1;i++)或for(i=0;n-1〉=i;i++)或for(p=arr;p<=arr+n—1;)或for(p=arr;arr+n-1〉=p;)

 

第8题【程序改错】

——--——--—--—---—-———--—————--—-—-——-——--——-—-—-—--———---

功能:

求出在字符串中最后一次出现的子字符串的地址,通过函

数值返回,在主函数中输出从此地址开始的字符串;若未

找到,则函数值为NULL.

例如:

当字符串中的内容为:

"abcdabfabcdx",t中的内容为:

”ab”时,输出结果应是:

abcdx.当字符串中的内容为:

"abcdabfabcdx",t中的内容为:

”abd”时,则程序输出

未找到信息:

notfound!

---———---——--——-——-———-—————-—-—---—-——-——-—----—-——--*/

#include〈conio.h>

#include

#include

char*fun(char*s,char*t)

{

char*p,*r,*a;

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

a==NULL;

while(*s)

{

p=s;

r=t;

while(*r)

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

if(r==p)

r++;

p++;

}

else

break;

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

if(*r='\0')a=s;

s++;

}

returna;

main()

chars[100],t[100],*p;

printf(”\nPleaseenterstringS:

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

printf("\nPleaseentersubstringt:

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

p=fun(s,t);

if(p)

printf(”\nTheresultis:

%s\n”,p);

else

printf(”\nNotfound!

\n”);

答案:

1).a=NULL;

2)。

if(*r==*p)

3).if(*r==’\0')a=s;

 

第9题【程序改错】

—--—-——————-—-—-————---—---—--——----—-———-—--——--——--———

功能:

从m个学生的成绩中统计出高于和等于平均分的学生人数,

此人数由函数值返回。

平均分通过形参传回,输入学生成

绩时,用-1结束输入,由程序自动统计学生人数。

例如:

若输入8名学生的成绩,输入形式如下:

80。

5607290.59851.58864-1

结果为:

Thenumberofstudents:

4

Ave=75。

56。

--————------————----—-————-——----—-—--—————-——-————-—-*/

#include

#include

h>

#defineN20

intfun(float*s,intn,float*aver)

floatav,t;intcount,i;

count=0;t=0。

0;

for(i=0;i〈n;i++)t+=s[i];

av=t/n;printf("ave=%f\n”,av);

for(i=0;i〈n;i++)

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

if(s[i]

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

aver=av;

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

returncount

main()

{

floata,s[30],aver;

intm=0;

printf(”\nPleaseentermarks(-1toend):

\n”);

scanf("%f”,&a);

while(a〉0)

s[m]=a;

m++;

scanf("%f”,&a);

}

printf(”\nThenumberofstudents:

%d\n",fun(s,m,&aver));

printf(”Ave=%6.2f\n”,aver);

}

答案:

1)。

if(s[i]〉=av)count++;

2)。

*aver=av;

3).returncount;

 

第10题

【程序改错】

———-—————-—--—-—————--—-——------————--—--——--——-—-——-—-—

功能:

根据以下公式求π值,并作为函数值返回。

例如:

给指定精度的变量eps输入0.0005时,应当输出Pi=3.140578。

π1121231234

—=1+—+—x—+-x—x—+-x—x-x—+..。

23353573579

-----—-—-—————-—--—-—----—-————----—-—---——--———-—--——*/

#include〈stdio.h〉

doublefun(doubleeps)

doubles,t;

intn=1;

s=0。

0;

t=1;

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

while(t〈=eps)

s+=t;

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

t=n/(2*n+1)*t;

n++;

}

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

returns;

main()

{

doublex;

scanf(”%lf",&x);

printf(”\neps=%lf,Pi=%lf\n\n”,x,fun(x));

答案:

1)。

while(t>eps)或while(eps〈t)或while(t〉=eps)或while(eps〈=t)或while(t〉eps)或while(eps〈t)或while(t>=eps)或while(eps〈=t)

2).t=t*n/(2*n+1);或t=1。

0*n/(2*n+1)*t;或t=n/(2*n+1.0)*t;或t=n/(2.0*n+1)*t;或t=n/(2.0*n+1.0)*t;或t=1。

0*n/(2.0*n+1。

0)*t;

3)。

return2*s;或return(2*s);或return(2*s);或return(s*2);或return(s*2);

第11题【程序改错】

—-———-———--—----——————-—-———----—----——-—-—-———--—--——--

功能:

实现两个字符串的连接.

例如:

输入dfdfqe和12345时,则输出dfdfqe12345。

--—-—-———--——---—-—-——-———-———-—--—-—-—------—-----—-—*/

#include

h>

main()

chars1[80],s2[80];

voidscat(chars1[],chars2[]);

gets(s1);

gets(s2);

scat(s1,s2);

puts(s1);

}

voidscat(chars1[],chars2[])

{

inti=0,j=0;

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

while(s1[i]=='\0’)

i++;

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

while(s2[j]==’\0’)

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

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

当前位置:首页 > 幼儿教育 > 唐诗宋词

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

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