C语言程序设计(第3版)何钦铭 颜 晖 第12章 文件(汇编)

时间:2019-05-12 16:43:49下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《C语言程序设计(第3版)何钦铭 颜 晖 第12章 文件》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《C语言程序设计(第3版)何钦铭 颜 晖 第12章 文件》。

第一篇:C语言程序设计(第3版)何钦铭 颜 晖 第12章 文件

第12章

文件

【练习12-1】读出例12-1学生成绩文件f12-1.txt内容,输出最高分和最低分及相应的学号和姓名。解答:

#include #include struct student{ long num;char stname[20];int score;};int main(void){ FILE *fp;int i,max,min,j=0,k=0;struct student students[5];

if((fp=fopen(“f12-1.txt”,“r”))==NULL){ printf(“File open error!n”);exit(0);} fscanf(fp,“%ld%s%d”,&students[0].num,students[0].stname,&students[0].score);max=min=students[0].score;for(i=1;i<=4;i++){

fscanf(fp,“%ld%s%d”,&students[i].num,students[i].stname,&students[i].score);if(maxstudents[i].score){ min=students[i].score;k=i;} } printf(“Max score: %d,num:%d,name:%sn”,students[j].score,students[j].num,&students[j].stname);printf(“Min score: %d,num:%d,name:%sn”,students[k].score,students[k].num,&students[k].stname);if(fclose(fp)){ printf(“Can not close the file!n”);exit(0);} return 0;}

【练习12-2】请使用例8-9答电码加密函数对民吗字符串进行加密,改写例12-2。解答:

#include #include #include struct sysuser{ char username[20];char password[8];};void encrypt(char *pwd);int main(void){ FILE *fp;int i;struct sysuser su;if((fp=fopen(“f12-2.txt”,“w”))==NULL){ printf(“File open error!n”);exit(0);} for(i=1;i<=5;i++){ printf(“Enter %dth sysuser(name password):”,i);scanf(“%s%s”,su.username,su.password);encrypt(su.password);fprintf(fp,“%s %sn”,su.username,su.password);} if(fclose(fp)){ printf(“Can not close the file!n”);exit(0);} return 0;} void encrypt(char *pwd){ int i;for(i=0;i

【练习12-3】例12-3中为什么在执行fputc(ch,fp2)前要判断ch的值是否等于EOF?改写例12-3的程序,在复制用户信息文件后,再统计被复制文件中字符的数量。解答:

文件结束符EOF是一个值为-1的常量,读文件时可用来判断从文件中读入的字符是否为EOF来决定循环是否继续。#include #include int main(void){ FILE *fp1,*fp2;char ch;int count=0;

if((fp1=fopen(“f12-2.txt”,“r”))=NULL){ printf(“File open error!n”);exit(0);} if((fp2=fopen(“f12-3.txt”,“w”))==NULL){ printf(“File open error!n”);exit(0);} while(!feof(fp1)){ ch=fgetc(fp1);if(ch!=EOF){ fputc(ch,fp2);count++;} } if(fclose(fp1)){ printf(“Can not close the file!n”);exit(0);} if(fclose(fp2)){ printf(“Can not close the file!n”);exit(0);} printf(“f12-2中字符数量为:%d”,count);

return 0;} 【练习12-4】字母转换并统计行数: 读取一个指定的文本文件,显示在屏幕上,如果有大写字母,则改成小写字母再输出,并根据回车符统计行数。试编写相应程序。解答:

#include #include int main(void){ char ch;int countline=0;FILE *fp;if((fp=fopen(“练习12-4.txt”,“r”))==NULL){ printf(“Not open!”);exit(0);} while(!feof(fp)){ ch=fgetc(fp);if(ch!=EOF)if(ch>='A'&&ch<='Z')printf(“%c”,ch-'A'+'a');else printf(“%c”,ch);if(ch=='n')countline++;} printf(“n”);printf(“file's line is:%d.”,countline+1);if(fclose(fp)){ printf(“Can not close!”);exit(0);} return 0;}

【练习12-5】写字符并验证: 从键盘输入一行字符,写入到文件f3.txt中,并重新读出,最终在屏幕上显示验证。程序输入以读到回车符“n”为结束,读文件时要用EOF来控制循环。试编写相应程序。解答:

#include #include int main(void){ FILE *fp;char ch;if((fp=fopen(“f3.txt”,“w+”))==NULL){ printf(“can not open file!”);exit(0);} printf(“Input the string:n”);ch=getchar();while(ch!='n'){ fputc(ch,fp);ch=getchar();} rewind(fp);while(!feof(fp)){ ch=fgetc(fp);if(ch!=EOF)putchar(ch);} printf(“n”);if(fclose(fp)){ printf(“can not close file!n”);exit(0);} return 0;}

【练习12-6】实数取整写入文件: 文件f1.txt中有若干个实数,请分别读出,将每个实数按四舍五入取整后存入文件f2.txt中。试编写相应程序。解答:

#include #include int main(void){ FILE *fp1,*fp2;double a;if((fp1=fopen(“f1.txt”,“r”))==NULL){ printf(“File open error!n”);exit(0);} if((fp2=fopen(“f2.txt”,“w”))==NULL){ printf(“File open error!n”);exit(0);} while(!feof(fp1)){ fscanf(fp1,“%lf”,&a);fprintf(fp2,“%.0f ”,a);} if(fclose(fp1)){ printf(“Can not close the file!n”);exit(0);} if(fclose(fp2)){ printf(“Can not close the file!n”);exit(0);} return 0;} 【练习12-7】修改例12-6,增加修改资金账户的功能。输入一个记录ID,如果文件中已存在该记录,则输入新的记录信息并更新资金账户文件中相应记录的信息。要求定义和调用函数UpdateLog(),其功能是修改资金账户记录。解答:

#include #include long size;struct LogData{ long logid;char logdate[11];char 1ognote[15];double charge;double balance;};int inputchoice(){ int mychoice;printf(“nEnter your choice: n”);printf(“1-Add a new cash LOG.n2-List All Cash LOG.n”);printf(“3-Query Last Cash LoG.n0-End program.n”);scanf(“%d”,&mychoice);return mychoice;} long getLogcount(FILE *cfptr){ long begin,end,logcount;fseek(cfptr,OL,SEEK_SET);begin=ftell(cfptr);fseek(cfptr,size,SEEK_END);end=ftell(cfptr);logcount=(end-begin)/size-1;return logcount;} /*列出所有收支流水账*/ void ListAllLog(FILE *cfptr){ struct LogData log;fseek(cfptr,OL,SEEK_SET);fread(&log,size,1,cfptr);printf(“logid logdate lognote charge balance n”);while(!feof(cfptr)){

printf(“%6ld%-11s%-15%10.2lf%10.2lfn”,log.logid,log.logdate,log.lognote,log.charge,log.balance);fread(&log,size,1,cfptr);};} /*查询显示最后一条记录*/ void QueryLastLog(FILE *cfptr){ struct LogData log;long logcount;logcount=getlogcount(cfptr);if(1ogcount>0){ fseek(cfptr,size*(logcount-1),SEEK_SET);fread(&log,size,1,cfptr);printf(“The last log is:n”);

printf(“logid:%-6ldnlogdate:%-11snlognote:%-15sn”,log.logid,log.logdate,log.lognote);

printf(“charge:%-10.2lfnbalance:-10.2lfn”,log.charge,1og.balance);} else printf(“no logs in file!n”);} /*添加新记录*/ void AddNewLog(FILE *cfptr){ struct LogData log,lastlog;long logcount;printf(“Input logdate(format: 2006-01-01):”);scanf(“%s”,log.logdate);printf(“Input lognote:”);scanf(“%s”,log.lognote);printf(“Input Charge: Income+and epend-:”);scanf(“%lf”,&log.charge);logcount=getLogcount(cfptr);

if(logcount>0){ fseek(cfptr,size*(logcount-1),SEEK_SET);fread(&lastlog,size,1,cfptr)log.logid=lastlog.1ogid+1;log.balance=log.charge+lastlog.balance;} else{ log.logid=1;log.balance=log.charge;} rewind(cfptr);ogid=last-taraetlastlog;printf(“logid=%ldn”,log.logid);fwirte(&log,sizeof(struct LogData),1,cfptr);} /*修改资金账户*/ void UpdateLog(FILE *cfptr){ FILE *fpout;struct LogData user;char date[11];char note[15];double charge;double balance;int choice,ID;cfptr=fileopen(“r”);if((fpout=fopen(“cash.dat”,“w”))==NULL){ printf(“can not open the file!n”);exit(0);} printf(“Enter LogID:”);scanf(“%d”,&ID);while(!feof(cfptr)){ fread(&user,sizeof(struct LogData),1,cfptr);if(strcmp(user.logid,ID)==0){ printf(“请输入修改信息:n”);printf(“Date:”);scanf(“%s”,date);strcpy(user.logdate,date);printf(“Note:”);scanf(“%s”,note);strcpy(user.lognote,note);printf(“Charge:”);user.charge=charge;printf(“Balance:”);scanf(“%s”,&balance);user.balance=balance;fwrite(&user,sizeof(struct LogData),1,fpout);} else fwrite(&user,sizeof(struct LogData),1,fpout);} if(fclose(cfptr)){ printf(“can not close file!n”);exit(0);} if(fclose(fpout)){ printf(“can not close file!n”);exit(0);} unlink(“cashbox.dat”);//remove(“cashbox.dat”);都是删除文件的函数 rename(“cash.dat.dat”,“cashbox.dat”);} /*打开文件*/ FILE *openfile(char *openmode){ FILE *fp;if((fp=fopen(“cashbox.dat”,openmode))==NULL){ printf(“can not open file cashbox.dat!n”);exit(0);} return(fp);} int main(void){ FILE *fp;int choice;size=sizeof(struct LogData);while((choice=inputchoice())!=0){ switch(choice){ case 1: fp=openfile(“ab+”);AddNewLog(fp);break;/*列出所有的收入支出情况*/ case 2: fp=openfile(“rb”);ListAllLog(fp);break;/*查询最后记录及余额*/ case 3: fp=openfile(“rb”);QueryLastLog(fp);break;case 4: fp=openfile(“rb”);UpdateLog(fp);break;default: printf(“Input Error.”);break;} } if(fclose(fp)){ printf(“Can not close the file!n”);exit(0);} return 0;}习题12

一、选择题.以下语句将输出____B_____。#include printf(“%d %d %d”,NULL,‘',EOF);A.0 0 1 B.0 0-1 C.NULL EOF D.1 0 EOF

2.如果二进制文件a.dat 已经存在,现在要写入全新数据,应以____B____方式打开。

A.“w” B.“wb” C.“w+” D.“wb+“

3.定义”FILE *fp;”,则文件指针fp 指向的是_____D_____。

A.文件在磁盘上的读写位置 B文件在级冲区上的读写位置 C.整个磁盘文件 D.文件类型结构

4.缓冲文件系统的文件缓冲区位于____C______。A.磁盘缓冲区中 B.磁盘文件中 C.内存数据区中 D.程序文件中

5.使文件指针重新定位到文件读写的首地址的函数是_____C_____。A.ftell()B.fseek()C.rewind()D.ferror()

二、填空题

1.函数fopen()的返回值是_指向文件缓冲区的首地址的文件结构类型指针_。2.文件的三大特征是__名称__、__大小__和__类型__。

3.缓冲文件系统与非缓冲文件系统的不同点在于__系统是否为文件自动分配一块文件缓冲区(内存单元)__。

4.只能向指定文件写入一个字符的函数是_____fputc()函数______。5.判断文件指针是否已经到了文件尾部的函数是___feof()函数___。6.阅读程序,以下程序完成的功能是__文件infile内容复制到文件__。#include int main(void){ char infile [10],outfile [10];FILE * fpa,* fpb;gets(infile);gets(outfile);fpa=fopen(infile,“r”);fpb=fopen(outfile,“ w”);while(!feof(fpa))fputc(fgetc(fpa),fpb);fclose(fpa);fclose(fpb);return 0;}

三、程序设计题

1.统计文本文件中各类字符个数: 分别统计一个文本文件中字母、数字及其他字符的个数。试编写相应程序。解答:

#include #include int main(void){ FILE *fp;char ch;int letter=0,digiter=0,other=0;

if((fp=fopen(“12-3.1.txt”,“r”))==NULL){ printf(“File open error!n”);exit(0);} while((ch=fgetc(fp))!=EOF){ if(ch>='A'&&ch<='Z'||ch>='a'&&ch<='z')letter++;else if(ch>='0'&&ch<='9')digiter++;else other++;} printf(“letter=%d,digiter=%d,other=%d”,letter,digiter,other);if(fclose(fp)){ printf(“Can not close the file!n”);exit(0);}

return 0;}

2.将实数写入文件: 从键盘输人若干实数(以特殊数值-1结束),分别写到一个文本文件中。试编写相应程序。解答:

#include #include int main(void){ FILE *fp;int number;

if((fp=fopen(“12-3.2.txt”,“w”))==NULL){ printf(“can not open file!n”);exit(0);} printf(“Input number:n”);scanf(“%d”,&number);while(number!=-1){ fprintf(fp,“%d”,number);scanf(“%d”,&number);} if(fclose(fp)){ printf(“Can not close the file!n”);exit(0);} return 0;}

3.比较两个文本文件是否相等: 比较两个文本文件的内容是否相同,并输出两个文件中第一次出现不同字符内容的行号及列值。试编写相应程序。解答:

#include #include int main(void){ FILE *fp1,*fp2;int i=1,j=1;char ch1,ch2;

if((fp1=fopen(“12-3.3.1.txt”,“r”))==NULL){ printf(“can not open file!n”);exit(0);} if((fp2=fopen(“12-3.3.2.txt”,“r”))==NULL){ printf(“can not open file!n”);exit(0);} ch1=fgetc(fp1);ch2=fgetc(fp2);while(ch1!=EOF&&ch2!=EOF){ if(ch1!=ch2)break;else if(ch1!='n'){ j++;ch1=fgetc(fp1);ch2=fgetc(fp2);} else{ i++;j=1;ch1=fgetc(fp1);ch2=fgetc(fp2);} } printf(“首次不同的字符在第%d行、第%d列。n”,i,j);if(fclose(fp1)){ printf(“can not close file!n”);exit(0);} if(fclose(fp2)){ printf(“can not close file!n”);exit(0);} }

4.将文件中的数据求和并写入文本文件尾: 文件Int_Data.dat 中存放了若干整数,将文件中所有数据相加,并把累加和写入该文件的最后。试编写相应程序。解答:

#include #include int main(void){ FILE *fp;int x,sum=0;

if((fp=fopen(“Int_Date.dat”,“ab+”))==NULL){ printf(“can not open file!”);exit(0);} while(!feof(fp)){ fscanf(fp,“%d”,&x);sum+=x;} fprintf(fp,“ %d”,sum);if(fclose(fp)){ printf(“can not close the file!n”);exit(0);}

return 0;}

5.输出含for的行: 将文本文件test.txt 中所有包含字符串“for”的行输出。试编写相应程序。解答:

#include #include #include char s[999];int main(void){ FILE* fp;int i;if((fp=fopen(“test.txt”,“r”))==NULL){ printf(“can not open file!n”);exit(0);} while(!feof(fp)){ fgets(s,999,fp);if(strlen(s)>3){ for(i=0;i

6.删除文件中的注释: 将C语言源程序(hello.c)文件中的所有注释去掉后存入另一个文件(new_hello.c)。试编写相应程序。解答:

#include #include int main(void){ FILE *fp1,*fp2;char ch,ch1,ch2,s[99];

if((fp1=fopen(“hello.c”,“r”))==NULL){ printf(“can not open file!n”);exit(0);} if((fp2=fopen(“new_hello.c”,“w”))==NULL){ printf(“can not open file!n”);exit(0);} while(!feof(fp1)){ ch=fgetc(fp1);if(ch=='/'){ if((ch1=fgetc(fp1))=='*')while(fgetc(fp1)!='*'&&(ch1=fgetc(fp1))!='/')fseek(fp1,-sizeof(ch1),1);else if(ch1=='/'){ ch='';for(;ch1!='n';ch1=fgetc(fp1))ch1='';} } else if(ch!=EOF)fputc(ch,fp2);} if(fclose(fp2)){ printf(“can not close file!n”);exit(0);}

return 0;}

7.(选做)账户余额管理: 创建一个随机文件,用来存储银行账户和余额信息,程序要求能够查询某个账户的余额,当客户发生交易额时(正表示存入,负表示取出)能够更新余额。账户信息包括账号、账号名和余额三个数据项。试编写相应程序。

文件部分内容如下: AcctNo AcctName Balance 1 zhangsan 1 000.00 2 lisi 1 300.00 3 wangwu-100.00

……

解答:

#include #include #include long size;struct account{ char no[10];char acctname[50];double balance;};FILE *openfile(char *openmode){ FILE *fp;if((fp=fopen(“accout.dat”,openmode))==NULL){ printf(“Can not open the file!”);exit(0);} return fp;} double userbalance(FILE *fp,char *name);void pay(FILE *fp,char *name,double count);int main(){ FILE *fp;int choice;char name[50];double balance;double count;

printf(“请输入选择类型:n”);printf(“1.查账户余额n”);printf(“2.账户交易n”);printf(“退出按exitn”);printf(“选择类型:”);scanf(“%d”,&choice);switch(choice){ case 1: printf(“输入名字”);scanf(“%s”,name);fp=openfile(“r+”);balance=userbalance(fp,name);printf(“%.2f”,balance);break;case 2: printf(“输入名字”);scanf(“%s”,name);fp=openfile(“r+”);printf(“输入交易金额”);scanf(“%lf”,&count);pay(fp,name,count);break;} default: exit(0);break;}

return 0;} double userbalance(FILE *fp,char *name){ struct account user;double balance;

rewind(fp);while(!feof(fp)){ fscanf(fp,“%s %s %lf”,user.no,user.acctname,&user.balance);if(strcmp(user.acctname,name)==0){ balance=user.balance;break;} } return balance;} void pay(FILE *fp,char *name,double count){

FILE *fpout;struct account user;double balance;balance=userbalance(fp,name);balance=balance+count;rewind(fp);fpout=fopen(“temp.dat”,“w”);while(!feof(fp)){ fscanf(fp,“%s %s %lf”,user.no,user.acctname,&user.balance);if(strcmp(user.acctname,name)==0){ user.balance=balance;

fprintf(fpout,“%s %s %lfn”,user.no,user.acctname,user.balance);} else

fprintf(fpout,“%s %s %lfn”,user.no,user.acctname,user.balance);} if(fclose(fp)){ printf(“can not close file!n”);exit(0);} if(fclose(fpout)){ printf(“can not close file!n”);exit(0);} unlink(“accout.dat”);//remove(“accout.dat”);都是删除文件的函数 rename(“temp.dat”,“accout.dat”);}

第二篇:第1章 程序设计和C语言

第1章 程序设计和C语言

C语言版本很多,标准C、ANSI C、微软的C。这些C彼此之间会有小的区别。我们上课以微软的C为主。

编程环境:Visual C++ 6.0

1.1 什么是计算机程序

2.5 结构化程序设计方法

在60年代之间,编程很混乱,特别地,在许多的编程语言中有大量的Goto语句。

结构化程序设计强调程序设计风格、程序结构规范化,提倡清晰的结构。具体地说:

1)自顶向下;

2)逐步细化;

3)模块化设计;

4)结构化编码;

5)适当注释

更多的结构化程序设计思想在《软件工程》课程中介绍。但是,现在又有许多的新的思想,如面向对象程序设计思想等。

第三篇:C语言程序设计 ( 第3次 )

第3次作业

一、程序阅读题(本大题共50分,共 5 小题,每小题 10 分)1.#include #define F(x)x*x int main(){ double n;n=F(3.5+5)/F(3);printf(“n=%.2lfn”,n);return 0;}

2.(写出下面程序执行的结果)#include int main(){ int x,b1,b2,b3;x=300;b3=x/100;b2=(x-b3)/100;b1=x%10;x=b1+b2+b3;printf(“%dn”,x);return 0;} 3.写出下面程序执行的结果)#include int main(){

char c,str[]=“SSSWILTCH22223WALL”;int k;for(k=2;(c=str[k])!='';k++){ switch(c){ case 'A': putchar('a');continue;case '2': break;case 2: while((c=str[k++])!='2'&&c!='');case 'T': putchar('*');case 'L': continue;default: putchar(c);continue;} putchar('#');} printf(“n”);return 0;}

4.(写出下面程序执行的结果)#include int main(){ char c1='a',c2='b',c3='c',c4='101',c5='x4a';printf(“a%c b%ctc%ctabcn”,c1,c2,c3);printf(“tb%c %cn”,c4,c5);

return 0;} 5.(写出下面程序执行的结果)#include int a,b,c,d;int main(){ void p(int a,int b);printf(“%d,%d,%d,%dn”,a,b,c,d);p(a,b);printf(“%d,%d,%d,%dn”,a,b,c,d);return 0;} void p(int a,int b){ static int c;a++,b++;c-=1,d+=1;if(a<3){ p(a,b);printf(“%d,%d,%d,%dn”,a,b,c,d);} }

二、程序设计题(本大题共40分,共 5 小题,每小题 8 分)

1.编程序实现功能:将一个10行5列数组a每一行中最大值取出存放到一个一维数组b中,输出数组a和数组b的值,要求所有数组操作通过两种以上的指针方式表示。

2.编写程序实现功能:分别统计键盘输入流上接收字符串中每种数字字符的个数,要求使用数组表示所有计数器集合,并且在数组的下标表达式中使用枚举型数据。

3.编程序实现功能:求出在1~1000之间的整数中能同时被3、5、7整除的数,输出满足条件的数以及它们的和。

4.编程序实现华氏温度到摄氏温度的转换,其转换公式是:,式中f表示华氏温度,c表示摄氏温度。5.编写一个递归函数计算Hermite多项式,Hn(x)定义为:

三、填空题(本大题共10分,共 5 小题,每小题 2 分)1.下面程序的功能是:求两个实数之和的平方根,请选择合适选项填空完成程序。

#include #include < > int main(){ double a,b;scanf(“%lf,%lf”,&a,&b);

printf(“%lfn”,sqrt(a+b));return 0;} A string.h B stdlib.h C math.h D mathematics.h 2.下面程序的功能是:挑选输入流中的数字字符按序组成整数(例如输入流为ab3c5g8,获取的整数为358), 请选择合适选项填空完成程序。#include int main(){ char c;int n=0;while((c=getchar())!='n')if()n=n*10+c-'0';printf(“n=%dn”,n);return 0;} A c>='0'&&c<='9' B c>'0'&&c<'9' C c>=0&&c<=9

D c>'0'||c<'9'

3.下面程序的功能是:求从键盘输入的3个整数之和。请选择合适选项填空完成程序。

#include int add(①);int main(){ int a,b,c,sum;printf(“?a,b,c: ”);scanf(“%d,%d,%d”,&a,&b,&c);sum=add(②);printf(“sum=%dn”,sum);return 0;} int add(int a,int b){ return a+b;} A add(a,b),c B a,b,c C int a;int b D int,int 4.下面程序的功能是:将从键盘上输入的一个字符串数据写入到指定的文件中,然后将其读出进行校验,正确输出OK,错误输出ERROR。请选择合适选项填空完成程序。

#include #include int main(){ FILE *fpt;char str[100],str1[100]=“",fn[20];printf(”Input the filename:“);gets(fn);

if((fpt= ①)==NULL){ printf(”Can't open file %sn“,fn);return-1;} gets(str);fwrite(str,sizeof(char),strlen(str),fpt);fseek(②);fread(str1,sizeof(char),strlen(str),fpt);if(strcmp(str,str1)==0)printf(”OKn“);else printf(”ERRORn“);puts(str1);fclose(fpt);return 0;} A fopen(fn,”w+“)B fpt,-1*strlen(str),SEEK_CUR C fpt,-1*strlen(str),SEEK_END D fopen(fn,”r+“))5.下面程序的功能是:取出变量a从右端开始的4~7位,存放到变量d中并输出。请选择合适选项填空完成程序。

#include int main(){ unsigned short a,b,c,d;a=0x29;b=a>>4;c= ①;d=b&c;printf(”%xn%xn“,a,d);return 0;} A(~0<<4)B ~(0<<4)C ~(~0>>4)D ~(~0<<4)

答案:

一、程序阅读题(50分,共 5 题,每小题 10 分)

1.参考答案: n=24.00

解题方案:

评分标准:

2.参考答案: 5 解题方案:

评分标准:

3.参考答案: SWI*CH#*Wa

解题方案:

评分标准:

4.参考答案:

aa bb cc abc A J

解题方案:

评分标准:

5.参考答案: 0,0,0,0 2,2,-3,3 1,1,-3,3 0,0,0,3

解题方案:

评分标准:

二、程序设计题(40分,共 5 题,每小题 8 分)

1.参考答案: #include #include #include int main(){ int a[10][5],b[10],i,j;srand(time(NULL));for(i=0;i<10;i++)for(j=0;j<5;j++)*(a[i]+j)=rand()%100;for(i=0;i<10;i++){ *(b+i)=a[i][0];for(j=0;j<5;j++)if(*(b+i)<*(*(a+i)+j))*(b+i)=*(*(a+i)+j);} printf(”tarray A:tarray B:n“);for(i=0;i<10;i++){

for(j=0;j<5;j++)printf(”%4d“,a[i][j]);printf(”t%4dn“,b[i]);} return 0;}

解题方案:

评分标准:

2.参考答案: #include #include #define MAX 1000 enum dig{zero,one,two,three,four,five,six,seven,eight,nine};int main(){ int getline(char *s,int lim);char str[MAX],*p;int counter[10]={0},i;enum dig nu=zero;gets(str);p=str;while(*p)

{ if(*p>='0'&&*p<='9')counter[nu+*p-'0']++;p++;} for(i=0;i<10;i++)printf(”%4d“,counter[i]);printf(”n“);return 0;}

解题方案:

评分标准:

3.参考答案: #include int main(){ int n,sum=0;for(n=1;n<=1000;n++)if(n%3==0&&n%5==0&&n%7==0){ printf(”%5d“,n);sum+=n;}

printf(”nsum=%dn“,sum);return 0;}

解题方案:

评分标准:

4.参考答案:

#include int main(){ double c,f;printf(”请输入华氏温度数:“);scanf(”%lf“,&f);c=5.0/9*(f-32);printf(”摄氏温度是:%lfn“,c);return 0;}

解题方案:

评分标准:

5.参考答案: #include int main(){ double H(int n,double x);int n;double x;printf(”Input x and n:“);

scanf(”%lf,%d“,&x,&n);printf(”H(%d,%lf)=%lfn",n,x,H(n,x));return 0;} double H(int n,double x){ if(n==0)return 1;else if(n==1)return 2*x;else return 2*x*H(n-1,x)-2*(n-1)*H(n-2,x);}

解题方案:

评分标准:

三、填空题(10分,共 5 题,每小题 2 分)

1.参考答案: C 解题方案:

评分标准:

2.参考答案: A 解题方案:

评分标准:

3.参考答案: ① D ② A

解题方案:

评分标准:

4.参考答案: ① A ② B

解题方案:

评分标准:

5.参考答案: D 解题方案:

评分标准:

第四篇:高级语言程序设计A第2次作业

1.以下说法中错误的是。

(B)a/=b+c;这个式子和a=a/b+c;等价

2.16、若有如下说明

int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;

则数值为6的元素的表达式是

(B)*(p+5)

3.下面哪条语句是错误的(B)int a=b=c=1;

4.已知实型变量a存贮的是一个0~1之间的实数,将a以两位小数百分比形式输出(如:a=0.347592,则输出为34.75%)正确的打印语句是

(A)printf(“%.2f%%”,a*100);

5.定义C函数时,不给出返回值类型,则默认的返回值类型是

(C)int

6.C语言存贮字符串时,用特殊字符表示字符串结束

(D)’’

7.有以下程序段

int k=0;

while(k=1)k++;

则while 循环执行的次数是。

(A)无限次

8.对于for循环语句:for(x=0,y=0;(y=3)&&(x<4);x++)y++;,正确的是。

(C)执行4次

9.有定义struct { int a[5];} b;则正确表达成员数组a的最后一个元素地址的是____。

(C)b.a+4

10.以只写方式打开一个二进制文件,应选择的文件操作方式是____。

(D)“wb”

第五篇:《c语言程序设计新视角》第八章文件小结

《c语言程序设计新视角》第八章 文件小结 文件存数据时间长久,二进制与文本形式自由。程序操纵它三个步骤: 打开、读写、关闭不要遗漏。注意路径与名称打开不愁; 读写有系列函数功能足够; 记得关闭在操作之后。

下载C语言程序设计(第3版)何钦铭 颜 晖 第12章 文件(汇编)word格式文档
下载C语言程序设计(第3版)何钦铭 颜 晖 第12章 文件(汇编).doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐