10. 给定程序的功能是:从键盘输入若干行文本(每行不超过80个字符),写到文件myfile4.txt 中,用-1作为字符串输入结素的标志。然后将文件的内容读出显示在屏幕上。文件的读写分别由自定义函数read Text 和 write Text实现.
#include
#include
#include
void WriteText(FILE *);
void ReadText(FILE *);
main( )
{ FILE *fp;
if((fp=fopen("myfile4.txt","w"))==NULL)
{ printf(" open fail!!\n"); exit(0); }
WriteText(fp);
fclose(fp);
if((fp=fopen("myfile4.txt","r"))==NULL)
{ printf(" open fail!!\n"); exit(0); }
ReadText(fp);
fclose(fp);
}
/**********************************found*********************************/
void WriteText(FILE ___1___ ) *fw
{ char str[81];
printf("\nEnter string with -1 to end :\n");
gets(str);
while(strcmp(str,"-1")!=0) {
/**********************************found*********************************/
fputs(___2___,fw); fputs("\n",fw); str
gets(str);
}
}
void ReadText(FILE *fr)
{ char str[81];
printf("\nRead file and output to screen :\n");
fgets(str,81,fr);
while( !feof(fr) ) {
/**********************************found*********************************/
printf("%s",___3___); str
fgets(str,81,fr);
}
}
11. 给定程序中,函数FUN的功能是:有N X N矩阵,根据给定的m(m<=N)值,将每个元素中的值均右移m个位置,左边置为0。例如,N=3,m=2,有下列矩阵
1 2 3 0 0 1
4 5 6 程序执行结果为 0 0 4
7 8 9 0 0 7
#include
#define N 4
void fun(int (*t)[N], int m)
{ int i, j;
/**********************************found*********************************/
for(i=0; i
{ for(j=N-1-m; j>=0; j--)
/**********************************found*********************************/
t[i][j ___2___ ]=t[i][j]; m
/**********************************found*********************************/
for(j=0; j<___3___; j ) m
t[i][j]=0;
}
}
main( )
{ int t[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10}, i, j, m;
printf("\nThe original array:\n");
for(i=0; i
{ for(j=0; j
printf("%2d ",t[i][j]);
printf("\n");
}
printf("Input m (m<=%d): ",N);scanf("%d",&m);
fun(t,m);
printf("\nThe result is:\n");
for(i=0; i
{ for(j=0; j
printf("%2d ",t[i][j]);
printf("\n");
}
}
15. 函数FUN的功能是; 把形参a所指数组中的最大值放杂a[0]中,接着求出a所指数组中的最小值防在 a[1]中;再把a所指数组元素中的次大值a[2]中,把a所指数组的数据最初排列为:1,4,2,3,9,6,5,8,7,则按规则移动后,数据排列为:9,1,8,2,7,3,6,4,5。形参n中存放a所指数组中数据的个数。
#include
#define N 9
/**********************************found*********************************/
void fun(int ___1___ , int n) *a
{ int i, j, max, min, px, pn, t;
/**********************************found*********************************/
for (i=0; i
{ max = min = a[i];
px = pn = i;
/**********************************found*********************************/
for (j=___3___; j
{ if (max < a[j])
{ max = a[j]; px = j; }
if (min > a[j])
{ min = a[j]; pn = j; }
}
if (px != i)
{ t = a[i]; a[i] = max; a[px] = t;
if (pn == i) pn= px;
}
if (pn != i 1)
{ t = a[i 1]; a[i 1] = min; a[pn] = t; }
}
}
main( )
{ int b[N]={1,4,2,3,9,6,5,8,7}, i;
printf("\nThe original data :\n");
for (i=0; i
printf("\n");
fun(b, N);
printf("\nThe data after moving :\n");
for (i=0; i
printf("\n");
}
16. 给定程序中,函数FUN的功能是;求SS所指字符串数组中长度最厂的字符串所在的行下标,作为函数值返回,并把其串长防在形参n所指变量中。SS所指字符串数组中共有M个字符串,且串长< N.
#include
#define M 5
#define N 20
/**********************************found*********************************/
int fun(char (*ss) [___1___], int *n) N
{ int i, k=0, len=0;
for(i=0; i
{ len=strlen(ss[i]);
/**********************************found*********************************/
if(i==0) *n=___2___; len
if(len>*n) {
/**********************************found*********************************/
*n=____3____; len
k=i;
}
}
return(k);
}
main( )
{ char ss[M][N]={"shanghai","guangzhou","beijing","tianjing","cchongqing"};
int n,k,i;
printf("\nThe original strings are :\n");
for(i=0;i
k=fun(ss,&n);
printf("\nThe length of longest string is : %d\n",n);
printf("\nThe longest string is : %s\n",ss[k]);
}
17. 函数FUN的功能是:逆置数组元素中的值。例如:若a所指数组中的数据依次为:1,2,3,4,5,6,7,8,9,则逆置后依次为:9,8,7。6,5,4,3,2,1。形参n给出数组中数据的个数。
#include
void fun(int a[], int n)
{ int i,t;
/**********************************found*********************************/
for (i=0; i<___1___; i ) n/2
{
t=a[i];
/**********************************found*********************************/
a[i] = ___2___ a[n-1-i];
/**********************************found*********************************/
a[n-1-i]= ___3___; t
}
}
main( )
{ int b[9]={1,2,3,4,5,6,7,8,9}, i;
printf("\nThe original data :\n");
for (i=0; i<9; i )
printf("%4d ", b[i]);
printf("\n");
fun(b, 9);
printf("\nThe data after invert :\n");
for (i=0; i<9; i )
printf("%4d ", b[i]);
printf("\n");
}
18. 给定程序中,函数FUN的功能是:在形参S所指字符串中寻找与参数C相同的字符,并在其后插入一个与之相同的字符,若找不到相同的字符则函数不做任何处理。
例如,S所指字符串:baacda,c中的字符为:a, 执行后S所指字符串为:baaaacdaa
#include
void fun(char *s, char c)
{ int i, j, n;
/**********found**********/
for(i=0; s[i]!=___1___; i ) '\0'
if(s[i]==c)
{
/**********found**********/
n=____2____; 0
while(s[i 1 n]!='\0') n ;
for(j=i n 1; j>i; j--) s[j 1]=s[j];
/**********found**********/
s[j 1]=s[___3___] ; i
i=i 1;
}
}
main()
{ char s[80]="baacda", c;
printf("\nThe string: %s\n",s);
printf("\nInput a character: "); scanf("%c",&c);
fun(s,c);
printf("\nThe result is: %s\n",s);
}
19. 函数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。
#include
#define N 9
int fun(int a[], int n)
{ int i,j;
j = 0;
for (i=0; i
/**********************************found*********************************/
if (a[i]%2==___1___) 1
{
/**********************************found*********************************/
a[j] = a[i]; ___2___; j
}
/**********************************found*********************************/
return ___3___; j
}
main( )
{ int b[N]={9,1,4,2,3,6,5,8,7}, i, n;
printf("\nThe original data :\n");
for (i=0; i
printf("\n");
n = fun(b, N);
printf("\nThe number of odd : %d \n", n);
printf("\nThe odd number :\n");
for (i=0; i
printf("\n");
}
20.给定程序的功能是:调用函数FUN将指定源文件中的内容复制到指定的目标文件中,复制成功时函数返回值为0。在复制的过程中,把复制的内容输出到终端屏幕。主函数中源文件名防在变量sfname中,目标文件名放在变量tfname中。
#include
#include
int fun(char *source, char *target)
{ FILE *fs,*ft; char ch;
/**********************************found*********************************/
if((fs=fopen(source, ___1___))==NULL) "r"
return 0;
if((ft=fopen(target, "w"))==NULL)
return 0;
printf("\nThe data in file :\n");
ch=fgetc(fs);
/**********************************found*********************************/
while(!feof(___2___)) fs
{ putchar( ch );
/**********************************found*********************************/
fputc(ch,___3___); ft
ch=fgetc(fs);
}
fclose(fs); fclose(ft);
printf("\n\n");
return 1;
}
main( )
{ char sfname[20] ="myfile1",tfname[20]="myfile2";
FILE *myf; int i; char c;
myf=fopen(sfname,"w");
printf("\nThe original data :\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!");
else printf("Fail!");
}