第一范文网 - 专业文章范例文档资料分享平台

c语言程序设计自第五个实验开始源代码(1)

来源:用户分享 时间:2025/8/27 0:19:23 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

实验5三种基本结构的综合应用

4.一个素数(设为p)依次从最高位去掉一位,二位,三位,……,若得到的各数仍都是素数(注:除1和它本身外,不能被其它整数整除的正整数称为素数,1不是素数,2是素数),且数p的各位数字均不为零,则称该数p为逆向超级素数。例如,617,17,7都是素数,因此617是逆向超级素数,尽管503,03,3都是素数,但它不是逆向超级素数,因为它包含有零。试求[100,999]之内的所有逆向超级素数的个数。

#include \main()

{int i,j,k,m,p,q,n=0; for(i=100;i<=999;i++) {for(j=2;j

if(j>=i) /*三位数是素数时*/ {k=i0; /*去掉百位数字*/ if(k>=10) /*十位数字不是0时*/ {for(m=2;m

if(m>=k) /*两位数是素数时*/ {p=i; /*p为个位数字*/

for(q=2;q=p)n++;}}}}

printf(\Key:57

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

#include \main()

{int i,j,k,m,p,q,n=0; for(i=2;i<=400;i++) {for(j=2;j

if(j>=i) /*i是素数时*/ {for(k=i+1;k

if(k%m==0)break;/*k不是素数时终止if语句的内层循环*/ if(m>=k)break;} /*k是素数时终止if语句的外层循环*/ if(k>=i+10) /*[i+1,i+9]不是素数时*/ {for(q=2;q

if(k%q==0)break; if(q>=k) /*i+10是素数时*/ n++;}}}

printf(\Key:5

6.求[1,21]范围内的梅森尼数 #include \ main()

{long n,k=2,m,p,q; for(n=2;n<=21;n++)

{ k=k*2; p=k-1; m=sqrt(p);

for(q=2;q<=m;q++) if(p%q==0) break;

if(q>m) printf(\

Key: 2 3 5 7 13 17 19

7.求1000以内的亲密数对 main()

{int a,b,n,m,q,p; for(a=1;a<1000;a++) {n=0; for(q=1;q<=a/2;q++) 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(\496*/

实验6 数组及其应用

3.由N个有序整数组成的数列已放在一维数组中,下列给定程序中函数fun的功能是:利用折半查找法查找整数m在数组中的位置。若找到,返回其下标值;否则,返回-1。

折半查找的基本算法是:每次查找前先确定数组中待查的范围low和high(low

的查找范围落在中间位置之后的元素中;反之,下一次的查找范围落在中间位置之前的元素中。直到low>high,查找结束。请改正程序中的错误,使它能得出正确的结果。

#include #define N 10 main()

{ int i,a[N]={-3,4,7,9,13,45,67,89,100,180 },k=-1,m; int low=0,high=N-1,mid; printf(\数组中的数据如下:\ for(i=0;i

/************found************/ else If(m > a[mid]) low=mid+1;

/************found************/ else {k=mid;continue;} }

if(k>=0) printf(\

else printf(\

Key:第一个错误:else If(m > a[mid]) 应改为:else if(m > a[mid]) 因C语言关键字必须小写。

第二个错误:else {k=mid;continue;} 应改为:else {k=mid;break;} 因找到就可终止循环。

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

(1)使用二维数组存放该3*4矩阵。 (2)定义并初始化该二维数组。

(3)输出原矩阵和处理后的矩阵进行比较。 【程序源代码】 #include \main() { int i,j,k,temp;

int data[3][4]={{12,15,7,11},{14,6,10,21},{25,7,16,45}}; printf(\ for(i=0;i<=2;i++) { for(j=0;j<=3;j++) printf(\

printf(\ /*打印原矩阵*/

}

for(i=0;i<=2;i++) {

k=0;

for(j=1;j<=3;j++) if(data[i][j]>data[i][k]) k=j;

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

} /*求每行最大数并与第1列上的元素交换*/ printf(\ for(i=0;i<=2;i++) {

for(j=0;j<=3;j++) printf(\ printf(\

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

5.猴子选大王问题:n个人围坐一圈,并顺序编号1~n,从1号开始数,每数到m个就让其出局,重复...。求最后出局者的编号。当n=50,m=3时 ,答案为11

具体要求如下:

(1)使用一维数组存放每个人的编号,每数到m个数就让其出局,出局者编号为0。 (2)使用for循环嵌套实现。 【程序源代码】 #include \main()

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

for(i=1;i<=50;i++)a[i]=i;/*为了符合习惯,数组下标从1开始,下标就是编号*/ for(j=1;j<=50/3;j++) /*外层循环最多循环50/3次*/ for(i=1;i<=50;i++)

{if(a[i]!=0)m++; /*对未出局者计数*/

if(m==3)a[i]=0,n=i,m=0;/*对出局者编号为0,并保存原编号,计数从0开始*/ }

printf(\最后出局者的编号*/

c语言程序设计自第五个实验开始源代码(1).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c67lf62445u4bptb11x4w7g2499ip7300mm3_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top