printf("\n");}
4.(7)给定程序的功能是:
调用函数fun将指定源文件中的内容复制到指定的目标文件中,复制成功时函数返回值为1,失败时返回值为0。
在复制过程中,把复制的内容输出到终端屏幕.主函数中源文件中入在变量sfnamek,目标文件名放在变量tfname中。
intfun(char*source,char*target)
{FILE*fs,*ft;charch;
/**********found**********/
if((fs=fopen(source,___r___))==NULL)//”r’
return0;
if((ft=fopen(target,"w"))==NULL)
return0;
printf("\nThedatainfile:
\n");
ch=fgetc(fs);
/**********found**********/
while(!
feof(___fs__))//fs
{putchar(ch);
/**********found**********/
fputc(ch,___ft___);//ft
ch=fgetc(fs);}
fclose(fs);fclose(ft);
printf("\n\n");return1;}
main(){charsfname[20]="myfile1",
tfname[20]="myfile2";
FILE*myf;inti;charc;
myf=fopen(sfname,"w");
printf("\nTheoriginaldata:
\n");
for(i=1;i<30;i++)
{c='A'+rand()%25;fprintf(myf,"%c",c);
printf("%c",c);}
fclose(myf);printf("\n\n");
if(fun(sfname,tfname))
printf("Succeed!
");
elseprintf("Fail!
");}
5.用筛选法可得到2~n(n<10000)之间的所有素数,方法是:
首先从素数2开始,将所有2的倍数的数从数表中删去(把数表中相应位置的值置成0);接着从数表中找下一个非0数,并从数表中删去该数的所表倍数;依次类推,直到所找的下一个数等于n为止。
这样会得一个序列:
2,3,5,7,11,13,17,19,23……函数fun用筛选法找出所有小于等于n的素数,并统计素数的个数作为函数值返回。
intfun(intn)
{inta[10000],i,j,count=0;
for(i=2;i<=n;i++)a[i]=i;
i=2;while(i/**********found**********/
for(j=a[i]*2;j<=n;j+=___a[i]___)
a[j]=0;i++;
/**********found**********/
while(___a[i]___==0)
i++;}
printf("Theprimenumbetween2to%d\n",n);
for(i=2;i<=n;i++)
/**********found**********/
if(a[i]!
=___0___)
{count++;printf(count%15?
"%5d":
"\n%5d",a[i]);}
returncount;}
main(){intn=20,r;r=fun(n);
printf("\nThenumberofprimeis:
%d\n",r);}
第一空:
a[i]第二空:
a[i]第三空0
6.函数fun的功能是:
从三个形参a,b,c中找出中间的那个数,作为函数值返回。
例如:
当a=3,b=5,c=4时,中数为4。
intfun(inta,intb,intc)
{intt;
/**********found**********/
t=(a>b)?
(b>c?
b:
(a>c?
c:
___a___)):
((a>c)?
___a___:
((b>c)?
c:
___b___));
returnt;}
main(){inta1=3,a2=5,a3=4,r;
r=fun(a1,a2,a3);
printf("\nThemiddlenumberis:
%d\n",r);}
第一空:
a第二空:
a第三空:
b
7.函数fun的功能是:
计算
直到
。
若x=2.5,函数值为:
12.182494。
doublefun(doublex)
{doublef,t;intn;
/**********found**********/
f=1.0+___x___;
t=x;
n=1;
do{
n++;
/**********found**********/
t*=x/___n___;
/**********found**********/
f+=___t___;
}while(fabs(t)>=1e-6);
returnf;}
main(){doublex,y;
x=2.5;y=fun(x);
printf("\nTheresultis:
\n");
printf("x=%-12.6fy=%-12.6f\n",x,y);}
第一空:
x第二空:
n第三空:
t
8.给定程序中,函数fun的功能是:
对形参ss所指字符串数组中的M个字符串按长度由短到长进行排序。
ss所指字符串数组中共有M个字符串,且串长#defineM5
#defineN20
voidfun(char(*ss)[N])
{inti,j,k,n[M];chart[N];
for(i=0;ifor(i=0;i{k=i;
/**********found**********/
for(j=___i+1___;j/**********found**********/
if(n[k]>n[j])___k=j___;
if(k!
=i)
{strcpy(t,ss[i]);
strcpy(ss[i],ss[k]);
/**********found**********/
strcpy(ss[k],___t__);
n[k]=n[i];}}}
main()
{charss[M][N]={"shanghai","guangzhou",
"beijing","tianjing","cchongqing"};
inti;
printf("\nThestringsare:
\n");
for(i=0;iprintf("%s\n",ss[i]);
printf("\n");
fun(ss);
printf("\nTheresult:
\n");
for(i=0;iprintf("%s\n",ss[i]);}
第一空:
i+1第二空:
k=j第三空:
t
9.函数fun的功能是:
把形参a所指数组中的最小值放在元素a[0]中,接着把形参a所指数组中的最大值放在a[1]元素中;再把a所指数组元素中的次小值放在a[2]中,把a所指数组元素中的次大值放在a[3];其余以此类推。
例如:
若a所指数组中的数据最初排列为:
9、1、4、2、3、6、5、8、7;则按规则移动后,数据排列为:
1、9、2、8、3、7、4、6、5。
形参n中存放a所指数组中数据的个数。
#defineN9
voidfun(inta[],intn)
{inti,j,max,min,px,pn,t;
for(i=0;i{/**********found**********/
max=min=___a[i]___;
px=pn=i;
for(j=i+1;j/**********found**********/
if(max<___a[j]___)
{max=a[j];px=j;}
/**********found**********/
if(min>___a[j]___)
{min=a[j];pn=j;}}
if(pn!
=i)
{t=a[i];a[i]=min;a[pn]=t;
if(px==i)px=pn;}
if(px!
=i+1)
{t=a[i+1];a[i+1]=max;
a[px]=t;}}}
main()
{intb[N]={9,1,4,2,3,6,5,8,7},i;
printf("\nTheoriginaldata:
\n");
for(i=0;iprintf("\n");
fun(b,N);
printf("\nThedataaftermoving:
\n");
for(i=0;iprintf("\n");}
第一空:
a[i]第二空:
a[j]第三空:
a[j]
10.给定程序中,函数fun的功能是:
将形参std所指结构体数组中年龄最大者的数据作为函数值返回,并在main函数中输出。
typedefstruct
{charname[10];
intage;
}STD;
STDfun(STDstd[],intn)
{STDmax;inti;
/**********found**********/
max=___*std_;
for(i=1;i/**********found**********/
if(max.age<___std[i].age__)max=std[i];
returnmax;}
main()
{STDstd[5]={"aaa",17,"bbb",16,
"ccc",18,"ddd",17,"eee",15};
STDmax;max=fun(std,5);
printf("\nTheresult:
\n");
/**********found**********/
printf("\nName:
%s,Age:
%d\n",
___max.name___,max.age);}
第一空:
*std第二空:
std[i].age第三空:
max.name
11.给定程序中,函数fun的功能是:
将s所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符串和非数字字符串原有的先后次序。
例如,形参s所指的字符串为:
def35adh3kjsdf7。
执行结果为:
defadhkjsdf3537。
voidfun(char*s)
{inti,j=0,k=0;
chart1[80],t2[80];
for(i=0;s[i]!
='\0';i++)
if(s[i]>='0'&&s[i]<='9'){
/**********found**********/
t2[j]=s[i];__j++___;}
elset1[k++]=s[i];
t2[j]=0;t1[k]=0;
/**********found**********/
for(i=0;i/**********found**********/
for(i=0;i<___j___;i++)s[k+i]=t2[i];}
main()
{chars[80]="ba3a54j7sd567sdffs";
printf("\nThestringis:
%s\n",s);
fun(s);
printf("\nTheresultis:
%s\n",s);}
第一空:
j++;第二空:
s[i]=t1[i];第三空:
j
12.函数fun的功能是:
把形参a所指数组中的奇数原顺序依次放到a[0]、a[1]、a[2]、……中,把偶数从数组中删除,奇数个数通过函数值返回。
例如:
若a所指数组中数据最初排列为:
9、1、4、2、3、6、5、8、7,删除偶数后a所指数组中数据为:
9、1、3、5、7,返回值为5。
#defineN9
intfun(inta[],intn)
{inti,j;
j=0;
for(i=0;i/**********found**********/
if(a[i]%2==___1___){
/**********found**********/
a[j]=a[i];___j++___;}
/**********found**********/
return___j___;}
main()
{intb[N]={9,1,4,2,3,6,5,8,7},i,n;
printf("\nTheoriginaldata:
\n");
for(i=0;iprintf("%4d",b[i]);
printf("\n");
n=fun(b,N);
printf("\nThenumberofodd:
%d\n",n);
printf("\nTheoddnumber:
\n");
for(i=0;iprintf("%4d",b[i]);printf("\n");}
第一空:
1第二空:
j++第三空j
13.给定程序中,函数fun的功能是:
对形参s所指字符串下标为奇数的字符按ASCII码大小递增排序,并将排序后下标为奇数的字符取出,存入形参p所指字符数组中,形成一个新串。
例如,形参s所指的字符串为:
baawrskjghzlicda,执行后p所指字符数组中的字符串应为:
aachjlsw。
voidfun(char*s,char*p)
{inti,j,n,x,t;
n=0;
for(i=0;s[i]!
='\0';i++)n++;
for(i=1;i/**********found**********/
___t=i___;
/**********found**********/
for(j=___i___+2;jif(s[t]>s[j])t=j;
if(t!
=i)
{x=s[i];s[i]=s[t];s[t]=x;}}
for(i=1,j=0;i/**********found**********/
p[j]=___0___;}
main()
{chars[80]="baawrskjghzlicda",p[50];
printf("\nThestringis:
%s\n",s);
fun(s,p);
printf("\nTheresultis:
%s\n",p);}
第一空:
t=i第二空:
i第三空0
14.给定函数intMySearch(char*str,char*s)的功能是:
统计字符串s在字符串str中出现的次数。
例如,若输入字符串”1212312345”和”23”,则应输出2(表示字符串”23”在字符串”1212312345”中出现了两次)。
若输入字符串”33333”和”33”,则应输出4(表示字符串”33”在字符串”33333”出现了四次)。
intMySearch(char*str,char*s){
char*p;
intn=0;
for(;*str;)
/***************found***************/
if((p=strstr(str,s))!
=___NULL___)
{n++;str=p+1;}
else
/***************found***************/
___*str___;
/***************found***************/
return(___n___);}
main()
{charstr1[81],str2[21];
printf("\nPleaseenterstr1:
");
gets(str1);
printf("\npleaseenterstr2:
");
gets(str2);
printf("\n\n\"%s\"are(is)appeare