/**********FOUND**********/
printf("%d",a[i][j]);
printf("\n");
}
}
(5)/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
将字符串s中最后一次出现的子字符串t1替换成字符串t2,
所形成的新串放在w所指的数组中,在此处,要求t1和t2
所指字符串的长度相同。
例如:
当s所指字符串中的内容为"abcdabfabc",t1中的内容
为"ab",t2中的内容为"99"时,结果w所指数组中的内容
应为"abcdabf99c"。
------------------------------------------------------*/
#include
#include
#include
voidfun(char*s,char*t1,char*t2,char*w)
{
char*p,*r,*a;
strcpy(w,s);
/**********FOUND**********/
while(w)
{
p=w;r=t1;
while(*r)
/**********FOUND**********/
if(*r=*p)
{
r++;
p++;
}
else
break;
/**********FOUND**********/
if(*r=='/0')a=w;
w++;
}
r=t2;
while(*r)
{
/**********FOUND**********/
a=*r;
a++;
r++;
}
}
main()
{
chars[100],t1[100],t2[100],w[100];
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("\nError:
strlen(t1)!
=strlen(t2)\n");
}
(6)【程序改错】
功能:
给定n个实数,输出平均值,并统计在平均值以下(含平
均值)的实数个数。
例如:
n=6时,输入23.5,45.67,12.1,6.4,58.9,98.4所得
平均值为40.828335,在平均值以下的实数个数应为3。
------------------------------------------------------*/
#include
intfun(doublex[],intn)
{
intj,c=0;
/**********FOUND**********/
floatj=0;
/**********FOUND**********/
for(j=0;j<=n;j++)
xa+=x[j];
xa=xa/n;
printf("ave=%f\n",xa);
/**********FOUND**********/
for(j=0;j<=n;j++)
if(x[j]<=xa)c++;
/**********FOUND**********/
returnxa;
}
main()
{
doublex[]={23.5,45.67,12.1,6.4,58.9,98.4};
printf("%d\n",fun(x,6));
}
(7)/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
从键盘输入一个大于3的整数,调用函数fun判断
其是否素数,然后在main函数中输出相应的结论
信息。
例如:
7是素数,8不是素数。
请编写fun函数。
素数是
仅能被1和自身整除的数
-------------------------------------------------*/
#include
voidwwjt();
intfun(intn)
{
/**********Program**********/
/**********End**********/
}
main()
{
intm,flag;
printf("inputaninteger:
");
scanf("%d",&m);
flag=fun(m);
if(flag)
printf("%disaprime.\n",m);
else
printf("%disnotaprime.\n",m);
wwjt();
}
voidwwjt()
{
FILE*IN,*OUT;
intiIN,iOUT,i;
IN=fopen("5.IN","r");
if(IN==NULL)
{
printf("PleaseVerifyTheCurrerntDir..itMayBeChanged");
}
OUT=fopen("5.out","w");
if(OUT==NULL)
{
printf("PleaseVerifyTheCurrentDir..itMayBeChanged");
}
for(i=0;i<10;i++)
{
fscanf(IN,"%d",&iIN);
iOUT=fun(iIN);
fprintf(OUT,"%d\n",iOUT);
}
fclose(IN);
fclose(OUT);
}
(8)【程序设计】
--------------------------------------------------
功能:
编写函数fun求1!
+2!
+3!
+……+n!
的和,在main函
数中由键盘输入n值,并输出运算结果。
请编写fun
函数。
例如:
若n值为5,则结果为153。
------------------------------------------------*/
#include
voidwwjt();
longintfun(intn)
{
/**********Program**********/
/**********End**********/
}
main()
{
intn;
longintresult;
scanf("%d",&n);
result=fun(n);
printf("%ld\n",result);
wwjt();
}
voidwwjt()
{
FILE*IN,*OUT;
inti;
intiIN;
longintiOUT;
IN=fopen("in.dat","r");
if(IN==NULL)
{
printf("PleaseVerifyTheCurrerntDir..ItMayBeChanged");
}
OUT=fopen("out.dat","w");
if(OUT==NULL)
{
printf("PleaseVerifyTheCurrentDir..ItMayBeChanged");
}
for(i=0;i<10;i++)
{
fscanf(IN,"%d",&iIN);
iOUT=fun(iIN);
fprintf(OUT,"%ld\n",iOUT);
}
fclose(IN);
fclose(OUT);
}
答案
(1)#include
voidstrcopy(char*str1,char*str2,intm)
{
char*p1,*p2;
/***********SPACE***********/
p1=str1+m;
p2=str2;
while(*p1)
/***********SPACE***********/
*p2++=*p1++;
/***********SPACE***********/
*p2='\0';
}
main()
{
intm;
charstr1[80],str2[80];
gets(str1);
scanf("%d",&m);
/***********SPACE***********/
strcopy(str1,str2,m);
puts(str1);puts(str2);
}
(2)#include
fun(inta[],intn,intkey)
{
intlow,high,mid;
low=0;
high=n-1;
/***********SPACE***********/
while(low<=high)
{
mid=(low+high)/2;
if(key/***********SPACE***********/
high=mid-1;
elseif(key>a[mid])
/***********SPACE***********/
low=mid+1;
else
/***********SPACE***********/
returnmid;
}
return-1;
}
main()
{
inta[10]={1,2,3,4,5,6,7,8,9,10};
intb,c;
b=4;
c=fun(a,10,b);
if(c==1)
printf("notfound");
else
printf("position%d\n",c);
}
(3)#include
main()
{
inta[7][7];
inti,j;
for(i=0;i<7;i++)
{
a[i][0]=1;
/***********SPACE***********/
a[i][i]=1;
}
for(i=2;i<7;i++)
/***********SPACE***********/
for(j=1;j
/***********SPACE***********/
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=0;i<7;i++)
{
/***********SPACE***********/
for(j=0;j<=i;j++)
printf("%6d",a[i][j]);
printf("\n");
}
}
(4)#include
#include
/**********FOUND**********/
#defineN7
main()
{
chara[N][N];
inti,j,z;
for(i=0;ifor(j=0;j/**********FOUND**********/
a[i][j]='';
z=0;
for(i=0;i<(N+1)/2;i++)
{
for(j=z;ja[i][j]='*';
z=z+1;
}
/**********FOUND**********/
z=z-1;
for(i=(N+1)/2;i{
z=z-1;
for(j=z;ja[i][j]='*';
}
for(i=0;i{
for(j=0;j/**********FOUND**********/
printf("%c",a[i][j]);
printf("\n");
}
}
(5)#include
#include
#include
voidfun(char*s,char*t1,char*t2,char*w)
{
char*p,*r,*a;
strcpy(w,s);
/**********FOUND**********/
while(*w)
{
p=w;r=t1;
while(*r)
/**********FOUND**********/
if(*r==*p)
{
r++;
p++;
}
else
break;
/**********FOUND**********/
if(*r=='\0')a=w;
w++;
}
r=t2;
while(*r)
{
/**********FOUND**********/
*a=*r;
a++;
r++;
}
}
main()
{
chars[100],t1[100],t2[100],w[100];
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("\nError:
strlen(t1)!
=strlen(t2)\n");
}
(6)#include
intfun(doublex[],intn)
{
intj,c=0;
/**********FOUND**********/
floatxa=0;
/**********FOUND**********/
for(j=0;jxa+=x[j];
xa=xa/n;
printf("ave=%f\n",xa);
/**********FOUND**********/
for(j=0;jif(x[j]<=xa)c++;
/**********FOUND**********/
returnc;
}
main()
{
doublex[]={23.5,45.67,12.1,6.4,58.9,98.4};
printf("%d\n",fun(x,6));
}
(7)#include
voidwwjt();
intfun(intn)
{
/**********Program**********/
inti=2,j;
while(i{
if(n%i==0)i=n;
i++;
}
if(i==n+1)j=0;
elsej=1;
returnj;
/**********End**********/
}
main()
{
intm,flag;
printf("inputaninteger:
");
scanf("%d",&m);
flag=fun(m);
if(flag)
printf("%disaprime.\n",m);
else
printf("%disnotaprime.\n",m);
wwjt();
}
voidwwjt()
{
FILE*IN,*OUT;
intiIN,iOUT,i;
IN=fopen("5.