c语言编程题答案解析 下载本文

25. 编程,把文本文件d1.dat复制到d2.dat(其中空格字符不复制)。 #include void main()

{ FILE *fpd1,*fpd2; char ch;

fpd1=fopen(\ while(fscanf(fpd1,\ if(ch!=' ') fprintf(fpd2,\ fclose(fpd1); fclose(fpd2); }

26. 编程,把文本文件d1.dat复制到d2.dat(其中大写英文字母要转换为小写字母)。

#include void main()

{ FILE *fpd1,*fpd2; char ch;

fpd1=fopen(\ while(fscanf(fpd1,\ if(ch>='A'&&ch<='Z') ch=ch+32; fprintf(fpd2,\ }

fclose(fpd1); fclose(fpd2); }

27. 把文本文件d1.dat复制到文本文件d2.dat中,要求仅复制d1.dat中除英文字符和数字以外的其它内容。 #include void main()

{ FILE *fpd1,*fpd2; char ch;

fpd1=fopen(\ while(fscanf(fpd1,\

if(!(ch>='A'&&ch<='Z'||ch>='a'&&ch<='z'||ch>='0'&&ch<='9')) fprintf(fpd2,\ fclose(fpd1); fclose(fpd2); }

28. 求出1至100之间的素数(只能被1和自身整除的数)并顺序写入文件su.dat。

#include #include void main()

{ FILE *fp; int i,j,k=2;

fp=fopen(\ for(i=5;i<100;i=i+2) {

for(j=3;j<=sqrt(i);j=j+2) if(i%j==0) break; if(j>sqrt(i)) { fprintf(fp,\

if(k==0) fprintf(fp,\ }

fclose(fp); }

29.磁盘文件a1和a2,各自存放一个已按字母顺序排好的字符串,编程合并二个文件到a3

文件中,合并后仍保持字母顺序。 #include #include void main()

{ FILE *fp1,*fp2,*fp3; int i,j,k; char c1,c2; fp1=fopen(\

// 首先从文件a1、a2中各读入一个字符分别送入变量c1、c2,下面将作

// 循环比较,直到读到文件尾标志为止。

fp3=fopen(\ do {

if(c1

// 若a1先读到文件尾,则将c2写入a3,再将a2中其它字符读入后写入a3;...

if(feof(fp1)) do {

fputc(c2,fp3); c2=fgetc(fp2); } while(!feof(fp2)) ; else do { fputc(c1,fp3); c1=fgetc(fp1); } while(!feof(fp1)) ;

fclose(fp1); fclose(fp2); fclose(fp3); }

30.顺序文件C.DAT每个记录包含学号(8位字符)和成绩(三位整数)两个数据项。从文件读入学生成绩,将大于或等于60分的学生成绩再形成一个新的文件SCORE60.DAT保存在A盘上,并显示出学生总人数、平均成绩和及格人数。

#include #include void main()

{ FILE *fp1,*fp2; char s[9]; int x,zrs=0,pjcj=0,jgrs=0; fp1=fopen(\ fscanf(fp1,\ do {

zrs++; pjcj+=x;

if(x>=60) { jgrs++; fprintf(fp2,\ fscanf(fp1,\ } while(!feof(fp1));

printf(\总人数:%d 平均成绩:%d 及格人数:%d\\n\ fclose(fp1); fclose(fp2);

}

31.程序清单: typedef int datatype; typedef struct node {datatype data; struct node *next; }linklist; ……

INVERT(linklist *head) {linklisk *p,*q; p=head->next; if(p!=NULL)

{head->next=NULL; do

{q=p->next;

p->next=head->next; head->next=p; p=q; }

while(p!=NULL); } }

32.程序清单: PURGE(linklist *head) {linklist *p,*q; q=head->next; if(q==NULL)return; p=q->next; while(p!=NULL) if(p->data==q->data) {q=p->next; free(p); p=q->next; } else {q=p; p=p->next; } }

33、程序清单: #include