计算机等级考试(NCRE)三级上机-南开100题及答案_第1页
计算机等级考试(NCRE)三级上机-南开100题及答案_第2页
计算机等级考试(NCRE)三级上机-南开100题及答案_第3页
计算机等级考试(NCRE)三级上机-南开100题及答案_第4页
计算机等级考试(NCRE)三级上机-南开100题及答案_第5页
已阅读5页,还剩144页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

南开100题南开习题集类型:一、替换字符。(1、3、5、7、9、27、30、73、79、91、93、95、97、99)二、字符串左右排序和比较。(2、4、6、12、26、29、71、72、74、84、90、96、98、100)三、正整数排序求平均值(包括将数拆散、求最大最小值)。(8、31、33、35、37、39、42、 44、46、47、48、49、50、51、52、53、54、56、58、60、61、63、65、67、69、92、94,)四、产品五个因素的比较排列,是结构体操作问题。(11、13.15,17,19,81,83,85.87,89)五、素数。(14、22、28、51、80)六、数字排序。(也、18,)七、其他数学计算。(及、名、36>43,55,57,59>64,66.78,86>88)八、数字或字符移位后的计算。(21、23、41、45、77)九、学生成绩,结构体问题。(2、76)十、字符串(单词)的倒置和删除。(羽、75_)H-一、选票问题。(照、68,70,82)十二、出圈问题。(34)十三、进制转换。(弱、40,62).3,6.810.3,6.8101315802123252791333题,4题.5题.6题.7题,8题.9题.10题11题12题13题14题15题

16题17题18题1916题17题18题19题20题21题22题23题24题25题26题27题28题29题30题31题32题33题34题35题36题37题38题39题40题41题42题43题44题45题46题47题48题49题50题51题52题53题54题55题56题57题58题59题60题61题 3 6 3 8 4 0 4 2 4 4 4 5 4 7 4 8 5 0 5 2 5 3 5 5 5 7 5 9 6 0 6 1 6 3 6 5 6 6 6 8 7 0 7 1 7 3 7 5 7 6 7 8 8 0 8 1 8 2 8 4 8 6 8 7 8 9 9 0 9 2 9 3 9 4 9 5 9 7 9 8 9 9 1 0 0 1 0 2 1 0 3 1 0 5

62题 63题 64题 65题 66题 67题 68题 69题 70题 71题 72题 73题 74题 75题 76题 77题 78题 79题 80题 81题 82题 83题 84题 85题 86题 87题 88题 89题 90题 91题 92题 93题 94题 95题 96题 97题 98题 99题 10610811011211106108110112113115116118119121123124126127129131132133135136138140141143145146148149151153155157158160162164166168169函数ReadDatO实现从文件ENG.IN中读取一篇英文文章,存入到字符串数组xx中;请编制函数encryptCharO,按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS10.DAT中。替代关系:f(p)=p*llmod256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果原字符的ASCII值是偶数或计算后f(p)值小于等于32,则该字符不变,否则将f(p)所对应的字符进行替代。部分源程序已给出,原始数据文件存放的格式是:每行的宽度均小于80个字符。请勿改动主函数main。、读数据函数ReadDat()和输出数据函数WriteDat()的内容。#include<stdio.h>#include<string.h>#include<conio.h>#include<ctype.h>unsignedcharxx[50][80];intmaxiine=0;/*文章的总行数*/intReadDat(void)voidWriteDat(void)voidencryptChar()voidmain()(clrscr();if(ReadDat()){printf("数据文件ENG.IN不能打开!\n\007〃);return;)encryptChar();WriteDat();)intReadDat(void){FILE*fp;inti=0;unsignedchar*p;if((fp=fopen("eng・in",〃r"))二二NULL)return1;while(fgets(xx[i],80,fp)!=NULL){p二strchr(xx[i],'\n');if(p)*p=0;i++;)maxline=i;fclose(fp);return0;)voidWriteDat(void){FILE注:在ReadDatO函数中山于fgets()函数读入数据时没有读入字符串结束符'\0',因而用while。循环在xx数组每一行未尾将换行符'\n'替换成结束符'\0'。编写的函数如下:该函数的基本算法是——让字符指针pf指向每一行的开头然后逐一往后移动,在移动过程中按要求进行转换。*pf%2=0用于判断注:在ReadDatO函数中山于fgets()函数读入数据时没有读入字符串结束符'\0',因而用while。循环在xx数组每一行未尾将换行符'\n'替换成结束符'\0'。编写的函数如下:该函数的基本算法是——让字符指针pf指向每一行的开头然后逐一往后移动,在移动过程中按要求进行转换。*pf%2=0用于判断是否为偶数。if()条件语句用于控制不替代字符。解法1:voidencryptChar(){inti;char*pf;for(i=0;i<maxline;i++) /*行循环*/{pf=xx[i]; /*每行字符个数*/while(*pf!=0){if(*pf%2==0||*pf*ll%256<32){pf++;continue;}pf=*pf*ll%256;pf++;解法2:voidencryptChar(){inti,j,t;for(i=0;i<maxline;i++)(for(j=0;j<strlen(xx[i]);j++)t=xx[i][j]*ll%256;if(t<=32||xx[i][j]%2=0)continue;xx[i][j]=t;函数ReadDatO实现从文件in.dat中读取20行数据存放到字符串数组xx中(第行字符串长度均小于80)。请编制函数jsSortO,其函数的功能是:以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDatO把结果xx输出到文件out.dat中。条件:从字符串中间一分为二,左边部分按字符的ASCII值升序排序,排序后左边部分与右边部分进行交换。如果原字符串长度为奇数,则最中间的字符不参加处理,字符仍放在原位置上。例如:位置012345678源字符串dcbahgfe432198765则处理后字符串hgfeabcd876591234部分源程序已给出。请勿改动主函数main。、读函数ReadDat()和写函数WriteDat()的内容。#include<stdio.h>#include<string.h>#include<conio.h>charxx[20][80];voidjsSort(){)voidmain()|readDat();jsSortO;writeDat();)readDat()FILE*in;inti=0;char*p;

in=iopen(in.dat,r);while(i<20&&fgets(xx[i],80,in)!=NULL){p=strchr(xx[i],1\n*);if(p)*p=0;i++;}fclose(in);)writeDat()(FILE*out();inti;clrscr();out=fopen("out・dat","w");for(i=0;i<20;i++){printf(\"%s\n",xx[i]);fprintf(out,xx[i]);}fclose(out);注:先采用冒泡法对左边部分进行升序排序,然后将排序后的左半与右半按对应位进行调换。voidjsSort()inti,strl,half,j,k;charch;/*行循环*//*行循环*//*每行长度*/{strl=strlen(xx[i]);half=strl/2;for(j=0;j<half-l;j++) /*每行的第j个位置*/for(k=j+l;k<half;k++)if(xx[i][j]>xx[i][k])xx[i][j]=xx⑴[k];{ch=xx[i][j];/*{ch=xx[i][j];/*每次将最小数赋给xx[i][j]*/xx[i][k]=ch;)for(j=half-l,k=strl-l;j>=0;j—,k-){ch=xx[i][jj;xx[i][j]=xx[i][k];xx[i][k]=ch;voidjsSort()(inti,j,k,strl:charch;for(i=0;i<20;i++)(strl=strlen(xx[i]);for(j=0;j<strl/2;j++)for(k=j+l;k<strl/2;k++)if(xx[i][j]>xx[i][k])(ch=xx[i][j];xx[i][j]=xx[i][k];xx[i][k]=ch;)for(j=0;j<strl/2;j++)ch=xx[i][j];xx[i][j]=xx[i][(strl+l)/2+j];xx[i][(strl+l)/2+j]=ch;)}}3题函数ReadDatO实现从文件ENG.IN中读取一篇英文文章,存入到字符串数组xx中;清编制函数encryptCharO,按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS8.DAT中。替代关系:f(p)=p*llmod256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果原字符是小写字母或计算后f(p)值小于等于32,则该字符不变,否则将f(p)所对应的字符进行替代。部分源程序己给出。原始数据文件存放的格式是:每行的宽度均小于80个字符。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。#include<stdio.h>#include<string.h>#include<conio.h>#include<ctype.h>unsignedcharxx[50][80];intmaxiine=0;/*文章的总行数*/intReadDat(void)voidWriteDat(void)voidencryptChar()()voidmain(){clrscr();if(ReadDat0)(printf("数据文件ENG.IN不能打开!\n\007*);return;)encryptChar();WriteDatO;}intReadDat(void){FILE*fp;inti=0;unsignedchar*p;if((fp=fopen("eng.in","r"))=二NULL)return1;while(fgets(xx[i],80,fp)!=NULL){p二strchr(xx[i],'\n');if(p)*p=0;i++;}maxline二i;fclose(fp);return0;)voidWriteDat(void){FILE*fp;inti;fp二fopen(〃ps8.dat","w");for(i=0;i<maxline;i++){printfxx[i]);fprintf(fp,xx[i]);fclose(fp);注:与题1相似。voidencryptchar(){inti;char*pf;for(i=0;i<maxline;i++){pf=xx[i];while(*pf!-0){if((*pf>=a&&*pf<='z')||*pf*ll%256<32){pf++;continue;}*pf=*pf*ll%256;pf++;voidencryptChar()(inti,j,t;for(i=0;Kmaxline;i++)for(j=0;j<strlen(xx[i]);j++){t=xx[i][j]*H%256;if(t<=32||(xx[i][j]>=,a"&&xx[i][j]<=,z*))continue;xx[i][j]=t;4题函数ReadDatO实现从文件in.dat中读取20行数据存放到字符串数组xx中(第行字符串长度均小于80)。请编制函数jsSortO,其函数的功能是:以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDatO把结果xx输出到文件out.dat中。条件:从字符串中间一分为二,左边部分按字符的ASCII值降序排序,排序后左边部分与右边部分进行交换。如果原字符串长度为奇数,则最中间的字符不参加处理,字符仍放在原位置上。例如:位置012345678源字符串abcdhgfe123498765则处理后字符串hgfedcba876594321部分源程序已给出。请勿改动主函数main。、读数据函数ReadDatO和输出数据函数WriteDatO的内容。#include<stdio.h>#include<string.h>#include<conio.h>charxx[20][80];voidjsSort()voidmain()(readDat();jsSort();writeDat();}readDat()(FILE*in;inti=0;char*p;in=ropen(in.dat,r);while(i<20&&fgets(xx[i],80,in)!=NULL){p二strchr(xx[i],'\n');if(p)*p=0;i++;}fclose(in);)writeDat(){FILE*out();inti;clrscr();out=fopen(z/out.dat","w");for(i=0;i<20;i++){printf(*%s\n*,xx[i]);fprintf(out,xx[i]);}fclose(out);注:该题采用插入法实行降序排序,其它与题2相似。voidjsSort()(inti,strl,half,j,k;charch;for(i=0;i<20;i++){strl=strlen(xx[i]);half=strl/2;for(j=l;j<half;j++){ch=x[i][j];k=j-l;while((k>=0)&&(ch>xx[i][k])){xx[i][k+l]=xx[i][k];k—;)xx[i][k+l]=ch;)for(j=half-l,k=strl-l;j>=0;j―,k―){ch=xx[i][j];xx[i][j]=xx[i][k]:xx[i][k]=ch;voidjsSort()(inti,j,k,strl;charch;for(i=0;i<20;i++){strl=strlen(xx[i]);for(j=0;j<strl/2;j++)for(k=j+l;k<strl/2;k++)if(xx[i][j]<xx[i][k])ch=xx[i][j];xx[i][j]=xx[i][k];xx[i][k]=ch:)for(j=0;j<strl/2;j++)(ch=xx[i][j];xx[i][j]=xx[i][(strl+l)/2+j];xx[i][(strl+l)/2+j]=ch;5题函数ReadDatO实现从文件ENG.IN中读取一篇英文文章,存入到字符串数组xx中;请编制函数encryptCharO,按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS6.DAT中。替代关系:f(p)=p*Hmod256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)值小于等于32或f(p)时应的字符是数字。至9,则该字符不变,否则将f(p)所对应的字符进行替代。部分源程序已给出。原始数据文件存放的格式是:每行的宽度均小于80个字符。请勿改动主:函数main。、读数据函数ReadDat()和输出数据函数WriteDat()的内容。#include<stdio.h>#include<string.h>#include<conio.h>#include<ctype.h>unsignedcharxx[50][80];intmaxIine=0;/*文章的总行数*/intReadDat(void)voidWriteDat(void)voidencryptChar()voidmain()|clrscr();if(ReadDat()){printf("数据文件ENG.IN不能打开!\n\007");return;}encryptChar();WriteDat();)intReadDat(void)(FILE*fp;inti=0;unsignedchar*p;if((fp=fopen("eng.in","r"))二二NULL)return1;while(fgets(xx[i],80,fp)!=NULL){p二strchr(xx[i],'\n');if(p)*p=0;i++;)maxline=i;fclose(fp);return0;)voidWriteDat(void)(FILE*fp;inti;fp=fopen("ps6.dat","w");for(i=0;i<maxline;i++){printf("%s\n”,xx[i]);fprintf(fp,"%s\n",xx[i]);}fclose(fp);}注:与题1相似。只是它要求对f(p)进行判断。voidencryptchar()(inti;char*pf;for(i=0;i<maxline;i++){pf=xx[i];while(*pf!=0){if((*pf*in&256〉='0'&&*pf*ll%256<=’9')||*pf*ll%256<32){pf++;continue;}*pf=*pf*ll%256;pf++;只是为了上机能通过,不追求什么算法速度,答案仅供大家参考.voidencryptChar()(inti,j,strl;intt;for(i=0;i<maxline;i++)(strl=strlen(xx[i]);for(j=0;j<strl;j++){t=xx[i][j]*ll%256;if(t<=32||(t〉='O'&&t<='9'))continue;xx[i]6题函数ReadDat()实现从文件in.dat中读取20行数据存放到字符串数组xx中(第行字符串长度均小于80)。请编制函数jsSortO,其函数的功能是:以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDatO把结果xx输出到文件out.dat中。条件:从字符串中间一分为二,左边部分按字符的ASCH值降序排序,右边部分按字符的ASCH值升序排序。如果原字符串长度为奇数,则最中间的字符不参加排序,字符仍放在原位置上。例如:位置012345678源字符串abcdhgfe123498765则处理后字符串dcbaefgh432195678部分源程序已给出。请勿改动主:函数main。、读数据函数ReadDat()和输出数据函数WriteDatO的内容。#include<stdio.h>#include<string.h>#include<conio.h>charxx[20][80];voidjsSort()voidmain()(readDat();jsSort();writeDat();)readDat(){FILE*in;inti=0;char*p;in=topen(in.dat,r);whi1e(i<20&&fgets(xx[i],80,in)!=NULL){p=strchr(xx[i],'\n);if(p)*p=0;i++;)fclose(in);}writeDat(){FILE*out();inti;clrscr();out=fopen("out.dat","w");for(i=0;i<20;i++){printf("%s\n",xx[i]);fprintf(out,"%s\n”,xx[i]);)fclose(out);注:要注意当要进行右半部分排序时,一定要判断原字符串个数是否为奇数,若是则要half加1,本题对右半部分采用选择法对其进行升序排序。voidjsSort()inti,strl,half,j,k,p;charch;for(i=0;i<20;i++){strl=strlen(xx[i]);half=strl/2;for(j=0;j<half-l;j++)for(k=j+l;k<half;k++)if(xx[i][j]<xx[i][k]){ch=xx[i][j];xx[i][j]=xx[i][k]:xx[i][k]=ch;)if(strl%2)half++;/*Musttonotetheorderline!*/for(j=half;j<strl;j++){p=j;for(k=j;k<str;k++)if(xx[i][k]<xx[i][p])P=k;ch=xx[i][j];xx[i][j]=xx[i][p];xx[i][p]=ch;voidjsSort()(inti,j,k,strl;charch;for(i=0;i<20;i++){strl=strlen(xx[i]);for(j=0;j<strl/2;j++)for(k=j+l;k<strl/2;k++)if(xx[i][j]<xx[i][k])(Ch=xx[i][j];xx[i][j]=xx[i][k];xx[i][k]=ch;)for(j=(str1+1)/2;j<strl;j++)for(k=j+1;k<strl;k++)if(xx[i][j]>xx[i][k])ch=xx[i][j];xx[i][j]=xx[i][k];xx[i][k]=ch;7题函数ReadDatO实现从文件ENG.IN中读取一篇英文文章,存入到字符串数组xx中;请编制函数encryptCharO,按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDatO把结果xx输出到文件PS4.DAT中。替代关系:f(p)=p*llmod256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)值小于等于32或f(p)对应的字符是大写字母,则该字符不变,否则将f(p)所对■应的字符进行替代。部分源程序已给出。原始数据文件存放的格式是:每行的宽度均小于80个字符。请勿改动主函数main。、读数据函数ReadDat()和输出数据函数WrileDat()的内容。#include<stdio.h>#include<string.h>#include<conio.h>#include<ctype.h>unsignedcharxx[50][80];intmaxline=0;/*文章的总行数*/intReadDat(void)voidWriteDat(void)voidencryptChar()voidmain(){clrscr();if(ReadDatO){printf(〃数据文件ENG.IN不能打开!\n\007〃);return;)encryptChar();WriteDat();intReadDat(void)FILE*fp;inti=0;unsignedchar*p;if((fp=fopen("eng.in","r"))=二NULL)return1;while(fgets(xx[i],80,fp)!=NULL){p=strchr(xx[i],f\n);if(p)*p=0;i++;}maxline=i;fclose(fp);return0;)voidWriteDat(void){FILE*fp;inti;fp=fopen(〃ps4.dat","w");for(i=0;i<maxline;i++){printf("%s\n",xx[i]);fprintf(fp,"%s\n”,xx[i]);)fclose(fp);注:下.题1相似,只是它要求对f(p)进行判断。voidencryptchar(){inti;char*pf;for(i=0;i<maxline;i++){pf=xx[i];while(*pf!=0){if((*pf*l1%256>= 1%256<=Z*)||*pf*i1%256<32){pf++;continue;}*pf=*pf*ll%256;pf++;voidencryptChar()(inti,j,t;for(1=0;i<maxline;i++){for(j=0;j<strlen(xx[i]);j++)(t=xx[i][j]*ll%256;if(t<=32||(t>='A'&&t<=,Z'))continue;xx[i]8题在文件中有200个正整数,且每个数均在1000至9999之间。函数ReadDatO读取这200个数存放到数组aa中。请编制函数jsSortO,其函数的功能是:要求按每个数的后三位的大小进行升序排列,然后取出满足此条件的前10个数依次存入数组b中,如果后三位的数值相等,则按原先的数值进行降序排列。最后调用函数WriteDatO把结果bb输出到文件。ut.dat中。例:处理前60125099901270258088处理后90126012702580885099部分源程序已给出。请勿改动主:函数main。、读数据函数ReadDat()和输出数据函数WriteDat()的内容。#include<stdio.h>#include<string.h>#include<conio.h>intaa[200],bb[10];voidjsSort(){]voidmain(){readDat();jsSort();writeDatO;)readDat()FILE*in;in=iopen(in.aat,r);for(i=0;i<200;i++)fscanf(in,*%d,*,&aa[i]);fclose(in);}writeDat(){FILE*out;inti;clrscr();out=fopen("out.dat","w");for(i=0;i<10;i++){printf("i=%d,%d\n”,i+1,bb[i]);fprintf(out,"%d\n”,bb[i]);}fclose(out);注:每个元素对1000求余得到后三位的数,然后用冒泡法进行排序。voidjsSort()(inti,j,data;for(i=0;i<199;i++)for(j=i+l;j<200;j++){if(aa[i]%1000>aa[j]%1000){data=aa[i];aa[i]=aa[j];aa[j]=data;}elseif(aa[i]%1000==aa[j]%1000)if(aa[i]<aa[j]){data=aa[i];aa[i]=aa[j];aa[j]=data;}}for(i=0;i<10;i++)bb[i]=aa[i];9题函数1^^比^()实现从文件£的.小中读取一篇英文文章,存入到字符串数组xx中;请编制函数encryptCharO,按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS2.DAT中。替代关系:f(p)=p*13mod256(p是数组中某•个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)值小于等于32或其ASCII值是偶数,则该字符不变,否则将f(p)所对应的字符进行替代。部分源程序已给出。原始数据文件存放的格式是:每行的宽度均小于80个字符。请勿改动主函数main。、读数据函数ReadDat()和输出数据函数WriteDat()的内容。#include<stdio.h>#include<string.h>#include<conio.h>#include<ctype.h>unsignedcharxx[50][80];intmaxiinc=0;/*文章的总行数*/intReadDat(void)voidWriteDat(void)voidencryptChar()voidmain()(clrscr();if(ReadDat()){printf("数据文件ENG.IN不能打开!\n\007〃);return;}encryptChar();WriteDat();)intReadDat(void){FILE*fp;inti=0;unsignedchar*p;if((fp=fopen("eng・in",〃r"))二二NULL)return1;while(fgets(xx[i],80,fp)!=NULL){p二strchr(xx[i],'\n');if(p)*p=0;i++;)maxline=i;fclose(fp);return0;voidWriteDat(void){FILE注:与题1注:与题1相似。voidencryptchar(){inti;char*pf;for(i=0;i<maxline;i++){pf=xx[i];while(*pf!=0){if(*pf%2==0||*pf*13%256<32){pf++;continue;}pf=*pf*ll%256;pf++;voidencryptChar()|inti,j,t;for(i=0;i<maxline;i++){for(j=0;j<strlen(xx[i]);J++)(t=xx[i][j]*13%256;if(t<=32||t%2==0)continue;)}10题inti;fp=fopen(,zps2.dat","w");for(i=0;i<maxline;i++){printf(*%s\n*,xx[i]);fprintf(fp,*%s\n*,xx[i]);}fclose(fp);在文件in.dat中有200组数据,每组有3个数,每个数均是三位数。函数ReadDat()读取这200组数据存放到结构数组aa中,请编制函数jsSortO,其函数的功能是:要求在200组数据中找出条件为每组中的第一个数大于第二个数加第三个数的之和,其中满足条件的个数作为函数jsSortO的返回值,同时把满足条件的数据存入结构数组bb中,再对bb中的数据按照每组数据的第一个数加第三个之和的大小进行升序排列(第一个数加第三个数的和均不相等),排序后的结果仍币:新存入结构数组bb中,最后调用函数WriteDat()把结果bb输出到文件out.dat中。部分源程序已给出。请勿改动主函数mainO>读数据函数ReadDat()和输出数据函数WriteDat。的内容。#include<stdio.h>#include<string.h>#include<conio.h>typedefstruct(intxl,x2,x3;}data;dataaa[200],bb[200];intjsSort()voidmain()(intcount;readDat();count=jsSort();/*返回满足条件的个数*/writeDat(count);}readDat(intcount)(FILE*in;inti;in=topen(in.dat,r);for(i=0;i<200;i++)fscanf(in,^%d,%d,%d”,xl,&aa[i].x2,&aa[i].x3);fclose(in);}writeDat()FILE*out;inti;clrscr();out=fopen("out.dat","w");for(i=0;i<10;i++){printf(*%d,%d,%d第一个数+第三个数=刎\!1",bb[i].xl,bb[i].x2,bb[i].x3,bb[i].xl+bb[i],x3);fprintf(out,"%d,%d,%d\n*,bb[i].xl,bb[i].x2,bb[i].x3);}fclose(out);注:最后排序采用冒泡法。intjsSort()(inti,j,k=0;DATAswap; /*定义一个结构体变量,作为交换时的临时存放地*/for(i=0;i<200;i++)if(aa[i].xlXaa[i].x2+aa[i].x3))bb[k++]=aa[i];/*先将符合第一个数大于第二个数加第三个数的之和的数存入bb数组中*/for(i=0;i<k-l;i++)for(j=i+l;j<k;j++)if((bb[i].xl+bb[i].x3)>(bb[j].xl+bb[j].x3))|swap=bb[i];bb[i]=bb[j]:bb[j]=swap; /*在BB数组中进行排序(从小到大)*/}returnk;11题已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称me(字符型10位),单价dj(整型),数量si(整型),金额je(长整型)四部分组成。其中:金额=单价*数量计算得出。函数ReadDatO是读取这100个销售记录并存入结构数组sell中。请编制函数SortDatO,其功能要求:按产品代码从大到小进行排列,若产品代码相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDatO把结果输出到文件0UT10.DAT中。部分源程序已给出。请勿改动主函数main。、读数据函数ReadDat()和输出数据函数WriteDatO的内容。#include<stdio.h>#include<mem.h>#include<string.h>#include<conio.h>#include<stdlib.h>#defineMAX100typedefstruct{chardm[5];/*产品代码*/charmc[l1];/*产品名称*/intdj;/*单价*/intsi;/*数量*/longje;/*金额*/}PRO;PROsell[MAX];voidRoadDat();voidWriteDat();voidSortDat()()voidmain()(memset(sell,0,sizeof(sell));ReadDat0;SortDat();WriteDat();)voidReadDat()(FILE*fp;charstr[80],ch[11];inti;fp=fopen(TN.DAT","r");for(i=0;i<100;i++){fgets(str,80,fp);memcpy(sell[i].dm,str,4);memcpyme,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].si;fclose(fp);voidWriteDat(void){FILE*fp;inti;fp=fopen(^OUT10.DAT","w");for(i=0;i<100;i++){fprintf(fp,zz%s%s%4d%5d%10Ld\nzz,sell[i].dm,sell[i].me,sell[i].dj,sei1[i].si,sei1[i].je);}fclose(fp);注:这时也是采用冒泡法进行排序。与前面的冒泡法在写法上有所不同请注意区分。voidSortDat(){inti,j;PROswap;for(i=0;i<MAX-l;i++)for(j=0;j<MAX-l-i;j++){if(strcmp(sell[j].dm,sell[j+l].dm)<0) /*用函数stremp判断两个字符串的大小*/{swap=sell[j];sei1[j]=sell[j+1]; sei1[j+l]=swap;}if(strcmp(sell[j].dm,sell[j+1].dm)==0&&sell[j].je<sell[j+1].je)|swap=sell]j];sell[j]=sell[j+1];sell[j+l]=swap;12题函数ReadDat()实现从文件in.dat中读取20行数据存放到字符串数组xx中(第行字符串长度均小于80)。请编制函数jsSortO,其函数的功能是:以行为单位对字符串变量的下标为奇数的字符按其ASCH值从小到大的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件out.dat中。例如:位置01234567源字符串hgfedeba则处理后字符串hafcdebg部分源程序已给出。请勿改动主:函数main。、读数据函数ReadDat()和输出数据函数WriteDat()的内容。#include<stdio.h>#include<string.h>^include<conio.h>charxx[20][80];voidjsSort()voidmain()(readDat();jsSort();writeDat();)readDat()(FILEFn;inti=0;char*p;in=fopen(in.dat,r);while(i<20&&fgets(xx[i],80,in)!=NULL){p=strchr(xx[i],>\n');if(p)*p=0;i++;}fclose(in);)writeDat()(FILE*out();inti;out=fopen("out.dat","w");clrscr();for(i=0;i<20;i++){printf("%s\n",xx[i]);fprintf(out,"%s\n",xx[i]);)fclose(out);注:该题亦是采用冒泡法,但在写法上与11题不同。voidjsSort()inti,j,k,strl;chartemp;for(i=0;i<20;i++)(strl=strlen(xx[i]);for(k=l;k<strl;k=k+2)for(j=k+2;j<strl;j=j+2)if(xx[i][k]>xx[i][j])temp=xx[i][k];xx[i][k]=Xx[i][j]:xx[i][j]=temp;voidjsSort()(inti,j,k,strl;charch;for(i=0;i<20;i++){strl=strlen(xx[i]);for(j=l;j<strl;j=j+2)for(k=j+2;k<strl;k=k+2)if(xx[i][j]>xx[i][k]){Ch=xx[i][j];xx[i][j]=xx[i][k];xx[i][k]=ch;13题已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称me(字符型10位),单价dj(整型),数量si(整型),金额je(长整型)四部分组成。其中:金额=单价*数量计算得巾。函数ReadDalO是读取这100个销售记录并存入结构数组sell中。请编制函数SortDatO,其功能耍求:按产品代码从大到小进行排列,若产品代码相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat。把结果输出到文件OUT8.DAT中。部分源程序已给出。请勿改动主函数main。、读数据函数ReadDat()和输出数据函数WriteDat()的内容。#include<stdio.h>#include<mem.h>#include<string.h>#include<conio.h>#include<stdlib.h>#defineMAX100typedefstruct{chardm[5];/*产品代码*/charme[11];/*产品名称*/intdj;/*单价*/intsi;/*数量*/longje;/*金额*/}PRO;PROsell[MAX];voidReadDat();voidWriteDat();voidSortDat()voidmain0(memset(sell,0,sizeof(sell));ReadDat();SortDat();WriteDat();}voidReadDat()(FILE*fp;charstr[80],ch[11];inti;fp二fopen("IN.DAT","r");for(i=0;i<100;i++){fgets(str,80,fp);memepy(sell[i].dm,str,4);memepy(sell[i].me,str+4,10);memepy(ch,str+14,4);ch[4]=0;sell[i].dj=atoi(ch);memepy(ch,str+18,5);ch[5]=0;sell[i].sl=atoi(ch);sell[ilje=(long)sell[i].dj*sell[i].si;fclose(fp);voidWriteDat(void)(FILE*fp;inti;fp=fopenC0UT8.DAT",zw");for(i=0;i<100;i++){fprintf(fp,*%s%s%4d%5d%10Ld\n,z,sell[i].dm,sell[i].me,sell[i].dj,sell[i].si,sell[i],je);)fclose(fp);注:该题的冒泡法与11题不同。voidSortDat()(inti,j;PROswap;for(i=0;i<MAX-l;i++)for(j=i+l;j<MAX;j++)(if(strcmp(sell[i].me,sei1[j].me)<0){swap=sel1[i];sell[i]=sell[j];sei1[j]=swap;)if(stremp(sell[i],me,sell[j].mc)==0&&sell[i].je<sell[j].je){swap二sei1[i];sell[i]=sell[j];sell[j]=swap;14题请编写一个函数jsValue(intm,intk,intxx口),该函数的功能是:将大于整数m且紧靠m的k个素数存入数组xx传回。最后调用函数writeDatO读取10组数据,分别得出结果且把结果输出到文件out.dat中。例如:若输入17,5,则应输出:19,23,29,31,37„请勿改动主函数main。和写函数writeDatO的内容。#include<stdio.h>voidjsValue(intm,intk,intxx[J)main()(intm,n,zz[100];prinf("\n请输入两个整数:”);scanf&m,&n);jsValue(m,n,zz);for(m=0;m<n;m++)printf(^d”,zz[m]);printf('\n");writeDat();}wtiteDat()(intm,n,zz[100],i;FILE*.in,*out;in=iopen(in.dat,r);out=fopen("out.dat","'v");for(i=0;i<10;i++){fscanf(in,*%d%d",&m,&n);jsValue(m,n,zz);for(m=0;m<n;m++)fprintf(out,"%d”,zz[m]);fprintf(out,"\n");}fclose(in);fclose(out);注:该题主要是对要素数方法的理解。voidjsvalue(intm,intk,intxx[])inti,j,s=0;for(i=m+l;k>0;i++){for(j=2;j<i;j++)if(i%j==O)break;/*注:素数为只能被自己和1整除的数.如果i%j等于0,说明i不是素数,跳出本层循环*/if(i==j){xx[s++]=i;k—;}15题已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称me(字符型10位),单价dj(整型),数量si(整型),金额je(长整型)四部分组成。其中:金额=单价*数量计算得出。函数ReadDatO是读取这100个销售记录并存入结构数组sell中。请编制函数SortDatO,其功能要求:按产品代码从大到小进行排列,若产品代码相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDatO把结果输出到文件0UT6.DAT中。部分源程序已给出。请勿改动主函数main。、读数据函数ReadDat()和输出数据函数WriteDal()的内容。#include<stdio.h>#include<mem.h>#include<string.h>#include<conio.h>#include<stdlib.h>^defineMAX100typedefstruct(chardm[5];/*产品代码*/charmc[l1];/*产品名称*/intdj;/*单价*/intsi;/*数量*/longje;/*金额*/}PRO;PROsell[MAX];voidReadDat();voidWriteDat();voidSortDat()voidmain()(memset(sell,0,sizeof(sell));ReadDat();SortDat();WriteDat();voidReadDat()(FILE*fp;charstr[80],ch[ll];inti;fp=fopen(z/IN.DAT","r");for(i=0;i<100;i++){fgets(str,80,fp);memcpy(sell[i].dm,str,4);memcpy(sell[iLme,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[iLje=(long)sell[i].dj^sell[i].si;)fclose(fp);}voidWriteDat(void)(FILE*fp;inti;fp=fopenCz0UT6.DAT","w");for(i=0;i<100;i++){fprintf(fp,*%s%s%4d%5d%10Ld\n”,sell[iLdm,sell[i].me,sell[i].dj,sell[i].si,sell[i].je);)fclose(fp);注:也是考对排序法的运用。voidSortDat()(inti,j;PROswap;for(i=0;i<MAX-l;i++)for(j=i+l;j<MAX;j++)if(strcmp(sell[i],me,sell[j].me)>0)swap二seiI[i];sell[i]=sell[j];sei1[j]=swap;}if(strcmp(sell[i].me,sell[j].mc)=O&&sell[i].je<sell[j].je)(swap=sel1[i];sell[i]=sell[j];sell[j]=swap;16题下列程序的功能是:在三位整数(100至999)中寻找符合条件的整数并依次从小到大存入数组中;它既是完全平方数,又是两位数字相同,例如144、676等。请编制函数实现此功能,满足该条件的整数的个数通过所编制的函数返回。最后调用函数writeDat()把结果输出到文件out.dat中。请勿改动主函数main。和写函数wrileDatO的内容。ttinclude<stdio.h>intjsValue(intbb[])main(intb[20],num;num=jsValue(b);writeDat(num,b);)writeDat(intnum,intb口){FILE*Out;inti;out=fopen("out.dat","w");fprintf(out,"%d\n",num);for(i=0;i<num;i++)printf(out,b[i]);fclose(out);注:注意在i==(int)sqrt(i)*(int)sqrt(i)中只有当i是完全平方数时开平方后再取整才不会丢失任何数据。intjsvalue(intbb[])(inti,j,k=0,g,s,b;for(i=100;i<=999;i++){g=i%10;s=i/10%10;b=i/100;if((i==(int)sqrt(i)*(int)sqrt(i))&&(g==s||s==b,b==g))bb[k++]=i;}returnk;17题已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称me(字符型10位),单价dj(整型),数量si(整型),金额je(长整型)四部分组成。其中:金额=单价*数量计算得出。函数ReadDatO是读取这100个销售记录并存入结构数组sell中。请编制函数SortDatO,其功能要求:按金额从大到小进行排列,若金额相同,则按产品代码从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDatO把结果输出到文件0UT4.DAT中。部分源程序已给出。请勿改动主函数main。、读数据函数ReadDat()和输出数据函数WriteDat()的内容。#include<stdio.h>#include<mem.h>#include<string.h>#include<conio.h>#include<stdlib.h>^defineMAX100typedefstruct{chardm[5];/*产品代码*/charmc[ll];/*产品名称*/intdj;/*单价*/intsi;/*数量*/longje;/*金额*/}PRO;PROsell[MAX];voidReadDat();voidWriteDat();voidSortDat()voidmain()(memset(sell,0,sizeof(sell));ReadDat();SortDat();WriteDat();)voidReadDat()(FILE*fp;charstr[80],ch[11];inti;fp=fopen("IN.DAT","r");for(i=0;i<100;i++){fgets(str,80,fp);memcpy(sell[i].dm,str,4);memcpy(sell[i].me,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].si;}fclose(fp);}voidWriteDat(void){FILE*fp;inti;fp=fopenC0UT4.DAT,;for(i=0;i<100;i++){fprintf(fp,"%s%s%4d%5d%10Ld\n,z,sell[i].dm,sell[i].me,sell[i].dj,sell[i].si,sell[i].je);}fclose(fp);注:voidSortDat()inti,j;PROswap;for(i=0;i<MAX-l;i++)for(j=i+l;j<MAX;j++){if(selltij.je<sell[j].je)swap=sell[i];sell[i]=sell[j]:sell[j]=swap;)if(strcmp(sell[i].dm,sell[j].dm)<0&&sell[i].je==sell[j].je){swap=sell[i];sell[i]=sell[j];sell[j]=swap;18题下列程序的功能是:将一正整数序列{KI,K2K9}重新排列成一个新的序列。新序列中,比K1小的数都在K1的前面(左面),比K1大的数都在K1的后面(右面)。要求编写函数jsValueO实现此功能,最后调用writeDat()函数所新序列输出到文件out.dat中。说明:在程序中已给出了10个序列,每个序列有9个正整数,并存入数组a[10][9]中,分别求出这10个新序列。例:序列{6,8,9,1,2,5,4,7,3}经重排后成为{3,4,5,2,1,6,8,9,7)部分源程序已给出。请勿改动去函数main。和写函数writeDat()的内容。#include<stdio.h>jsValue(inta[10][9])main()(inta[10][9]={{6,8,9,1,2,5,4,7,3}{3,5,8,9,1,2,6,4,7}{8,2,1,9,3,5,4,6,7){3,5,1,2,9,8,6,7,4}{4,7,8,9,1,2,5,3,6}(4,7,3,5,1,2,6,8,9}{9,1,3,5,8,6,2,4,7)(2,6,1,9,8,3,5,7,4}{5,3,7,9,1,8,2,6,4)[7,1,3,2,5,8,9,4,6});inti,j;jsValue(a);for(i=0;i<10;i++){for(j=0;j<9;j++){printfa[i][j]);if(j<=7)printfC,0;)printf;)writeDat(a);writeDat(inta[10][9])(FILE*fp;inti,j;fp=fopen(z,out.dat",〃w");for(i=0;i<10;i++){for(j=0;j<9;j++){fprintf(fp,*%d*,a[i][j]);if(j<=7)fprintf(fp,*);)fprintf(fp,"\n");}fclose(fp);注:该题的算法是:从数列的最后一个数开始往前逐一移动直到完,在移动过程中与K1进行比较,如有大小或等于K1的则进行调换。调换的方式是,第•次调换的数与原最后一个数换,第二次调换的数与原倒数第二个数换,依次类推。jsvalue(inta[10][9]){intvalue,i,j,k;for(i=0;i<10;i++)for(j=8,k=8;j>=0;j-)if(a[i][j]>=a[i][0]){value=a[i][k];a[i][k—]=a[i][j];a[i][j]=value;/*我的思路是:将每组从最后往前倒序逐个同第一个数比较,比它大的就放到临时数组b中的最后,比它小的就放到临时数组b中的最前面,以次类推.最后将b数组赋给a数组*/jsvalue(inta[10][9]){inti,j,k,n,temp;intb[9]=0;for(i=0;i<10;i++){temp=a[i][0];k=8;n=0;for(j=8,j>=0;j—){if(temp<a[i][j])b[k—]=a[i][j];if(temp>a[i][j]) b[n++]=a[i][j]:if(temp—a[i][j]) b[n]=temp;/*也可以b[k]=a[i][j];*/)for(j=0;j<9;j++)[a[i][j]=b[j];b[j]=O;})}19题已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称me(字符型10位),单价dj(整型),数量si(整型),金额je(长整型)四部分组成。其中:金额=单价*数量计算得出。函数ReadDatO是读取这100个销售记录并存入结构数组sell中。请编制函数SortDatO,其功能要求:按金额从小到大进行排列,若金额相同,则按产品代码从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDatO把结果输出到文件0UT2.DAT中。部分源程序已给出。请勿改动主函数main。、读数据函数ReadDat()和输出数据函数WriteDat()的内容。#include<stdio.h>#include<mem.h>#include<string.h>#include<conio.h>#include<stdlib.h>#defineMAX100typedefstruct{chardm[5];/*产品代码*/charme[11];/*产品名称*/intdj;/*单价*/intsi;/*数量*/longje;/*金额*/}PRO;PROsell[MAX];voidReadDat();voidWriteDat();voidSortDat()(}voidmain(){memset(sell,0,sizeof(sell));ReadDat();SortDat();WriteDat();}voidReadDat(){FILE*fp;charstr[80],ch[ll];inti;fp二fopen(TN.DAT","r");for(i=0;i<100;i++){fgets(str,80,fp);memepy(sell[i].dm,str,4);memepy(sell[i].nic,str+4,10);memepy(ch,str+14,4);ch[4]=0;sell[i],dj=atoi(ch);memcpy(ch,str+18,5);ch[5]=0;sei1[i].sl=atoi(ch);sell[i].je=(long)sell[i].dj*sell[i].si;)fclose(fp);}voidWriteDat(void){FILE*fp;inti;fp=fopen(*0UT2.DAT",'w*);for(i=0;i<100;i++){fprintf(fp,zz%s%s%4d%5d%101d\nzz,sell[i].dm,sell[i].me,sell[i].dj,sell[i].si,sell[i].je);}fclose(fp);注:该题考我们对排序法的应用。voidSortDat0{inti,j;PROswap;for(i=0;i<MAX-l;i++)for(j=i+l;j<MAX;j++)(if(sell[i].je>sell[j].je)(swap二sell[i];sell[i]=sell[j];sell[j]=swap;}if(stremp(sell[i].dm,sell[j].dm)<0&&sell[i].je==sell[j].je)(swap=sell[i];sell[i]=sell[j];sell[j]=swap;)}某级数的前两项A1=1,A2=1,以后各项具有如下关系:An=An-2+2An-1下列程序的功能是:要求依次对于整数*100,1000和10000求出对应的n值,使其满足:Sn〈M且Sn+1>=M,这里Sn=A1+A2+...+An,并依次把n值存入数组单元b[0],b[l]和b[2]中,请编制jsValueO函数来实现此功能,最后调用函数writeDatO把数组b口中的值输出到out.dat文件中。请勿改动主函数main()和写函数writeDat()的内容。#include<stdio.h>intb[3]jsValue()main(){jsValue();printfCZM=1OO,n=%d\nM=1000,n=%d\nM=10000,n=%d\nz,,b[0],b[l],b[2]);writeDat()}writeDat(){FILE*fp;fp=fopen(,zout.dat","w〃);fprintf(fp,*%d\n%d\n%d\n,z,b[0],b[l],b[2]);fclose(fp);注:在该题中主要就是要正确简捷的表示Hl各项的关系jsvalue()(intal=l,a2=l,al2,sn,k=2;sn=al+a2;while(l){al2=al+2*a2;if(sn<100&&sn+al2>=100)b[O]=k;if(sn<l000&&sn+a12>=1000)b[l]=k;if(sn<10000&&sn+al2>=10000){b[2]=k;break;}sn=sn+al2;al=a2;a2=al2;k++;21题函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数CharConvAO,其函数的功能是:以行为单位把字符串中的最后个字符的ASCH值右移4位后加最后第二个字符的ASCII值,得到最后一个新的字符,最后第二个字符的ASCII值右移4位后加最后第三个字符的ASCII值,得到最后第二个新的字符,依此类推一直处理到第二个字符,第一个字符的ASCII值加原最后一个字符的ASCII值,得到第一个新的字符,得到的新字符分别存放在原字符串对应的位置上。最后已处理的字符串仍按行重新存入字符串数组xx中,最后调用函数writeDatO把结果xx输出到文件OUT1O.DAT中。原始数据文件存放的格式是:每行的宽

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论