char ch;
char filename[10]; printf(\ scanf(\
if ((fp = fopen(filename, \ printf(\ exit(0); } ch = getchar(); while(ch != '#') { fputc(ch,fp); putchar(ch); ch = getchar(); } fclose(fp); }
4. 以下程序完成的功能是: #include \main() { FILE *fp; char ch;
fp = fopen(\ if (fp == NULL) {
printf(\ exit(0); } ch = fgetc(fp); while(ch != EOF) { putchar(ch); ch = fgetc(fp); } fclose(fp); }
5. 以下程序完成的功能是: #include \main() {
FILE *in, *out; char ch;
char infile[10], outfile[10];
printf(\ scanf(\
printf(\ scanf(\
if ((in = fopen(infile, \ { printf(\ exit(0); }
if ((out = fopen(outfile, \ { printf(\ exit(0); } while(!feof(in)) fputc(fgetc(in), out); fclose(in); fclose(out); }
6. 以下程序执行后输出结果是:。
#include
{ FILE *fp; int i,k=0,n=0; fp=fopen(\
for(i=1;i<4;i++) fprintf(fp,\ fclose(fp);
fp=fopen(\
fscanf(fp,\ printf(\ fclose(fp); }
7. 以下程序执行后输出结果是:。
#include
int i,a[4]={1,2,3,4},b; fp=fopen(\
for(i=0;i<4;i++) fwrite(&a[i],sizeof(int),1,fp); fclose(fp);
fp=fopen(\;
fseek(fp,-2L*sizeof(int).SEEK_END);/*使位置指针从文件尾向前移2*sizeof(int)字节*/ fread(&b,sizeof(int),1,fp);/*从文件中读取sizeof(int)字节的数据到变量b中*/ fclose(fp);
printf(\} 3
8. 设head是node类型的全程量,以head为头指针的链表各节点的值如下图所示。 head→ 3 ()→4 ()→5 ()→6 ()→7 NULL ,调用fun(head)返回值是:
#include
#define LEN sizeof(struct node) struct node{ int nun;
struct node *next; };
int fun(struct node*h) {int k=0; struct node*p=h; while(p!=NULL){
if(p->next!=NULL)k+=p->num; p=p->next; } return k; }
void main()
{ struct node*head ,*p1,*p2; int i;
head=(struct node *) malloc(LEN);p1=head; for(i=3;i<=7;i++)
{p2=(struct node*)malloc(LEN);p1->next=p2; p2->num=i;p2->next=NULL; p1=p2;printf(“%d\\n”,fun(head->next)); }} 18
9. 以下程序执行后输出结果是:。
# include
{ struct info {int data; struct info *pn;}; info base, p; base=NULL; for(int i=0; i<10; i++)
{ p=(struct info*)malloc(sizeof(struct info)); p->data=i+1;
p->pn=base; base=p; } p=base; while(p!=NULL)
{ printf(\ }
printf(\ }
1 2 3 4 5 6 7 8 9 10
六、程序设计题
1. 从C盘根目录下名为“xhar2.txt“的文本文件中读取前10个字符,依次显示在屏幕上。如果文本文件中不足10个字符,则有多少个字符读取并显示多少个字符。 提示:参考程序段:
for(i=0;i<10;i++) { if(feof(fp)) break; c=fgetc(fp); putchar(); }
2. 从键盘上读取3个字符串,依次写入D盘根目录下名为“string1.txt”的文本文件。 提示:参考程序段:
for(i=0;i<3;i++) { gets(s1[i]); fputs(s1[i],fp); }
3. 有两个磁盘文件a.dat和b.dat,要求产生一个新的文件c.dat,将b.dat中的数据追加到a.dat后面,并存入到c.dat中。
提示:设两个磁盘文件为文本文件。以读的方式打开a.dat和b.dat,以写的方式创建c.dat。先将b.dat的数据复制到c.dat,再将a.bat的数据复制到c.dat。
4. 从键盘输入一些字符,逐个把它们存入磁盘文件test.txt中去,直到输入一个#为止。 提示:利用fputc函数将字符写入到磁盘文件中。
5. 编程统计C盘Mydir文件夹中文本文件data.txt中字符'$'出现的次数。并将统计结果写入到文本文件C:\\Mydir\\res.txt中。
6. 读入一个文件,输出其中最长的一行的行号和内容。 提示:以硬回车键'\\n'作为行的结束标志。
7. 编写程序将全班同学的姓名、地址和电话号码写到一个文件class.dat中。 提示:学生的信息可以存放到结构体数组,以fwrite函数写数据到文件中。
8. 将6题产生的class.dat文件中的数据按姓名从低到高排列输出到显示器上,并把排了序的数据重新写入到文件class1.dat中。
提示:以fread函数从文件中读入学生的信息,并存放到结构体数组,在数组中进行排序。排序完毕再写入文件中。
9. 利用7题产生的class1.dat文件,编程实现从中直接读取第三个同学的数据。
10. 在7题产生的class1.dat文件中插入一个新生的数据,要求插入后的文件数据仍然按姓名顺序排列。
提示:先将数据读入到数组中,插入新的数据后,再写入到文件中。