c语言程序设计自第五个实验开始源代码1资料Word格式.docx

上传人:b****4 文档编号:15915030 上传时间:2022-11-17 格式:DOCX 页数:30 大小:97.61KB
下载 相关 举报
c语言程序设计自第五个实验开始源代码1资料Word格式.docx_第1页
第1页 / 共30页
c语言程序设计自第五个实验开始源代码1资料Word格式.docx_第2页
第2页 / 共30页
c语言程序设计自第五个实验开始源代码1资料Word格式.docx_第3页
第3页 / 共30页
c语言程序设计自第五个实验开始源代码1资料Word格式.docx_第4页
第4页 / 共30页
c语言程序设计自第五个实验开始源代码1资料Word格式.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

c语言程序设计自第五个实验开始源代码1资料Word格式.docx

《c语言程序设计自第五个实验开始源代码1资料Word格式.docx》由会员分享,可在线阅读,更多相关《c语言程序设计自第五个实验开始源代码1资料Word格式.docx(30页珍藏版)》请在冰豆网上搜索。

c语言程序设计自第五个实验开始源代码1资料Word格式.docx

if(k%m==0)break;

if(m>

=k)/*两位数是素数时*/

{p=i%10;

/*p为个位数字*/

for(q=2;

q<

p;

q++)

if(p%q==0)break;

if(q>

=p)n++;

}}}}

printf("

%d\n"

n);

}

Key:

57

5.求[2,400]中相差为10的相邻素数对的对数。

for(i=2;

=400;

=i)/*i是素数时*/

{for(k=i+1;

k<

i+10;

k++)

/*k不是素数时终止if语句的内层循环*/

=k)break;

}/*k是素数时终止if语句的外层循环*/

=i+10)/*[i+1,i+9]不是素数时*/

{for(q=2;

if(k%q==0)break;

=k)/*i+10是素数时*/

n++;

}}}

5

6.求[1,21]范围内的梅森尼数

#include"

math.h"

main()

{longn,k=2,m,p,q;

for(n=2;

n<

=21;

n++)

{k=k*2;

p=k-1;

m=sqrt(p);

for(q=2;

=m;

if(p%q==0)break;

if(q>

m)printf("

%5ld"

}}

2357131719

7.求1000以内的亲密数对

main()

{inta,b,n,m,q,p;

for(a=1;

a<

1000;

a++)

{n=0;

for(q=1;

=a/2;

if(a%q==0)n+=q;

for(b=a;

b<

=1000;

b++)

{m=0;

for(p=1;

p<

=b/2;

p++)

if(b%p==0)m+=p;

if(a==m&

&

b==n)printf("

%5d%5d"

a,b);

}}}/*Key:

662828220284496496*/

实验6数组及其应用

3.由N个有序整数组成的数列已放在一维数组中,下列给定程序中函数fun的功能是:

利用折半查找法查找整数m在数组中的位置。

若找到,返回其下标值;

否则,返回-1。

折半查找的基本算法是:

每次查找前先确定数组中待查的范围low和high(low<

high),然后用m与中间位置(mid)上元素的值进行比较。

如果m的值大于中间位置元素的值,则下一次的查找范围落在中间位置之后的元素中;

反之,下一次的查找范围落在中间位置之前的元素中。

直到low>

high,查找结束。

请改正程序中的错误,使它能得出正确的结果。

#include<

stdio.h>

#defineN10

{inti,a[N]={-3,4,7,9,13,45,67,89,100,180},k=-1,m;

intlow=0,high=N-1,mid;

printf("

a数组中的数据如下:

"

);

for(i=0;

N;

i++)printf("

%d"

a[i]);

Enterm:

"

scanf("

%d"

&

m);

while(low<

=high)

{mid=(low+high)/2;

if(m<

a[mid])

high=mid-1;

/************found************/

elseIf(m>

a[mid])

low=mid+1;

else{k=mid;

continue;

}}

=0)printf("

m=%d,index=%d\n"

m,k);

elseprintf("

Notbefound!

\n"

第一个错误:

elseIf(m>

a[mid])应改为:

elseif(m>

a[mid])因C语言关键字必须小写。

第二个错误:

else{k=mid;

}应改为:

break;

}因找到就可终止循环。

4.有一个3*4矩阵,找出每行中最大的元素并与第1列元素交换。

具体要求如下:

(1)使用二维数组存放该3*4矩阵。

(2)定义并初始化该二维数组。

(3)输出原矩阵和处理后的矩阵进行比较。

【程序源代码】

{inti,j,k,temp;

intdata[3][4]={{12,15,7,11},{14,6,10,21},{25,7,16,45}};

theoriginalmatrix:

=2;

{for(j=0;

=3;

%d\t"

data[i][j]);

/*打印原矩阵*/

}

{

k=0;

for(j=1;

if(data[i][j]>

data[i][k])

k=j;

temp=data[i][0];

data[i][0]=data[i][k];

data[i][k]=temp;

}/*求每行最大数并与第1列上的元素交换*/

\nthehandledmatrix:

{

for(j=0;

}/*打印处理后矩阵,此时第1列上的元素为每行的最大数*/

5.猴子选大王问题:

n个人围坐一圈,并顺序编号1~n,从1号开始数,每数到m个就让其出局,重复...。

求最后出局者的编号。

当n=50,m=3时,答案为11

(1)使用一维数组存放每个人的编号,每数到m个数就让其出局,出局者编号为0。

(2)使用for循环嵌套实现。

{inta[51],i,j,m=0,n;

for(i=1;

=50;

i++)a[i]=i;

/*为了符合习惯,数组下标从1开始,下标就是编号*/

=50/3;

j++)/*外层循环最多循环50/3次*/

{if(a[i]!

=0)m++;

/*对未出局者计数*/

if(m==3)a[i]=0,n=i,m=0;

/*对出局者编号为0,并保存原编号,计数从0开始*/

last:

%d\n"

}/*最后出局者的编号*/

实验7函数及其应用

3.排错题:

下列给定程序中函数fun的功能是:

用递归算法求形参a的平方根。

请改正

程序中的错误,使它能计算出正确的结果。

注意:

源程序不得增行或删行,也不得更改程序

的结构!

例如,a为2时,平方根值为:

1.414214。

math.h>

/**********found**********/

voidfun(doublea,doublex0)

{doublex1,y;

x1=(x0+a/x0)/2.0;

if(fabs(x1-x0)<

=0.00001)

y=fun(a,x1);

elsey=x1;

returny;

main()

{doublex;

Enterx:

%lf"

x);

Thesquarerootof%lfis%lf\n"

x,fun(x,1.0));

voidfun(doublea,doublex0)应改为:

doublefun(doublea,doublex0)因根据题意,需通过调用fun()函数返回a的平方根,故必须将void改为double,否则不能用带值的return语句。

自增。

=0.00001)应改为:

if(fabs(x1-x0)>

=0.00001)因只有fabs(x1-x0)>

=0.00001才须递归。

4.设计一个程序,判断一个整数n是否是素数。

(1)编制一个函数intprime(number),判断整数number是否是素数。

(2)编制主函数,由键盘输入整数number,调用

(1)中的函数,若返回值为真则是素

数,否则不是素数。

(3)分别用以下数据运行该程序:

103,117。

{intnumber;

请输入一个正整数:

scanf("

%d"

number);

if(prime(number))

\n%d是素数."

number);

else

\n%d不是素数."

intprime(number)

intnumber;

{intflag=1,n;

for(n=2;

number/2&

flag==1;

if(number%n==0)

flag=0;

return(flag);

5.编写程序,通过两个自定义函数分别求两个正数的最大公约数和最小公倍数,用主函数调用这两个函数并输出结果。

两个正数由键盘输入。

(1)用辗转相除法实现。

(2)输出要有文字说明,输出形式为:

最大公约数=具体值,最小公倍数=具体值

8和26,64和258

(4)辗转相除法:

对于两个数m和n,将大数放在m中,小数放在n中,用n去除m,

若余数为0,则n为最大公约数,否则将n作为m,余数作为n,再用n去除m,

直到余数为0,则n为最大公约数。

#includ

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1