三级.docx
- 文档编号:26001889
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:269
- 大小:69.45KB
三级.docx
《三级.docx》由会员分享,可在线阅读,更多相关《三级.docx(269页珍藏版)》请在冰豆网上搜索。
三级
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
第01套:
程序PROG1.C的功能是:
计算500~800区间内素数的个数cnt,并按所求素数
的值从大到小的顺序,计算其间隔减、加之和,即第1个素数-第2个素数+第3个
素数-第4个素数+第5个素数...的值sum。
请编写函数countValue()实现程序的
要求,最后main()函数调用函数writeDAT()把结果cnt和sum,输出到文件OUT.DAT
中。
注意:
部分源程序存放在PROG1.C中。
请勿改动主函数main()和输出数据函数writeDAT()的内容。
参考答案:
#include
intcnt,sum;
voidwriteDAT();
intisPrime(intnum)
{
inti;
for(i=2;i<=num/2;i++)
if(num%i==0)return0;
return1;
}
voidcountValue()
{
inti,j=-1;
for(i=800;i>500;i--){
if(isPrime(i)){
cnt++;
j*=-1;
sum+=j*i;
}
}
}
voidmain()
{
cnt=sum=0;
countValue();
printf("素数的个数=%d\n",cnt);
printf("按要求计算的值=%d\n",sum);
writeDAT();
}
voidwriteDAT()
{
FILE*fp;
fp=fopen("c:
\\test\\OUT.DAT","w");
fprintf(fp,"%d\n%d\n",cnt,sum);
fclose(fp);
}
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
第02套:
程序PROG1.C的功能是:
计算出自然数SIX和NINE满足条件
SIX+SIX+SIX=NINE+NINE的个数cnt,以及满足此条件所有的SIX与NINE
的和SUM。
请编写函数countValue()实现程序的要求,最后main()函数调用函数
writeDAT()把结果cnt和sum,输出到文件OUT.DAT中。
其中的S,I,X,N,E各代表一个十进制数字,允许代表的数字相同,但S和N不能
为0。
例如:
944+944+944=1416+1416
注意:
部分源程序存放在PROG1.C中。
请勿改动主函数main()和输出数据函数writeDAT()的内容。
参考答案:
#include
intcnt,sum;
voidwriteDAT();
voidcountValue()
{
ints,i,x,n,e,six,nine;
for(s=1;s<10;s++)
for(i=0;i<10;i++)
for(x=0;x<10;x++)
\TABfor(n=1;n<10;n++)
\TABfor(e=0;e<10;e++){
\TABsix=s*100+i*10+x;
\TABnine=n*1000+i*100+n*10+e;
\TABif((3*six)==(2*nine)){
\TABcnt++;sum+=six+nine;
\TABprintf("six=%d,nine=%d\n",six,nine);
\TAB}
\TAB}
}
voidmain()
{
cnt=sum=0;
countValue();
printf("满足条件的个数=%d\n",cnt);
printf("满足条件所有的SIX与NINE的和=%d\n",sum);
writeDAT();
}
voidwriteDAT()
{
FILE*fp;
fp=fopen("c:
\\test\\OUT.DAT","w");
fprintf(fp,"%d\n%d\n",cnt,sum);
fclose(fp);
}
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
第03套:
请编写函数voidcountValue(int*a,int*n),它的功能是:
求出1到1000之
内能被7或11整除但不能同时被7和11整除的所有整数,其结果按从小到大的顺序放
在数组a中,并通过形式参数n传递这些数的个数。
注意:
部分源程序存在文件PROG1.C文件中。
请勿改动主函数main()和输入输出数据函数writeDAT()的内容。
参考答案:
#include
#include
voidwriteDAT();
voidcountValue(int*a,int*n)
{
inti;
*n=0;
for(i=7;i<=1000;i++)
if(((i%7)==0||(i%11)==0)&&(i%77!
=0))a[(*n)++]=i;
}
main()
{
intaa[1000],n,k;
countValue(aa,&n);
for(k=0;k if((k+1)%10==0)printf("%5d\n",aa[k]); elseprintf("%5d",aa[k]); writeDAT(); } voidwriteDAT() { intaa[1000],n,k; FILE*fp; fp=fopen("c: \\test\\out.dat","w"); countValue(aa,&n); for(k=0;k if((k+1)%10==0)fprintf(fp,"%5d\n",aa[k]); elsefprintf(fp,"%5d",aa[k]); fclose(fp); } ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※ 第04套: 已知数据文件IN.DAT中存有300个四位数,并已调用读函数readDat()把这些 数存入数组a中,请编制一函数jsValue(),其功能是: 求出千位数上的数加百位数 上的数等于十位数上的数加个位数上的数的个数cnt,再把所有满足此条件的四位 数依次存入数组b中,然后对数组b的四位数按从大到小的顺序进行排序。 最后 main()函数调用写函数writeDat()把数组b中的数输出到文件OUT.DAT中。 例如: 7153,7+1=5+3,则该数满足条件存入数组b中,且个数cnt=cnt+1。 8129,8+1! =2+9,则该数不满足条件忽略。 注意: 部分源程序存在文件PROG1.C文件中。 程序中已定义数组: a[300],b[300],已定义变量: cnt 请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和 写函数writeDat()的内容。 参考答案: #include inta[300],b[300],cnt=0; voidreadDat(); voidwriteDat(); jsValue() { inti,j,qw,bw,sw,gw,tmp; for(i=0;i<300;i++){ qw=a[i]/1000; bw=(a[i]-qw*1000)/100; sw=(a[i]-qw*1000-bw*100)/10; gw=a[i]%10; if(qw+bw-sw-gw==0)b[cnt++]=a[i]; } for(i=0;i for(j=i+1;j if(b[i] tmp=b[j]; b[j]=b[i]; b[i]=tmp; } } } } main() { inti; readDat(); jsValue(); writeDat(); printf("cnt=%d\n",cnt); for(i=0;i } voidreadDat() { FILE*fp; inti; fp=fopen("c: \\test\\in.dat","r"); for(i=0;i<300;i++)fscanf(fp,"%d,",&a[i]); fclose(fp); } voidwriteDat() { FILE*fp; inti; fp=fopen("c: \\test\\out.dat","w"); fprintf(fp,"%d\n",cnt); for(i=0;i fclose(fp); } ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※ 第05套: 已知数据文件IN.DAT中存有300个四位数,并已调用读函数readDat()把这些 数存入数组a中,请编制一函数jsValue(),其功能是: 求出个位数上的数减千位数 上的数减百位数上的数减十位数上的数大于零的个数cnt,再求出所有满足此条件 的四位数平均值pjz1,以及所有不满足此条件的四位数平均值pjz2。 最后main()函 数调用写函数writeDat()把结果cnt,pjz1,pjz2输出到OUT.DAT文件。 例如: 1239,9-1-2-3>0,则该数满足条件,参加计算平均值pjz1,且个数 cnt=cnt+1。 8129,9-8-1-2<0,则该数不满足条件,参加计算平均值pjz2。 注意: 部分源程序存在文件PROG1.C文件中。 程序中已定义数组: a[300],已定义变量: cnt,pjz1,pjz2 请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和 写函数writeDat()的内容。 参考答案: #include inta[300],cnt=0; doublepjz1=0.0,pjz2=0.0; voidreadDat(); voidwriteDat(); jsValue() { inti,qw,bw,sw,gw; for(i=0;i<300;i++){ qw=a[i]/1000; bw=(a[i]-qw*1000)/100; sw=(a[i]-qw*1000-bw*100)/10; gw=a[i]%10; if(gw-qw-bw-sw>0){ pjz1+=a[i]; cnt++; } elsepjz2+=a[i]; } pjz1/=cnt; pjz2/=(300-cnt); } main() { inti; readDat(); jsValue(); writeDat(); printf("cnt=%d\n满足条件的平均值pzj1=%7.2lf\n不满足条件的平均值pzj2=%7.2lf\n",cnt,pjz1,pjz2); } voidreadDat() { FILE*fp; inti; fp=fopen("c: \\test\\in.dat","r"); for(i=0;i<300;i++)fscanf(fp,"%d,",&a[i]); fclose(fp); } voidwriteDat() { FILE*fp; fp=fopen("c: \\test\\out.dat","w"); fprintf(fp,"%d\n%7.2lf\n%7.2lf\n",cnt,pjz1,pjz2); fclose(fp); } ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※ 第06套: 函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx 中;请编制函数SortCharA(),其函数的功能是: 以行为单位对字符按从小到大 的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中。 最后main()函 数调用函数WriteDat()把结果xx输出到文件OUT.DAT中。 例: 原文: dAe,BfC. CCbbAA 结果: .ABCdef AACCbb 原始数据文件存放的格式是: 每行的宽度均小于80个字符,含标点符号和空 格。 注意: 部分源程序存放在PROG1.C中。 请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat() 的内容。 参考答案: #include #include charxx[50][80]; unsignedintmaxline=0;/*文章的总行数*/ intReadDat(void); voidWriteDat(void); voidSortCharA(void) { charch; unsignedinti,j,k; for(i=0;i for(j=0;j for(k=j;k \TABif(xx[i][j]>xx[i][k]){ ch=xx[i][k]; xx[i][k]=xx[i][j]; xx[i][j]=ch; } } } } } voidmain() { if(ReadDat()){ printf("数据文件IN.DAT不能打开! \n\007"); return; } SortCharA(); WriteDat(); } intReadDat(void) { FILE*fp; inti=0; char*p; if((fp=fopen("c: \\test\\IN.DAT","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; unsignedinti; fp=fopen("c: \\test\\OUT.DAT","w"); for(i=0;i printf("%s\n",xx[i]); fprintf(fp,"%s\n",xx[i]); } fclose(fp); } ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※ 第07套: 函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx 中;请编制函数StrOR(),其函数的功能是: 以该文章中的行为单位依次扫描一 行字符串中的小写字母o,每次将小写母o的左右字符串部分作交叉换位,即左边字 符串移到小写字母o的右边,而原先右边的则反之,并把小写母o删除,依次直至这 一行中的小写母o处理完,之后把已处理的字符串仍按行重新存入字符串数组xx中。 最后main()函数调用函数WriteDat()把结果xx输出到文件OUT.DAT中。 例如原文: youhavethecorrectrecord. 第1个o: uhavethecorrectrecord.y 第2个o: rrectrecord.yuhavethec 第3个o: rd.yuhavethecrrectrec 提示: 对于每一行字符串数组处理有如下一种递归调用算法可供参考: 查找字符串中首个小写字母'o'的位置;没有找到'o',则结束递归调用; 找到'o',则按题意对字符串进行处理,形成新的字符串,然后返回,继续进行 递归调用。 原始数据文件存放的格式是: 每行的宽度均小于80个字符,含标点符号和空 格。 注意: 部分源程序存放在PROG1.C中。 请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat() 的内容。 参考答案: #include #include charxx[50][80]; intmaxline=0;/*文章的总行数*/ intReadDat(void); voidWriteDat(void); voidStrOR(void) { inti; charbefore[80],after[80],*p; for(i=0;i while (1){ p=strchr(xx[i],'o'); if(p! =NULL){ \TABstrcpy(after,xx[i]+(p-xx[i]+1)); \TAB*p=0; \TABstrcpy(before,xx[i]); \TABstrcpy(xx[i],after); \TABstrcat(xx[i],before); } elsebreak; } } } voidmain() { if(ReadDat()){ printf("数据文件IN.DAT不能打开! \n\007"); return; } StrOR(); WriteDat(); } intReadDat(void) { FILE*fp; inti=0; char*p; if((fp=fopen("c: \\test\\IN.DAT","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("c: \\test\\OUT.DAT","w"); for(i=0;i printf("%s\n",xx[i]); fprintf(fp,"%s\n",xx[i]); } fclose(fp); } ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※ 第08套: 函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到无符号字符串 数组xx中;请编制函数ChA(),其函数的功能是: 以行为单位把字符串中的第一 个字符的ASCII值加第二个字符的ASCII值,得到第一个新的值,存入数组单元 xx[i][0]中(其中: i是文章中的某行)。 第二个字符的ASCII值加第三个字符的 ASCII值,得到第二个新的值,存入数组单元xx[i][1]中。 以此类推一直处理到最 后第二个字符,最后一个字符的ASCII值加原第一个字符的ASCII值,得到最后一 个新的值,存放在原字符串对应的位置上,之后把已处理的字符串逆转后仍按行 重新存入无符号字符串数组xx中。 最后main()函数调用函数WriteDat()把结果xx 输出到OUT.DAT文件中。 原始数据文件存放的格式是: 每行的宽度均小于80个字符,含标点符号和空 格,并也按它的ASCII值作以上处理。 注意: 部分源程序存放在PROG1.C中。 请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat() 的内容。 参考答案: #include #include unsignedcharxx[50][80]; intmaxline=0;/*文章的总行数*/ intReadDat(void); voidWriteDat(void); voidChA(void) { inti,j; charyuan; for(i=0;i yuan=xx[i][0]; for(j=0;j<(int)strlen(xx[i])-1;j++)xx[i][j]+=xx[i][j+1]; xx[i][strlen(xx[i])-1]+=yuan; strrev(xx[i]); } } voidmain() { if(ReadDat()){ printf("数据文件IN.DAT不能打开! \n\007"); return; } ChA(); WriteDat(); } intReadDat(void) { FILE*fp; inti=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 三级