加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

《C语言程序设计》综合实验1~5习题参考答案

(2009-09-16 20:05:49)
标签:

教育

//综合实验1 问题:设计程序:若a,b为1对亲密数,则a的因子和等于b,b的因子和等于a, 且a不等于b。
//如:220、284是1对亲密数,284、220也是一对亲密数。在6~5000内找出所有的亲密数对,并将每对
//亲密数对用语句fprintf(p,"%6d,%6d\n",a,b)写入到当前目录下新建文件design.dat中。

#include <stdio.h>

void main()
{
 FILE *p;
 int a,b,c,k;
 int f[5001];//存放6~5000之间各数的因子和
 p=fopen("design1.dat","w");

 //在这里添加代码 
 for(a=6;a<=5000;a++)
 {
  c=0;
  for(k=1;k<=a/2;k++)
  {
   if(a%k==0)
    c+=k;
  }
  f[a]=c;
 }

 for(a=6;a<=5000;a++)
 {
  for(b=7;b<=4999;b++)
  {
   if((f[a]==b)&&((f[b]==a))&&(a!=b))
    fprintf(p,"%6d,%6d\n",a,b);
  }
 }
 fclose(p);
}

//from 郑慧婕
#include<stdio.h>

void main()
{
 FILE *p;
 int a,b,c,k;

 p=fopen("design1z.dat","w");

 a=6;
 while(a<=5000)
 {
  c=0;
  for(k=1;k<=a/2;k++)
   if(a%k==0)
    c+=k;
  b=c;
  
  c=0;  
  for(k=1;k<=b/2;k++)
   if(b%k==0)
    c+=k;
  if((c==a)&&(b!=a))
   fprintf(p,"%6d,%6d\n",a,b);
  a++;
 }
 fclose (p);
}

 

//综合实验2 问题:设计程序:编制函数JSValue(long m)用于判断m是否是回文数。如果是,则函数返回1,反之返回0。
//主函数调用函数JSValue(long m),寻找并输出11至999之间的数m, 它满足m、m*m、m*m*m均为回文数,最后把找
//到的数写入到当前目录下新建文件Design2.dat中。说明:所谓的回文数是指各位数字左右对称,例如121、676、94249
//等。满足上述条件的数如m=11, m^2=121, m^3=1331皆为回文数。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int JSValue(long m)
{
//在这里添加代码 

 int i,j,dm,a[100];//a-数组,从低位到高位保存m各数位上的数字

 i=0;
 while(m>0)
 {
  dm=m%10;
  a[i]=dm;
  i++;
  m/=10;
 }

 for(j=0;j<i;j++,i--)
 {
  if(a[j]!=a[i-1])
   return 0;
 }
 return 1;
}

void main()
{
//在这里添加代码 

 FILE *p;
 int n;
 p=fopen("design2.dat","w");

 for(n=11;n<=999;n++)
 {
  if(JSValue(n)&&JSValue(n*n)&&JSValue(n*n*n))
   fprintf(p,"%6d\n",n);
 
 fclose(p);
}

 

//综合实验3 问题:设计程序:在数组x的10个数中求平均值v,找出与v相差最小的数组元素并将其以格式“%.5f”写到
//当前目录下新建文件design3.dat中

#include <stdio.h>
#include <math.h>
void main()
{
 FILE *p;
 int i,k=0;
 float x[10]={7.23,-1.5,5.24,2.1,-12.45,6.3,-5,3.2,-0.7,9.81},d,v=0;
 float  dmin;
 for(i=0;i<10;i++)
  v+=x[i];
 v=v/10;
 d=fabs(x[0]-v); 
 //在这里添加代码
    dmin=fabs(x[0]-v);
 p=fopen("design3.dat","w");
 for(i=1;i<10;i++)
 {
  if(fabs(x[i]-v)<d)
  {
   d=fabs(x[i]-v);
   k=i;
   dmin=fabs(x[i]-v);
   
 }
 for(i=1;i<10;i++)
 {
  if(fabs(fabs(x[i]-v)-dmin)<=1.0e-9)
  {
      fprintf(p,"%.5f\n",x[i]);
    
  
 fclose(p);
}

 //综合实验4 问题:设计程序:编写函数f(x,y),计算z的值并返回,其中z=f(x,y)=(3.14*x-y)/(x+y),函数类型为float。编写主函数,
 //若x、y取值为区间[1,6]的整数,调用函数f(x,y),找出使z取最小值的x1、y1,并将x1、y1以格式"%d,%d" 写入到当前目录
 //下新建文件design4.dat中

#include <stdio.h>
void main()
FILE *p;
 float f(float x,float y),min;
 int x,y,x1,y1;
 //在这里添加代码 
 p=fopen("design4.dat","w"); 
 x1=1; y1=1; min=f(x1,y1);
 for(x=1;x<=6;x++)
 {for(y=1;y<=6;y++)
  {
  if(f(x,y)<min)
   {
   x1=x;    
   y1=y;    
   min=f(x1,y1);
    
  }
 }
 fprintf(p,"%d,%d\n",x1,y1);
 fclose(p);
}

float f(float u,float v)
{//在这里添加代码 
 
 float fv; 
fv=(3.14*u-v)/(u+v);
 return fv;
}

 

//综合实验5 问题:利用公式π/4≈1-1/3+1/5-1/7+... ...公式计算π的近似值,直到某一项的绝对值小于1e-6为止。
//(π/4的结果不包含此项)将计算结果以格式“%.6f”写入到当前目录下新建文件design5.dat中。

#include <stdio.h>
#include <math.h>
void main()
{
 FILE *fp;
 float n=1,t=1,pi=0;
 int i;
 //在这里添加代码
 fp=fopen("design5.dat","w");

 while(fabs(1.0/(2.0*n-1.0))>1e-6)
 {
  pi+=4.0*t/(2.0*n-1.0);
  n++;
  t=-t;
 }
 fprintf(fp,"%.6f\n",pi);

 fclose(fp);
}

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有