资源描述
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);
}
展开阅读全文