《浙工大C语言课本习题答案》(8)

2025-08-07

scanf(\

for(i=31;i>=0;i--){ b[i]=(char)((a&1)+'0');a=a>>1; } puts(b); }

5.输入1个short类型数据,显示它二进制数奇数位(即从左边起的第1、3、5、??、15位)。

解答:#include

void main()

{ short a,i; char b[9]={'\\0'}; scanf(\

for(i=7;i>=0;i--){ b[i]=(char)((a&1)+'0');a=a>>2; } puts(b); }

6.输入一个整数,将其低8位全置1,高8位保留,并以十六进制输出该数。

解答:#include void main()

{ int a; scanf(\

a=a|0xff; printf(\ }

习 题 十一

⒈ 写出下列fopen函数调用所打开文件的读写方式与文件存储格式。

⑴ fpt=fopen(\⑵ fpt=fopen(\⑶ fpt=fopen(\⑷ fpt=fopen(\⑸ fpt=fopen(\

解答:⑴ 新建文本文件 ⑵ 新建二进制文件 ⑶ 可读写文本文件 ⑷ 追加记录二进制文件 ⑸ 新建可读写文本文件 ⒉ 填空题

⑴ fopen函数的返回值是 文件读写的首地址或NULL 。

⑵ 文件打开方式为\,文件打开后,文件读写位置在 文件的首纪录前 。 ⑶ 文件打开方式为\,文件打开后,文件读写位置在 文件的末纪录后 。 ⑷ 表达式“fgetc(fpn)”的值为 所读入字符的ASCII值 或 EOF 。 ⑸ 表达式“fgets(a,10,fpn)”的值为 字符串a的地址 或 NULL 。 ⑹ 函数fscanf的返回值为 所读入数据个数 或 EOF 。 ⑺ 函数fread的返回值为所读入数据的个数或 0 。

⑻ 表达式“fscanf(fpn,\”的值为-1时,函数feof()的值为 1 。 3. 编程,输入若干同学的姓名、学号、3门功课成绩,写到文本文件e:\\aaa.txt。

解答:

#include

36

struct stu{char name[9];char numb[9];int score[3];} void main()

{ FILE *fp1; struct stu a; int i,n;

fp1=fopen(\ for(i=1;i<=n;i++) {

scanf(\

fprintf(fp1,\

/* 格式串中各格式符间有空格,在从文件读入数据时可作为间隔符 */ }

fclose(fp1); } 4. 编程,顺序读入题3所建立文本文件中各个同学的姓名、学号、成绩,显示输出。

解答: #include

struct stu{char name[9];char numb[9]; int score[3];}; void main()

{ FILE *fp1; struct stu a;

fp1=fopen(\

while(fscanf(fp1,\ &a.score[1],&a.score[2])!=EOF)

printf(\ a.score[1],a.score[2]); fclose(fp1);

} /* 应参照(题3)文件中数据存储格式,确定读文件时的格式符 */ 5. 编程,输入1个同学的学号,从题3所建立的文本文件中删除该同学的信息。

解答: #include #include

struct stu{char name[9];char numb[9]; int score[3];}; void main()

{ FILE *fp1,*fp2; struct stu a; char x[9]; gets(x);

fp1=fopen(\ while(fscanf(fp1,\ &a.score[1],&a.score[2])!=EOF)

if(strcmp(a.numb,x))fprintf(fp2,\ a.score[0],a.score[1],a.score[2]); fclose(fp1);fclose(fp2);

remove(\ } 6. 编程,读入若干行字符(每行不超过80个),写入文本文件e:\\bbb.txt。

解答: #include void main()

{ FILE *fp; char a[81];

fp=fopen(\

while(gets(a)!=NULL) { fputs(a,fp); fputc('\\n',fp); }

37

fclose(fp); /* 加入换行符,作为间隔符 */ }

7. 文件a.txt、b.txt中各自存放了若干个整数,编程,显示在a.txt中存在而b.txt中不存在的那些数。

解答: #include void main()

{ FILE *fa,*fb; int a,b;

fa=fopen(\ while(!feof(fa)) { fscanf(fa,\ while(!feof(fb)) {

fscanf(fb,\ }

if(feof(fb)) printf(\ rewind(fb); }

fclose(fa); fclose(fb); }

8. 编程,输入若干同学的姓名、学号、3门功课成绩,写到二进制文件中(文件名自定)。

解答: #include void main()

{ FILE *fp; char name[9],numb[9]; int i,n,score[3]; fp=fopen(\ for(i=1;i<=n;i++) {

scanf(\ fwrite(name,sizeof(name),1,fp); fwrite(numb,sizeof(numb),1,fp); fwrite(score,sizeof(int),3,fp); }

rewind(fp); /* 下面的读文件程序段不是必须的,只是为验证输入是否正确 */

while(fread(name,sizeof(name),1,fp)!=NULL) {

fread(numb,sizeof(numb),1,fp); fread(score,sizeof(int),3,fp);

printf(\

} } 9. 编程,输入1个同学的姓名、学号、3门功课成绩,修改题8所建立的二进制文件中具有相同学号同学的信息。

解答: #include #include void main()

{ FILE *f1,*f2; char name[2][9],numb[2][9]; int s[2][3];

f1=fopen(\ scanf(\

38

while(fread(name[1],sizeof(name[1]),1,f1)!=NULL) { fread(numb[1],sizeof(numb[1]),1,f1); fread(s[1],sizeof(int),3,f1);

if(strcmp(numb[0],numb[1])) {

fwrite(name[1],sizeof(name[1]),1,f2); fwrite(numb[1],sizeof(numb[1]),1,f2); fwrite(s[1],sizeof(int),3,f2); }

else {

fwrite(name[0],sizeof(name[0]),1,f2); fwrite(numb[0],sizeof(numb[0]),1,f2); fwrite(s[0],sizeof(int),3,f2); } }

fclose(f1);fclose(f2);

remove(\ /* 下面的读文件程序段不是必须的,只是为验证输入是否正确 */ f2=fopen(\

while(fread(name[0],sizeof(name[0]),1,f2)!=NULL) { fread(numb[0],sizeof(numb[0]),1,f2); fread(s[0],sizeof(int),3,f2);

printf(\

}

fclose(f2); } 10. 编程,模仿第10章例8,利用按位异或对某一文件加密与解密。

解答: #include void main()

{ char a; int m1,m2,i; FILE *p1,*p2;

printf(\输入一个整数密值(1~255):\\n\ p1=fopen(\ while((a=fgetc(p1))!=EOF) fputc(a^m1,p2);

fclose(p1); fclose(p2); p2=fopen(\ while((a=fgetc(p2))!=EOF) putchar(a^m1); fclose(p2); }

11.文本文件a.txt、b.txt每行存放一个数且均按从小到大存放。下列程序将这两文件中数据合并到c.txt,文件c.txt中数据也要从小到大存放,填空将程序补充完整、正确。

说明:若文件a.txt数据为1↙6↙9↙18↙27↙35↙,b.txt数据为10↙23↙25↙39↙61↙,则文件c.txt中数据应为1↙6↙9↙10↙18↙23↙25↙27↙35↙39↙61。

解答: #include void main()

{ FILE *f1,*f2,*f3; int x,y;

f1=fopen(\

39

⑴ f3=fopen(\

fscanf(f1,\ while(1) if(⑵ x

else { fprintf(f3,\ if( ⑶ feof(f1) ) {

fprintf(f3,\

while(fscanf(f2,\⑷ fprintf(f3,\ }

else {

⑸ fprintf(f3,\

while(fscanf(f1,\ }

fclose(f1); fclose(f2); fclose(f3); }

40


《浙工大C语言课本习题答案》(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:《逻辑学导论》期末考试

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219