C语言程序设计实验报告册(第十次).doc
C语言程序设计
实验报告册
《C语言程序设计》实 验 报 告
学号: 姓名: 班级: 成绩:
实验名称: 文件实验地点:所使用的开发工具及环境:pc机一套实验目的:
1.熟悉文件和文件指针的概念以及文件指针的定义方法。
2.掌握文件打开和关闭的概念和方法。
3.掌握常用的关于文件操作库函数的使用。
实验内容:
1、程序调试题(文件名为test1-1.c)
磁盘上有一个名为test1-1.c的C程序文件,其中函数fun的功能是:在字符串a中找出ASCII码值最大的字符,将其放在第一个位置上;并将该字符前的原字符向后顺序移动。例如,调用fun函数之前字符串为:123aBYdZf,调用后字符串中的内容为:f123aBYdZ。
在main函数中,从文本文件test1-1.txt中读出字符串放入一维数组a中,调用fun函数构成新的数组,在主函数中输出处理后的结果。
请改正程序中的错误,使它能得出正确结果。
注意:不得增行或删行,也不得更改程序结构。
源程序如下:
#include
#include
#include
fun(char *p)
{ char max,*q; int i=0;
max=p[i];
while(p[i]!=0)
{if(max>p[i])
{ max=p[i];
q=p+1;
}
i++;
}
while(q>p)
{*q=*(q-1);
q++;
}
p[0]=max;
}
void main( )
{ FILE *fp;
char a[255];
int i=0;
if((fp=fopen("test1-1.txt","r"))==NULL)
{ printf("Cannot open the file.\n");
exit(0);
}
while(1)
{ a[i++]=fgets(fp);
if(a[i]==EOF) break;
i++;
}
a[i]="\0";
printf("The original string :" );
puts(a);
fun(a);
printf("The string of changing is :: %s\n\n",a);
fclose(fp);
}
2.程序调试题(文件名为test2-1.c)
磁盘上有一个名为test2-1.c 的C程序文件,其中函数fun的功能是:统计数组a中素数的个数,并将个数作为函数值返回。
在main函数中,从文件test2-1.txt中读出10个整数放入整型数组中,调用fun函数,将整型数组的10个数及素数的个数输出到屏幕上。
请改正程序中的错误,使它能得出正确的结果。
注意:不得增行或删行,也不得更改程序的结构。
源程序如下:
#include
#include
int fun(int *a,int n)
{int i,j,cnt=0;
for(i=0;i
{ for(j=2;j<=i/2;j++)
if(i%j==0) continue;
if(j>a[i]/2) cnt++;
}
return cnt;
}
void main( )
{int a[10],i,cnt;
file *fp;
if((fp=fopen("test2-1.txt","r"))==NULL)
{printf("Cannot open the file.\n");
exit(0);
}
for(i=0;i<10;i++)
{scanf(fp,"%d",a+i);
printf("%5d",a[i]);
}
cnt=fun(a,10);
printf("\ncnt=%d\n",cnt);
fclose(fp);
}
3.编程题(test1-2.c)
编写程序,实现矩阵(3行列)的转置(即行列互换)
例如,输入如下的矩阵:
100 200 300
400 500 600
700 800 900
则程序输出:
100 400 700
200 500 800
300 600 900
注意:部分源程序给出如下。
请勿改动主函数main 和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include
#include