收藏 分销(赏)

教材程序设计题答案.doc

上传人:xrp****65 文档编号:7032172 上传时间:2024-12-25 格式:DOC 页数:10 大小:60KB 下载积分:10 金币
下载 相关 举报
教材程序设计题答案.doc_第1页
第1页 / 共10页
教材程序设计题答案.doc_第2页
第2页 / 共10页


点击查看更多>>
资源描述
1.设计程序:z=f(x,y)=(3.14*x-y)/(x+y),若x、y取值为区间[1,6]的整数,找出使z取最小值的x1、y1,并将x1、y1以格式"%d,%d"写入到考生目录中Paper子目录下的新建文件design.dat中。 #include <stdio.h> void main() { FILE *p; float f(float x,float y),min; int x,y,x1,y1; p=fopen("design.dat","w"); /*注意这里的路径根据考试环境改为考生文件夹路径*/ min=f(1,1);x1=y1=1; for(x=1;x<=6;x++) for(y=1;y<=6;y++) if(f(x,y)<min) {min=f(x,y); x1=x; y1=y; } fprintf(p,"%d,%d",x1,y1); fclose(p); } float f(float u,float v) { return (3.14*u-v)/(u+v); } 2.设计程序:在整数数组a中找出偶数放到b数组中,对b数组按从小到大的顺序进行排序后以格式"%3d"每行3个数写到考生目录中Paper子目录下的新建文件design.dat中。 #include "Stdio.h" main() {FILE *p; int i,j,temp,n=0; int a[10]={7,6,20,3,14,88,53,62,10,29},b[10]; j=0; p=fopen("design.dat","w"); for(i=0;i<10;i++) if (a[i]%2==0){b[j]=a[i];j++;} n=j; /*n为b数组中元素个数*/ for(i=0;i<n;i++) for(j=i+1;j<n;j++) if(b[i]>b[j]) {temp=b[i]; b[i]=b[j]; b[j]=temp; } for(i=0;i<n;i++) {if(i%3==0)fprintf(p,"\n"); fprintf(p,"%3d",b[i] ); } fclose(p); } 3.设计程序:将数组a的每1行均除以该行上绝对值最大的元素,然后将a数组写入到考生目录中Paper子目录下的新建文件design.dat中。 #include "Stdio.h" #include "math.h" main() { float a[3][3]={{1.3,2.7,3.6},{2,3,4.7},{3,4,1.27}}; FILE *p; float x;int i,j; for(i=0;i<3;i++) {x=a[i][0];/*将每行第一个元素暂定为绝对值最大的元素*/ for(j=0;j<3;j++) if(abs(a[i][j])>abs(x)) x=a[i][j]; for(j=0;j<3;j++) a[i][j]=a[i][j]/x; } p=fopen("design.dat","w"); for(i=0;i<3;i++) {for(j=0;j<3;j++) fprintf(p,"%10.6f",a[i][j]); fprintf(p,"\n"); } fclose(p); 4.设计程序:计算表达式1+2!+3!+...+12!的值,并将计算结果以格式 "%ld" 写入到考生目录中Paper子目录下的新建文件design.dat中。 #include "Stdio.h" #include "Conio.h" main() { FILE *p;long s=1,k=1;int i; p=fopen("design.dat","w"); for(i=2;i<=12;i++) {k=k*i; s+=k; } fprintf(p,"%ld",s); fclose(p); } 5.设计程序:将字符串s中的所有字符按ASCII值从小到大重新排序后,将排序后的字符串写入到考生目录中Paper子目录下的新建文件design.dat中。 #include "Stdio.h" #include "string.h" main() { FILE *p;char *s="634,.%@\\w|SQ2",c; int i,j,k,n=strlen(s); p=fopen("design.dat","w"); for(i=0;i<n;i++) /*用选择排序法*/ for(j=i+1;j<n;j++) if (s[i]>s[j]) {c=s[i];s[i]=s[j];s[j]=c;} for(i=0;i<n;i++)fputc(s[i],p); fclose(p); } 6.设计程序:数列第1项为81,此后各项均为它前1项的正平方根,统计该数列前30项之和,并以格式"%.3f"写到考生目录中Paper子目录下的新建文件design.dat中。 #include "Stdio.h" #include "math.h" main() { FILE *p;float s=0,a=81;int i; p=fopen("design.dat","w"); s=81; for(i=1;i<30;i++) { s=s+sqrt(a); a=sqrt(a); } fprintf(p,"%.3f",s); fclose(p); } 7.设计程序:寻找并输出11至999之间的数m,它满足m、m*m、m*m*m均为回文数。所谓回文数是指各位数字左右对称,例如121、676、94249等。满足上述条件的数如m=11,m^2=121,m^3=1331皆为回文数。请编制函数int JSValue(long m)实现此功能,如果是回文数,则函数返回1,反之则返回0。最后把结果输出到考生目录中Paper子目录下的新建文件design.dat中。 方法一: #include "Stdio.h" #include "stdlib.h" #include "string.h" int jsvalue(long m) /*判断是否是回文数的函数,是则返回1,否则返回值为0*/ { char s[20]; int w,i=0; while(m>0) /*此循环实现将数m的各位数字转换为字符存放在字符数组s中 */ {w=m%10; s[i++]=w+'0'; /*将数字w转换为字符存放在字符数组元素s[i]中*/ m=m/10; } w=i; i=0; while(i<w/2) /*此循环实现将字符数组s中存放的字符,从首尾开始依次比较*/ {if (s[i]!=s[w-1-i]) return 0; i++; } return 1; } main() {FILE *p;long m; p=fopen("design.dat","w"); for(m=11;m<1000;m++) if(jsvalue(m)&&jsvalue(m*m)&&jsvalue(m*m*m)) fprintf(p,"%ld",m); /*说明:最后在design.dat中输出的三个数11、101、111是连写在一起的*/ fclose(p); } 方法二:jsvalue函数编写的另一种方法 int jsvalue(long x) { long s,y,pw=1;int d; s=x; /*用s变量存放x的值*/ while(x>0) {pw=pw*10; x=x/10; } pw=pw/10; y=0; x=s; /*用s变量的值恢复x的值*/ while(x>0) {d=x%10; y=y+d*pw; pw=pw/10; x=x/10; } x=s; /*用s变量的值恢复x的值*/ if(x==y)return 1; else return 0; } 方法三:jsvalue函数编写的另一种方法 (最简单) int jsvalue(long x) { long y=0,z=x; while(x!=0) { y=y*10+x%10; x/=10; } if(z==y)return 1; else return 0; } 8.设计程序:计算多项式 a0+a1*sin(x)+a2*sin(x*x)+a3*sin(x*x*x)+……+a9*sin(x*x*x*x*x*x*x*x*x)的值,并将其值以格式"%.6f"写入到考生目录中Paper子目录下的新建文件design.dat中。 #include "Stdio.h" #include "math.h" main() {FILE *p; int i;float x=2.345,t=1.0,y=0.0; float a[10]={1.2,-1.4,-4.0,1.1,2.1,-1.1,3.0,-5.3,6.5,-0.9}; p=fopen("design.dat","w"); y= a[0]; for(i=1;i<10;i++) {t=t*x; y=y+a[i]*sin(t); } fprintf(p,"%.6f",y); fclose(p); } 9.设计程序:对x=1,2,...,10,求函数f(x)=x-10*cos(x)-5*sin(x)的最大值,并将该数以格式"%.3f"写到考生目录中Paper子目录下的新建文件design.dat中。 #include "Stdio.h" #include "math.h" main() {FILE *p;float f(float),max,x; p=fopen("design.dat","w"); max=f(1); /*暂定f(1)的值为最大值*/ for(x=2;x<=10;x++) if(f(x)>max) max=f(x); fprintf(p,"%.3f",max); fclose(p);} float f(float x) {float y; y=x-10*cos(x)-5*sin(x); return y; } 10.设计程序:统计满足条件x*x+y*y+z*z==2000的所有解的个数,并将统计结果以格式"%d"写入到考生目录中Paper子目录下的新建文件design.dat中说明:若a、b、c是1个解,则a、c、b也是1个解,等等。 #include "Stdio.h" main() {FILE *p;int x,y,z,k=0; p=fopen("design.dat","w"); for(x=0;x<50;x++) /*因为50的平方为2500,所以x最大不超过50*/ for(y=0;y<50;y++) /*若不允许重复解改为for(y=x;y<50;y++) */ for(z=0;z<50;z++) /*若不允许重复解改为for(z=y;z<50;z++) */ if(x*x+y*y+z*z==2000)k++; fprintf(p,"%d",k); fclose(p); } 11.设计程序:z=f(x,y)=10*cos(x-4)+5*sin(y-2),若x,y取值为区间[0,10]的整数,找出使z取最小值的x1,y1,并将x1、y1以格式"%d,%d"写入到考生目录中Paper子目录下的新建文件design.dat中。 #include "Stdio.h" #include "math.h" main() { FILE *p; int x,y,x1,y1;float z,z1;; p=fopen("design.dat","w"); z1=10*cos(-4)+5*sin(-2); /*暂定f(0,0)为最小值并存放在z1中*/ x1=0;y1=0; for(x=0;x<=10;x++) for(y=0;y<=10;y++) {z=10*cos(x-4)+5*sin(y-2); if(z1>z){z1=z;x1=x;y1=y;} } fprintf(p,"%d,%d",x1,y1); fclose(p); } 12.设计程序:计算数列1,-1/3!,1/5!,-1/7!,1/9!,...的和至某项的绝对值小于1e-5时为止(该项不累加),将求和的结果以格式"%.6f"写到考生目录中Paper子目录下的新建文件design.dat中。 #include "Stdio.h" #include "math.h" main() {FILE *p; float s=1,t=1,i=3; p=fopen("design.dat","w"); while(fabs(t)>1e-5) /*绝对值小于1e-5的项不累加,先判断数据项是否满足条件再累加*/ { t=-t/(i*(i-1)); s=s+t;i=i+2; } fprintf(p,"%.6f",s); fclose(p); } 13.设计程序:计算多项式a0-a1*x+a2*x*x/2!-a3*x*x*x/3!+...-a9*x*x*x*x*x*x*x*x*x/9!的值,并将其以格式"%f"写到考生目录中Paper子目录下的新建文件design.dat中。 #include "Stdio.h" #include "math.h" main() {FILE *p;int i;float x=1.279,t,y; float a[10]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65}; p=fopen("design.dat","w"); y=a[0]; t=1; for(i=1;i<10;i++) {t=-t*x/i; /*利用循环连除i的技巧实现求阶乘*/ y=y+t*a[i]; } fprintf(p,"%f",y); fclose(p); } 14.设计程序:求解百鸡问题。已知公鸡每只5元、母鸡每只3元、小鸡1元3只。求出用100元买100只鸡的解。将得到的解按公鸡、母鸡和小鸡的只数以"%d,%d,%d\n"的格式写入到考生目录中Paper子目录下的新建文件design.dat中。 #include "Stdio.h" main() { FILE *p; int cock,hen,chick; p=fopen("design.dat","w"); fprintf("cock hen chick\n"); for(cock=0;cock<=20;cock++) for(hen=0;hen<=33;hen++) for(chick=0;chick<=100;chick++) if((cock+hen+chick= =100)&&((cock*5+hen*3+chick/3)= =100)) fprintf(p,"%d,%d,%d\n",cock,hen,chick); fclose(p); } 15.设计程序:在6至5000内找出所有的亲密数对,并将每对亲密数用语句 fprintf(p,"%6d,%6d\n",a,b);”写到考生目录中Paper子目录下的新建文件design.dat中。说明:若a、b为1对亲密数,则a的因子和等于b、b的因子和等于a、且a不等于b。 如:220、284是1对亲密数,284、220也是1对亲密数。 #include "Stdio.h" main() { FILE *p;int a,b,c,k; p=fopen("design.dat","w"); for(a=6;a<=5000;a++) {b=1; /*用b存放a的因子和*/ for(k=2;k<=a/2;k++) /*任何数的因子不会大于该数的一半,所以k的最大取值为a/2*/ if(a%k= =0)b=b+k; c=1; /*用c存放b的因子和*/ for(k=2;k<=b/2;k++) if(b%k==0)c=c+k; if(c==a&&a!=b&&(6<=b&&b<=5000)) /*难点:因为b中存放的是a的因子和,所以这里判断b的因子和c是否等于a*/ fprintf(p,"%6d,%6d\n",a,b); } fclose(p); } 16.设计程序:x[i],y[i]分别表示平面上一个点的坐标,求下列10个点与点(1.0,1.0)的距离的总和,并将结果以格式"%.6f"写入到考生目录中Paper子目录下的新建文件design.dat中。 #include "Stdio.h" #include "math.h" main() {FILE *p; int i; float x[10]={-1.5,2.1,6.3,3.2,-0.7,7.0,5.1,3.2,4.5,7.6}; float y[10]={3.5,7.6,8.1,4.5,6.0,1.1,1.2,2.1,3.3,4.4}; float s=0.0; p=fopen("design.dat","w"); for(i=0;i<10;i++) s=s+sqrt((x[i]-1)*(x[i]-1)+(y[i]-1)*(y[i]-1)) ; fprintf(p,"%.6f",s); fclose(p); } 17.设计程序:计算2的平方根、3的平方根、...、10的的平方根之和,要求计算结果具有小数点后10位有效位数,并以格式"%.10lf\n"写到考生目录中Paper子目录下的新建文件design.dat中。 #include "Stdio.h" #include "math.h" main() {FILE *p; int i; double s=0.0000000000; p=fopen("design.dat","w"); for(i=2;i<=10;i++) s=s+sqrt(i); fprintf(p,"%.10lf",s); fclose(p); } 18. 设计程序:将数组a的每1行均除以该行上的主对角元素(第1行同除以a[0][0],第2行同除以a[1][1],...),然后将a数组写入到考生目录中Paper子目录下的新建文件design.dat中新建的文件design.dat中。 #include "Stdio.h" #include "math.h" main() { float a[3][3]={{1.3,2.7,3.6},{2,3,4.7},{3,4,1.27}}; FILE *p; int i,j; for(i=0;i<3;i++) for(j=0;j<3;j++) a[i][j]=a[i][j]/a[i][i] ; p=fopen("design.dat","w"); for(i=0;i<3;i++) {for(j=0;j<3;j++) fprintf(p,"%10.6f",a[i][j]); fputs(p,"\n"); } fclose(p);} 19. 设计程序:在数组a的10个数中求平均值v,将大于等于v的数组元素进行求和,并将结果以格式"%.5f"写到考生目录中Paper子目录下的新建文件design.dat中。 #include "Stdio.h" main() { FILE *p; int i; float a[10]={7.23,1.5,5.24,2.1,2.45,6.3,5,3.2,0.7,9.81},sum,v=0; sum=0; p=fopen("design.dat","w"); for(i=0;i<10;i++) sum=sum+a[i]; v=sum/10; sum=0; for(i=0;i<10;i++) if(a[i]>=v)sum+=a[i]; fprintf(p,"%.5f",sum); fclose(p); } 20.设计程序:计算字符串s中每个字符的权重值,所谓权重值就是字符在字符串中的位置值与该字符的ASCII码值的乘积。位置值从1开始依此递增。将每个字符的权重值,以格式"%d "写入到考生目录中Paper子目录下的新建文件design.dat中。 #include "Stdio.h" #include "math.h" main() {FILE *p; int i,w; char *s="we45*&y3r#$1"; p=fopen("design.dat","w"); i=0; while(s[i]!='\0') {w=(i+1)*s[i]; fprintf(p,"%d ",w); i++; } fclose(p); } 21.设计程序:数组元素x[i]、y[i]表示平面上某点坐标,统计所有各点间最短距离,并将其值以格式"%f"写到考生目录中Paper子目录下的新建文件design.dat中。 #include "Stdio.h" #include "math.h" #define len(x1,y1,x2,y2) sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)) main() { FILE *p; int i,j; float c,minc; float x[]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65}; float y[]={-6,4.3,4.5,3.67,2.42,2.54,5.6,-0.97,4.65,-3.33}; minc=len(x[0],y[0],x[1],y[1]); p=fopen("design.dat","w"); for(i=0;i<10;i++) for(j=i+1;j<10;j++) /*对不相同的两点计算距离*/ { c=len(x[i],y[i],x[j],y[j]); if(c<minc)minc=c; } } fprintf(p,"%f",minc); fclose(p); }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服