齐大C语言程序改错.docx

上传人:b****6 文档编号:8651873 上传时间:2023-02-01 格式:DOCX 页数:18 大小:20.62KB
下载 相关 举报
齐大C语言程序改错.docx_第1页
第1页 / 共18页
齐大C语言程序改错.docx_第2页
第2页 / 共18页
齐大C语言程序改错.docx_第3页
第3页 / 共18页
齐大C语言程序改错.docx_第4页
第4页 / 共18页
齐大C语言程序改错.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

齐大C语言程序改错.docx

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

齐大C语言程序改错.docx

齐大C语言程序改错

106.【程序改错】

题目:

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

程序中共有4条错误语句,请改正错误。

#defineN10

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

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

{int*c,max=*a;

for(c=a+1;c

if(*c>max)

{max=*c;

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

b=c-a;}*b=c-a;}

returnmax;}

main()

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

printf("pleaseenter10integers:

\n");

for(i=0;i

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

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

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

m=fun(a,p,N);max=fun(a,p,N);

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

29.【程序改错】(未定)

题目:

fun函数的功能是:

实现两个字符串的连接。

例如:

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

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

#include"stdio.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++;while(s1[i]!

='\0')i++;

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

while(s2[j]=='\0')while(s2[i]!

='\0')

{/**********FOUND**********/

s2[j]=s1[i];s1[i]=s2[j];

i++;

j++;}

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

s2[j]='\0';s1[i]='\0';}

124.【程序改错】

题目:

输入一行字符,分别统计出其中英文字母、空

格、数字和其它字符的个数。

#include"stdio.h"

main()

{charc;

intletters=0,space=0,digit=0,others=0;

printf("pleaseinputsomecharacters\n");

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

while((c=getchar())=='\n')while((c=getchar())!

='\n')

{/**********FOUND**********/

if(c>='a'&&c<='z'&&c>='A'&&c<='Z')

if(c>='a'&&c<='z'||c>='A'&&c<='Z')

letters++;

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

elseif(c=!

'')elseif(c=='')

space++;

elseif(c>='0'&&c<='9')

digit++;

else

others++;}

printf("allinall:

char=%dspace=%ddigit=%dothers=%d\n",letters,

space,digit,others);}

364.【程序改错】(未定)

题目:

给定程序MODI1.C中函数fun的功能是:

计算正整数num的

各位上的数字之积。

例如,若输入:

252,则输出应该是:

20。

输入:

202,则输出应该是:

0。

#include

#include

longfun(longnum)

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

{longk=1{longk=1;

do

{k*=num%10;

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

num\=10;num/=10;

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

}while(!

num);}while(num);

return(k);}

main()

{longn;

clrscr();

printf("\Pleaseenteranumber:

");scanf("%ld",&n);

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

getch();}

433.【程序改错】

题目:

编写一个函数,输入n为偶数时,调用函数求

1/2+1/4+...+1/n,当输入n为奇数时,调用函

数1/1+1/3+...+1/n(利用指针函数)

#include"stdio.h"

main()

{floatpeven(),podd(),dcall();

floatsum;

intn;

while

(1)

{/**********FOUND**********/

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

if(n>1)

break;}

if(n%2==0)

{printf("Even=");

sum=dcall(peven,n);}

else

{printf("Odd=");

sum=dcall(podd,n);}

printf("%f",sum);

getch();}

floatpeven(intn)

{floats;

inti;

s=0;

for(i=2;i<=n;i+=2)

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

s+=1%(float)i;s+=1/(float)i;

return(s);}

floatpodd(n)

intn;

{floats;

inti;

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

s=1;s=0;

for(i=1;i<=n;i+=2)

s+=1/(float)i;

return(s);}

floatdcall(fp,n)

float(*fp)();

intn;

{floats;

s=(*fp)(n);

return(s);}

115(116).【程序改错】

题目:

下列程序中,函数fun的功能是:

在字符串str

中找出ASCII码值最大的字符,将其放在第一个

位置上,并将该字符前面的字符向后顺序移动。

例如:

调用fun函数之前给字符串输入:

ABCDeFGH,

调用后字符串中的内容为:

eABCDFGH。

#include

fun(char*p)

{charmax,*q;inti=0;

max=p[i];

while(p[i]!

=0)

{if(max

{max=p[i];

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

p=q+i;q=p+i;}

i++;}

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

while(qp)

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

{q=*(q-1);{*q=*(q-1);

q--;}

p[0]=max;}

main()

{charstr[80];

printf("Enterastring:

");gets(str);

printf("\nTheoriginalstring:

");puts(str);

fun(str);

printf("\nThestringaftermoving:

");puts(str);

getch();}

123.【程序改错】

题目:

有1、2、3、4个数字,能组成多少个互不相同

且无重复数字的三位数?

都是多少?

main()

{inti,j,k;

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

printf("\n")printf("\n");

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

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

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

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

{/**********FOUND**********/

if(i!

=k||i!

=j||j!

=k)if(i!

=k&&i!

=j&&j!

=k)

printf("%d,%d,%d\n",i,j,k);}}

107.【程序改错】

题目:

以下程序的功能是求如下表达式:

111

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

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

请改正程序中的错误,使程序能得到正确的运行结果。

#include

main()

{intn;

floatfun();

printf("Pleaseinputanumber:

");

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

print("%d",n);scanf("%d",&n);

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

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

fun(intn)floatfun(intn)

{inti,j,t;

floats;

s=0;

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

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

{t=0;

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

t=t+j;

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

s=+1/t;s+=1.0/t}

returns;}

26.【程序改错】(未定)

题目:

fun函数的功能是:

找出大于m的最小素数,并将其作为

函数值返回。

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

#include

intfun(intm)

{inti,k;

for(i=m+1;;i++)

{/**********FOUND**********/

for(k=1;k

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

if(i%k!

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

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

if(k

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

returnk;returni;}}

main()

{intn;

scanf("%d",&n);

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

381.【程序改错】

题目:

给定程序MODI1.C的功能是:

删除w所指数组中下标

为k的元素中的值。

程序中,调用了getindex、arrout

和arrdel三个函数,getindex用以输入所删元素的下标,

函数中对输入的下标进行检查,若越界,则要求重新输入,

直到正确为止。

arrout用以输出数组中的数据,arrdel进

行所要求的删除操作。

#include"conio.h"

#include"stdio.h"

#defineNUM10

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

arrout(intw,intm)arrout(intw[],intm)

{intk;

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

for(k=1;k

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

printf("%d"w[k]);printf("%d",w[k]);

printf("\n");}

arrdel(int*w,intn,intk)

{inti;

for(i=k;i

n--;

returnn;}

getindex(intn)

{inti;

do

{printf("\nEntertheindex[0<=i<%d]:

",n);

scanf("%d",&i);

}while(i<0||i>n-1);

returni;}

main()

{intn,d,a[NUM]={21,22,23,24,25,26,27,28,29,30};

n=NUM;

clrscr();

printf("Outputprimarydata:

\n");arrout(a,n);

d=getindex(n);n=arrdel(a,n,d);

printf("Outputthedataafterdelete:

\n");arrout(a,n);}

122.【程序改错】

题目:

编写函数fun其功能是:

输入两个实数,按代数值由小到大输出它们,并在fun()

函数中输出。

(输出的数据都保留2位小数)

#include"stdio.h"

main()

{fun();

getch();}

fun()

{/**********FOUND**********/

floattfloatt;

floata,b;

scanf("%f%f",&a,&b);

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

if(ab)

{t=a;a=b;b=t;}

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

printf("%5.2f,%5.2f\n",&a,&b);printf("%5.2f,%5.2f\n",a,b);}

113.【程序改错】

题目:

请编写一个函数intfun(intx),它的功能

是:

判断整数x是否是同构数。

若是同购数,

函数返回1;否则返回0。

所谓“同构数”是指这个数出现在它的平方数

的右边。

例如:

输入整数25,25的平方数是

625,25是625中右侧的数,所以25是同构数。

x的值由主函数从键盘读入,要求不大于1000。

#include"stdio.h"

intfun(intx)

{/**********FOUND**********/

intkintk;

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

k=x;k=x*x;

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

if((k%10==x)&&(k%100==x)&&(k%1000==x))if((k%10==x)||(k%100==x)||”(k%1000==x))

return1;

else

return0;}

main()

{intx,y;

clrscr();

printf("\nPleaseenteraintegernumbers:

");

scanf("%d",&x);

if(x>1000){printf("dataerror!

\n");exit(0);}

y=fun(x);

if(y)printf("%dYES\n",x);

elseprintf("%dNO\n",x);

getch();}

121.【程序改错】

题目:

编写程序,求矩阵(3行3列)与5的乘积

  例如,输入下面的矩阵:

100200300

400500600

700800900

程序输出:

50010001500

200025003000

350040004500

#include"stdio.h"

intfun(intarray[3][3])

{/**********FOUND**********/

inti;j;inti,j;

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

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

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

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

array[i][j]=array[i][j]/5;arrau[i][j]=array[i][j]*5}

main()

{inti,j;

intarray[3][3]={{100,200,300},

{400,500,600},

{700,800,900}};

clrscr();

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

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

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

printf("\n");}

fun(array);

printf("Convertedarray:

\n");

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

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

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

printf("\n");}

getch();}

108.【程序改错】

题目:

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

structstudent

{intnum;

charname[10];

intage;};

structstudentstu[3]={{001,"LiMei",18},{002,"JiHua",19},{003,"SunHao",18}};

#include

main()

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

{structstudentp;{structstudent*p;

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

cfilefp;FILE*fp

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);

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

}

fclose(fp);}

109.【程序改错】

题目:

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

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

下列给定程序中,

函数fun的功能是:

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

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

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

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

#include"math.h"

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

fun(intn)doublefun(intn)

{doublesum,s0,s1,s2,s;

intk;

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

sum=0.0;sum=1.0;

if(n<=2)sum=0.0;

s0=0.0;

s1=0.0;

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

s2=0.0;s2=1.0;

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

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

{s=s0+s1+s2;

sum+=sqrt(s);

s0=s1;s1=s2;s2=s;}

returnsum;}

main()

{intn;

scanf("%d",&n);

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

}

387.【程序改错】(未定)

题目:

给定程序MODI1.C中函数fun的功能是:

统计字符串中各元音字母(即:

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;num[k]=0;

for(;*s;s++)

{i=-1;

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

switch(s)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)if(i>=0)

num[i]++;}}

main()

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

clrscr();

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

当前位置:首页 > 高等教育 > 农学

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

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