05年南开上机100题(编辑修改稿)内容摘要:

return 0。 } void WriteDat(void) { FILE *fp。 int i。 fp=fopen(,w)。 for(i=0。 imaxline。 i++){ printf(%s\n,xx[i])。 fprintf(fp,%s\n,xx[i])。 } fclose(fp)。 } ★☆ 题目 10(替换字符题 ) 函数 ReadDat()实现从文件 中读取一篇英文文章存入到字符串数组 xx 中,请编制函数 ConvertCharA(), 其函数的功能是:以行为单位把字符串中的所有小写字母改写成该字母的下一个字母,如果是字母 z,则改写成字母 a。 大写字母仍为大写字母,小写字母仍为小写字母,其他字符不变。 把已处理的字符串仍按行重新存入字符串数组 xx 中,最后调用函数 writeDat()把结果 xx输出到文件。 例:原文: 结果: 原始数据文件存放的格式是:每行的宽度均小于 80个字符,含标点符号和空格。 部分源程序存在文件。 请勿改动主函数 main()、读数据函数 ReadDat()和输出数据函数 writeDat()的内容。 include include include char xx[50][80]。 int maxline=0。 /*文章的总行数 */ int ReadDat(void)。 void WriteDat(void)。 void ConvertCharA(void) { int i,j。 for(i=0。 imaxline。 i++) { for(j=0。 jstrlen(xx[i])。 j++) if(xx[i][j]==39。 z39。 ) xx[i][j]=39。 a39。 else if(xx[i][j]=39。 a39。 amp。 amp。 xx[i][j]=39。 y39。 ) xx[i][j]+=1。 } } void main() { clrscr()。 if(ReadDat()){ printf(数据文件。 \n\007)。 return。 } ConvertCharA()。 WriteDat()。 } int ReadDat(void) { FILE *fp。 int i=0。 char *p。 if((fp=fopen(,r))==NULL) return 1。 while(fgets(xx[i],80,fp)!=NULL){ p=strchr(xx[i],39。 \n39。 )。 if(p)*p=0。 i++。 } maxline=i。 fclose(fp)。 return 0。 } void WriteDat(void) { FILE *fp。 int i。 clrscr()。 fp=fopen(,w)。 for(i=0。 imaxline。 i++){ printf(%s\n,xx[i])。 fprintf(fp,%s\n,xx[i])。 } fclose(fp)。 } ☆ 题目 11(字符串字母移位题 ) 程序 :把 s 字符串中的所有字母改写成该字母的下一个字母,字母 z改写成字母 a。 要求大写字母仍为大写字母,小写字母仍为小写字母,其它字符不做改变。 请考生编写函数 chg(char *s)实现程序要求,最后调用函数 readwriteDAT( )把结果输出到文件。 例如: s 字符串中原有的内容为: ,则调用该函数后,结果为:。 注意:部分源程序存在文件 文件中。 请勿改 动主函数 main( )和输出数据函数 readwriteDAT()的内容。 include include include include define N 81 void readwriteDAT()。 void chg(char *s) {int I。 for(I=0。 Istrlen(s)。 I++) if(s[i]==39。 z39。 ||s[i]==39。 Z39。 ) s[i]=25。 else if(s[i]=39。 a39。 amp。 amp。 s[i]=39。 y39。 ||s[i] =39。 A39。 amp。 amp。 s[i]=39。 Y39。 ) s[i]+=1。 } main( ) { char a[N]。 clrscr()。 printf(Enter a string : )。 gets(a)。 printf(The original string is : )。 puts(a)。 chg(a)。 printf(The string after modified : )。 puts (a)。 readwriteDAT()。 } void readwriteDAT() { int i。 char a[N]。 FILE *rf, *wf。 rf = fopen(, r)。 wf = fopen(, w)。 for(i = 0。 i 50。 i++) { fscanf(rf, %s, a)。 chg(a)。 fprintf(wf, %s\n, a)。 } fclose(rf)。 fclose(wf)。 } ★☆ 题目 12(结构体运算题题 ) 已知在文件 中存有 100个产品销售记录,每个产品销售记录由产品代码 dm(字符型 4位 ),产品名称 mc(字符型 10 位 ),单价 dj(整型 ),数量 sl(整型 ),金额 je(长整型 )五部分组成。 其中:金额 =单价 *数量计算得出。 函数 ReadDat()是读取这 100个销售记录并存入结构数组 sell中。 请编制函数 SortDat(),其功能要求: 按产品名称从小到大进行排列,若产品名称相等,则按金额从小到大进行排列,最终排列结果仍存入结构数组 sell中,最后调用函数 WriteDat()把结果输出到文件。 部分源程序存在文件。 请勿改动主函数 main()、读数据函数 ReadDat()和输出数据函数 WriteDat()的内容。 include include include include include define MAX 100 typedef struct{ char dm[5]。 /*产品代码 */ char mc[11]。 /*产品名称 */ int dj。 /*单价 */ int sl。 /*数量 */ long je。 /*金额 */ }PRO。 PRO sell[MAX]。 void ReadDat()。 void WriteDat()。 void SortDat() {int i,j。 PRO xy。 for(i=0。 i99。 i++) for(j=i+1。 j100。 j++) if(strcmp(sell[i].mc,sell[j].mc)0||strcmp(sell[i].mc,sell[j].mc)==0amp。 amp。 sell[i].jesell[j].je) {xy=sell[i]。 sell[i]=sell[j]。 sell[j]=xy。 } } void main() { memset(sell,0,sizeof(sell))。 ReadDat()。 SortDat()。 WriteDat()。 } void ReadDat() { FILE *fp。 char str[80],ch[11]。 int i。 fp=fopen(,r)。 for(i=0。 i100。 i++){ fgets(str,80,fp)。 memcpy(sell[i].dm,str,4)。 memcpy(sell[i].mc,str+4,10)。 memcpy(ch,str+14,4)。 ch[4]=0。 sell[i].dj=atoi(ch)。 memcpy(ch,str+18,5)。 ch[5]=0。 sell[i].sl=atoi(ch)。 sell[i].je=(long)sell[i].dj*sell[i].sl。 } fclose(fp)。 } void WriteDat() { FILE *fp。 int i。 fp=fopen(,w)。 for(i=0。 i100。 i++){ printf(%s %s %4d %5d %5d\n,sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je)。 fprintf(fp,%s %s %4d %5d %5d\n, sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je)。 } fclose(fp)。 } 题目 13(结构体运算题) 已知在文件 中存有 100个产品销售记录,每个产品销售记录由产品代码 dm(字符型 4位 ),产品名称 mc(字符型 10 位 ),单价 dj(整型 ),数量 sl(整型 ),金额 je(长整型 )五部分组成。 其中:金额 =单价 *数量计算得出。 函数 ReadDat()是读取这 100个销售记录并存入结构数组 sell中。 请编制函数 SortDat(),其功能 要求:按产品代码从小到大进行排列,若产品代码相等,则按金额从大到小进行排列,最终排列结果仍存入结构数组 sell 中,最后调用函数 WriteDat()把结果 输出到文件 中。 部分源程序存在文件。 请勿改动主函数 main()、读数据函数 ReadDat()和输出数据函数 WriteDat()的内容。 include include include include include define MAX 100 typedef struct{ char dm[5]。 /*产品代码 */ char mc[11]。 /*产品名称 */ int dj。 /*单价 */ int sl。 /*数量 */ long je。 /*金额 */ }PRO。 PRO sell[MAX]。 void ReadDat()。 void WriteDat()。 void SortDat() {int i,j。 PRO xy。 for(i=0。 i99。 i++) for(j=i+1。 j100。 j++) if(strcmp(sell[i].dm,sell[j].dm)0||strcmp(sell[i].dm,sell[j].dm)==0amp。 amp。 sell[i].jesell[j].je) {xy=sell[i]。 sell[i]=sell[j]。 sell[j]=xy。 } } void main() { memset(sell,0,sizeof(sell))。 ReadDat()。 SortDat()。 WriteDat()。 } void ReadDat() { FILE *fp。 char str[80],ch[11]。 int i。 fp=fopen(,r)。 for(i=0。 i100。 i++){ fgets(str,80,fp)。 memcpy(sell[i].dm,str,4)。 memcpy(sell[i].mc,str+4,10)。 memcpy(ch,str+14,4)。 ch[4]=0。 sell[i].dj=atoi(ch)。 memcpy(ch,str+18,5)。 ch[5]=0。 sell[i].sl=atoi(ch)。 sell[i].je=(long)sell[i].dj*sell[i].sl。 } fclose(fp)。 } void WriteDat() { FILE *fp。 int i。 fp=fopen(,w)。 for(i=0。 i100。 i++){ printf(%s %s %4d %5d %5d\n, sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je)。 fprintf(fp,%s %s %4d %5d %5d\n, sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je)。 } fclose(fp)。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。