- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
吉林大学历年C语言程序设计试题及答案
吉林大学历年C语言程序设计试题及答案(5)END
2000年试题答案
一、(1)解题思想: 用5个数 a,b,c,d,e,来回替换,最终f(n)算出。
设计程序如下:
int F(int n)
{ if(n =5) return n ;
int temp,a=1;b=2;c=3;d=4;e=5;
for(int i=6;i =n;i++) {
temp=e-c-a; a=b; b=c; c=d; d=e; e=temp; }
return e;
}
(2)解题思想: 根据园相切的定义: 圆心之间的距离等于半径之和或半径之差,判断一下即可。设圆心坐标和园的半径已经存在数组x[100],y[100],r[100]中。注意,相切包括内切和外切。
设计程序如下:
#include
#include
struct node
{ int m ; int n ;
node *next; };
double d(int i,int j)
{ return sqrt((x-x[j])*(x-x[j])+(y-y[j])*(y-y[j])); }
node *fun(void)
{ node *head=NULL;
node *p;
for(int i=0;i for(int j=i+1;j
if((d(i,j)==r+r[j])||(d(i,j)==r-r[j])||(d(i,j)==r[j]-r)) {
p=new node;
p- m=i;
p- n=j;
p- next=head;
head=p; }
return head;
}
(3) #include
const int N=10;
int fun()
{ int i,j,k,a[N][N],b[N][N],m,s,p;
for(i=0;i for(j=0;j for(i=0;i for(j=0;j
p=1;
for(i=0;i m=1; for(j=0;j s=0;
for(k=0;k 10;k++) s+=a[k]*b[k][k];
p*=b*(m+s); }
return p;
}
(4)解题思想:根据题目要求把数组a和b扫描一次,即可求c。
#include
const int m=3,n=4;
void fun(float a[],float b[],float c[])
{ float p;
p=0;
for(int k=0;k
p=0;
for(int i=0;i =m;i++)
for(int j=0;j =n;j++)
if(i+j==k) p+=a*b[j];
c[k]=p; }
}
二、解题思想:这实际上是积分过程的模拟,在区间[o,N]上,可以先划分出N个小区间,如果不能满足题目的精确度,则继续划分成2×N个区间,那么当区间个数足够多时,总可以满足精确度要求。在判断误差时,可以使用积分大和与积分小和相减的方法。
设计程序如下:
#include
#include
double function(int N,double e)
{ double s1=0,s2=10;
float M=N;
while (fabs(s2-s1) =e) {
s1=0;s2=1;
for(int i=0;i
s1=F(i*N/M)*N/M+s1;
s2=F((i+1)*N/M)*N/M+s2; }
N=M*2; }
return s1;
}
三、解题思想:用直接插入排序法进行集合的并运算,可以保证集合中没有相同的元素。其中集合元素产生时用到了函数指针。
#include
typedef int(*MenuFun)(int);
int F1(int x){return x*x+1;}
int F2(int x){return 2*x*x+1;}
int F3(int x){return 3*x*x+1;}
int F4(int x){return 4*x*x+1;}
int F5(int x){return 5*x*x+1;}
int F6(int x){return 6*x*x+1;}
int F7(int x){return 7*x*x+1;}
int F8(int x){return 8*x*x+1;}
int F9(int x){return 9**x+1;}
int F10(int x){return 10*x*x+1;}
MenuFun F[10]={F1,
文档评论(0)