c primer plus第十三章编程练习答案(纯手打欢迎指错)
2014-10-07 21:31
483 查看
13.1
13.2
13.4
13.5
13.6
13.9
13.11
13.12
#include<stdio.h> #include<stdlib.h> int main(void) { int ch; FILE *fp; long count =0; char file[100]; printf("Please enter the name of file.\n"); scanf("%s",file); if((fp=fopen(file,"r"))==NULL) { fprintf(stderr,"Can't open the file.\n"); exit(1); } while((ch=getc(fp))!=EOF) { putc(ch,stdout); count++; } fclose(fp); printf("\nFile %s has %ld characters\n",file,count); return 0; }
13.2
#include<stdio.h> #include<stdlib.h> int main(int argc,char *argv[]) { char ch; if(argc!=3) { fprintf(stderr,"Error!"); exit(1); } FILE*fp; FILE*fp2; if((fp=fopen(argv[1],"rb"))==NULL) { fprintf(stderr,"Can t open the file %s",argv[1]); exit(1); } if((fp2=fopen(argv[2],"wb"))==NULL) { fprintf(stderr,"Can t open the file %s",argv[2]); exit(1); } while((ch=getc(fp))!=EOF) { putc(ch,fp2); } fclose(fp); fclose(fp2); return 0; }13.3
#include<stdio.h> #include<ctype.h> #include<stdlib.h> int main(void) { FILE*fp; FILE*fp2; char ch[100]; char ch2[100]; char c; printf("Please enter source file name.\n"); scanf("%s",ch); printf("Please enter target file name.\n"); scanf("%s",ch2); if((fp=fopen(ch,"r"))==NULL) { fprintf(stderr,"Can't open the file %s.\n",ch); exit(1); } if((fp2=fopen(ch2,"w"))==NULL) { fprintf(stderr,"Can't open the file %s.\n",ch2); exit(1); } while((c=getc(fp))!=EOF) { c=toupper(c); putc(c,fp2); } fclose(fp); fclose(fp2); return 0; }
13.4
#include<stdio.h> #include<stdlib.h> int main(int argc,int *argv[]) { FILE*fp; char ch; for(int i=1;i<argc+1;i++) { if((fp=fopen(argv[i],"r"))==NULL) { fprintf(stderr,"Can't open the file ",argv[i]); exit(1); } while((ch=getc(fp))!=EOF) { putc(ch,stdout); } puts(" "); fclose(fp); } return 0; }
13.5
#include<stdio.h>// 文件名后的第一个命令提示符是目标文件,后面的的命令提示符可以是源文件。 #include<stdlib.h> #include<string.h> #define BUFSIZE 1024 #define SLEN 81 void append(FILE*source,FILE*dest); int main(int argc,char *argv[]) { FILE *fa,*fs; int files=0; char file_app[SLEN]; char file_src[SLEN]; if((fa=fopen(argv[1],"a"))==NULL) { fprintf(stderr,"Can't open %s\n",argv[1]); exit(1); } if(setvbuf(fa,NULL,_IOFBF,BUFSIZE)!=0) { fputs("Can't creat output buffer\n",stderr); exit(3); } for(int n=2;n<argc;n++) { if(strcmp(argv[1],argv )==0) fputs("Can't append file to itself\n",stderr); else if((fs=fopen(argv ,"r"))==NULL) fprintf(stderr,"Can't open %s\n",argv ); else{ if(setvbuf(fs,NULL,_IOFBF,BUFSIZE)!=0) { fputs("Can't create input buffer\n",stderr); continue; } append(fs,fa); if(ferror(fs)!=0) fprintf(stderr,"Error in reading file %s.\n",argv ); if(ferror(fa)!=0) fprintf(stderr,"Error in writing file %s.\n",argv[1]); fclose(fs); files++; printf("File %s appended.\n",argv ); } } printf("Done.%d files appended.\n",files); fclose(fa); return 0; } void append(FILE*source,FILE*dest) { size_t bytes; static char temp[BUFSIZE]; while((bytes=fread(temp,sizeof(char),BUFSIZE,source))>0) fwrite(temp,sizeof(char),bytes,dest); }
13.6
#include<stdio.h> #include<stdlib.h> #include<string.h> #define LEN 40 int main(void) { FILE*in,*out; int ch; char name[LEN]; int count=0; printf("Please enter the name of file.\n"); scanf("%s",name); if((in=fopen(name,"r"))==NULL) { fprintf(stderr,"Can't open the file.\n"); exit(1); } strcat(name,".red"); if((out=fopen(name,"w"))==NULL) { fprintf(stderr,"Can't open the file.\n"); exit(1); } while((ch=getc(in))!=EOF) if(count++%3==0) putc(ch,out); if(fclose(in)!=0||fclose(out)!=0) fprintf(stderr,"Error in closing files.\n"); return 0; }13.7
#include<stdio.h> #include<stdlib.h> int main(int argc,char*argv[]) { FILE*fp,*fp2; char ch,ch2; if(argc!=3) { fprintf(stderr,"Cant open files.\n"); exit(1); } if((fp=fopen(argv[1],"r"))==NULL) { fprintf(stderr,"Cant open the file.\n"); exit(1); } if((fp2=fopen(argv[2],"r"))==NULL) { fprintf(stderr,"Can't open the file.\n"); exit(1); } do{ while((ch=getc(fp))!=EOF&&ch!='\n') putc(ch,stdout); if(ch=='\n') putc(ch,stdout); while((ch2=getc(fp2))!=EOF&&ch2!='\n') putc(ch2,stdout); if(ch2=='\n') putc(ch2,stdout); }while(ch!=EOF||ch2!=EOF); fclose(fp); fclose(fp2); return 0; }
</pre><p>13.8</p><p></p><pre name="code" class="plain">#include<stdio.h> #include<stdlib.h> int main(int argc,char*argv[]) { FILE* fp; char ch; int count=0; char ch2; ch2=argv[1]; if(argc==2) { printf("Please enter a line.\n"); while((ch=getc(stdin))!=EOF) { if(ch==argv[1][0]) count++; } printf("Have %d %c\n",count,argv[1][0]); exit(0); } for(int i=2;i<argc;i++) { if((fp=fopen(argv[i],"r"))==NULL) { fprintf(stderr,"Can t open the file %s.To the next file.\n",argv[i]); continue; } ch=getc(fp); while(ch!=EOF) { if(ch==argv[1][0]) count++; ch=getc(fp); } printf("file %s has %d ge %c zifu\n",argv[i],count,argv[1][0]); count=0; fclose(fp); } return 0; }
13.9
#include<stdio.h> #include<stdlib.h> #define MAX 40 int main(void) { FILE*fp; char words[MAX]; int count=1; if((fp=fopen("words","a+b"))==NULL) { fprintf(stderr,"Can't open \"words\" file\n"); exit(1); } char ch; while((ch=getc(fp))!=EOF) { if(ch=='\n') count++; } puts("Enter words to add to the file;press the Enter key at the beginning of a line to terminate."); while(gets(words)!=NULL&&words[0]!='\0') { fprintf(fp,"%d:%s\n",count++,words); } count=ftell(fp)+1; puts("File contents:"); rewind(fp); while(fscanf(fp,"%s",words)==1) puts(words); if(fclose(fp)!=0) fprintf(stderr,"Error closing file\n"); return 0; }13.10
#include<stdio.h> #include<stdlib.h> #define MAX 100 int main(viod) { char name[MAX]; FILE*fp; long num; char ch; puts("Please enter a name of file."); scanf("%s",name); if((fp=fopen(name,"r"))==NULL) { fprintf(stderr,"Can t open the file.\n"); exit(1); } printf("\nPlease enter the num of file place.(q to quit.)\n"); while(scanf("%ld",&num)==1) { fseek(fp,num,SEEK_SET); ch=getc(fp); while(ch!='\n'&&ch!=EOF) { putchar(ch); ch=getc(fp); } printf("\nPlease enter the num of file place.(q to quit.)\n"); } }
13.11
#include<stdio.h> #include<string.h> #include<stdlib.h> #define MAX 100 int main(int argc,char *argv[]) { FILE*fp; char ch[MAX]; char *ptr; if(argc!=3) { fprintf(stderr,"Error!\n"); exit(1); } if((fp=fopen(argv[2],"r"))==NULL) { fprintf(stderr,"Can t open the file.\n"); exit(1); } ptr=fgets(ch,MAX,fp); while(ptr!=NULL) { if(strstr(ptr,argv[1])!=NULL) fputs(ptr,stdout); ptr=fgets(ch,MAX,fp); } fclose(fp); return 0; }
13.12
#include<stdio.h> #include<stdlib.h> #include<string.h> #define ROWS 20 //参考了官方答案 #define COLS 30 #define MAX 30 const char trans[11] = " .':~*=&%@"; void make_p(int ar[][COLS],char br[][COLS]); int main(void) { int pic_i[ROWS][COLS]; char pic_o[ROWS][COLS]; char name[MAX]; FILE*fp; printf("Please enter the name of file.\n"); scanf("%s",name); if((fp=fopen(name,"rb"))==NULL) { fprintf(stderr,"Cant open the file.\n"); exit(1); } for(int i=0;i<ROWS;i++) for(int j=0;j<COLS;j++) fscanf(fp,"%d",&pic_i[i][j]); fclose(fp); make_p(pic_i,pic_o); for(int i=0;i<ROWS;i++) { for(int j=0;j<COLS;j++) putc(pic_o[i][j],stdout); putchar('\n'); } } void make_p(int ar[][COLS],char br[][COLS]) { for(int i=0;i<ROWS;i++) for(int j=0;j<COLS;j++) { br[i][j]=trans[ar[i][j]]; } }13.13
#include<stdio.h> #include<stdlib.h> //很傻的办法。。。用if重新定义pic_i #include<string.h> #define ROWS 20 //²Î¿¼Á˹ٷ½´ð°¸£¬»ù±¾²î²»¶à°É #define COLS 30 #define MAX 30 void camp(int s[][COLS]); const char trans[11] = " .':~*=&%@"; void make_p(int ar[][COLS],char br[][COLS]); int main(void) { int pic_i[ROWS][COLS]; char pic_o[ROWS][COLS]; char name[MAX]; FILE*fp; printf("Please enter the name of file.\n"); scanf("%s",name); if((fp=fopen(name,"rb"))==NULL) { fprintf(stderr,"Cant open the file.\n"); exit(1); } for(int i=0;i<ROWS;i++) for(int j=0;j<COLS;j++) fscanf(fp,"%d",&pic_i[i][j]); camp(pic_i); fclose(fp); make_p(pic_i,pic_o); for(int i=0;i<ROWS;i++) { for(int j=0;j<COLS;j++) putc(pic_o[i][j],stdout); putchar('\n'); } } void make_p(int ar[][COLS],char br[][COLS]) { for(int i=0;i<ROWS;i++) for(int j=0;j<COLS;j++) { br[i][j]=trans[ar[i][j]]; } } void camp(int s[ROWS][COLS]) { int r,c; for(r=0;r<ROWS;r++) for(c=0;c<COLS;c++) { if((r==0&&c==0)||(r==0&&c==29)||(r==19&&c==0)||(r==19&&c==29)) { if((r==0&&c==0)&&(s[r][c]-s[r][c+1]>1)&&(s[r][c]-s[r+1][c]>1)) s[r][c]==(s[r][c+1]+s[r+1][c])/2; if((r==0&&c==29)&&(s[r][c]-s[r][c-1]>1)&&(s[r][c]-s[r+1][c]>1)) s[r][c]==(s[r][c-1]+s[r+1][c])/2; if((r==19&&c==0)&&(s[r][c]-s[r-1][c]>1)&&(s[r][c]-s[r][c+1]>1)) s[r][c]==(s[r-1][c]+s[r][c+1])/2; if((r==19&&c==29)&&(s[r][c]-s[r-1][c]>1)&&(s[r][c]-s[r][c-1]>1)) s[r][c]==(s[r-1][c]+s[r][c-1])/2; } else if(r==0&&c!=0&&c!=29) { if(s[r][c]-s[r][c-1]>1&&s[r][c]-s[r][c+1]>1&&s[r][c]-s[r+1][c]>1) s[r][c]=(s[r][c-1]+s[r][c]+1+s[r+1][c])/3; } else if(r==19&&c!=0&&c!=29) { if(s[r][c]-s[r][c-1]>1&&s[r][c]-s[r][c+1]>1&&s[r][c]-s[r-1][c]>1) s[r][c]=(s[r][c-1]+s[r][c]+1+s[r-1][c])/3; } else if(c==0&&r!=0&&r!=19) { if(s[r][c]-s[r-1][c]>1&&s[r][c]-s[r+1][c]>1&&s[r][c]-s[r][c+1]>1) s[r][c]=(s[r-1][c]+s[r+1][c]+1+s[r][c+1])/3; } else if(c==29&&r!=0&&r!=19) { if(s[r][c]-s[r-1][c]>1&&s[r][c]-s[r+1][c]>1&&s[r][c]-s[r][c-1]>1) s[r][c]=(s[r-1][c]+s[r+1][c]+1+s[r][c-1])/3; } else { if((s[r][c]-s[r-1][c]>1)&&(s[r][c]-s[r+1][c]>1)&&(s[r][c]-s[r][c-1]>1)&&(s[r][c]-s[r-1][c+1]>1)) { s[r][c]=(s[r-1][c]+s[r+1][c]+s[r][c-1]+s[r][c+1])/4; } } } }
相关文章推荐
- C ++ Primer Plus 第六版 第十三章编程练习答案
- C++ Primer Plus第六版 第十三章 编程练习答案
- C++ Primer Plus第五版 第十三章 编程练习答案
- c primer plus第十二章编程练习答案(纯手打欢迎指错)
- c++ primer plus(第6版)中文版 第十三章编程练习答案
- c++ primer plus(第6版)中文版 第三章编程练习答案
- C++ primer plus(sixth edition) 编程练习答案(answers for programing exercises)第六章(chapter 6) 5-9
- c++ primer plus 第六版第二章编程练习答案
- C++ primer plus(sixth edition) 编程练习答案(answers for programing exercises)第五章(chapter 5) 6-10
- C++ Primer Plus第六版 第七章 编程练习答案
- C++ Primer Plus第六版 第五章 编程练习答案
- C++ Primer Plus第六版 第三章 编程练习答案
- C++ primer plus(sixth edition) 编程练习答案(answers for programing exercises)第七章(chapter 7) 1-5
- C++ PRIMER PLUS (第六版) 中文版 第七章编程练习答案
- c++ primer plus(第6版)中文版 第十一章编程练习答案
- c++ primer plus(第6版)中文版 第十二章编程练习答案
- c++ primer plus(第6版)中文版 第七章编程练习答案
- c++ primer plus(第6版)中文版 第六章编程练习答案
- c++ primer plus(第6版)中文版 第八章编程练习答案
- c++ primer plus(第6版)中文版 第四章编程练习答案