C语言实验八循环结构程序设计.docx

上传人:b****3 文档编号:11743282 上传时间:2023-06-02 格式:DOCX 页数:16 大小:149.18KB
下载 相关 举报
C语言实验八循环结构程序设计.docx_第1页
第1页 / 共16页
C语言实验八循环结构程序设计.docx_第2页
第2页 / 共16页
C语言实验八循环结构程序设计.docx_第3页
第3页 / 共16页
C语言实验八循环结构程序设计.docx_第4页
第4页 / 共16页
C语言实验八循环结构程序设计.docx_第5页
第5页 / 共16页
C语言实验八循环结构程序设计.docx_第6页
第6页 / 共16页
C语言实验八循环结构程序设计.docx_第7页
第7页 / 共16页
C语言实验八循环结构程序设计.docx_第8页
第8页 / 共16页
C语言实验八循环结构程序设计.docx_第9页
第9页 / 共16页
C语言实验八循环结构程序设计.docx_第10页
第10页 / 共16页
C语言实验八循环结构程序设计.docx_第11页
第11页 / 共16页
C语言实验八循环结构程序设计.docx_第12页
第12页 / 共16页
C语言实验八循环结构程序设计.docx_第13页
第13页 / 共16页
C语言实验八循环结构程序设计.docx_第14页
第14页 / 共16页
C语言实验八循环结构程序设计.docx_第15页
第15页 / 共16页
C语言实验八循环结构程序设计.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

C语言实验八循环结构程序设计.docx

《C语言实验八循环结构程序设计.docx》由会员分享,可在线阅读,更多相关《C语言实验八循环结构程序设计.docx(16页珍藏版)》请在冰点文库上搜索。

C语言实验八循环结构程序设计.docx

C语言实验八循环结构程序设计

实验八:

循环结构程序设计

一、实验目的:

1、熟悉掌握用while语句、do···while语句和for语句循环的方法。

2、掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等)。

3、进一步学习调用程序。

二、实验内容:

1、输入一个字符,分别统计出其中的英文字母、空格、数字和其他字符的个数。

(本题是教材第5章第4题)在得到正确结果后,请修改程序使之能分别统计大小写字母、空格、数字和其他字符的个数。

程序如下:

#include

intmain()

{

charc;

intletters=0,space=0,digit=0,other=0;

printf("请输入一行字符:

\n");

while((c=getchar())!

='\n')

{

if(c>='a'&&c<='z'||c>='A'&&c<='Z')

letters++;

elseif(c=='')

space++;

elseif(c>='0'&&c<='9')

digit++;

else

other++;

}

printf("字母数:

%d\n空格数:

%d\n数字数:

%d\n其他字符数:

%d\n",letters,space,digit,other);

return0;

}

输出结果:

 

2、输入两个正整数m,n,求其最大公约数和最小公倍数。

程序如下:

#include

intmain()

{ 

intp,r,m,n,temp;

printf("请输入两个正整数m,n:

");

scanf("%d,%d",&m,&n);

if(m>n)

{

temp=n;

n=m;

m=temp;

}

p=m*n;

while(m!

=0)

{

r=n%m;

n=m;

m=r;

}

printf("它们的最大公约数为:

%d\n",n);

printf("它们的最小公约数为:

%d\n",p/n);

return0;

}

输出结果:

 

3、输出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。

例如,153是一水仙花数,因为153=1^3+5^3+3^3(本题是教材第5章第8题).

程序如下:

/*Note:

YourchoiceisCIDE*/

#include"stdio.h"

intmain()

{

inti,j,k,n;

printf("parcissusnumbersare");

for(n=100;n<1000;n++)

{

i=n/100;

j=n/10-i*10;

k=n%10;

if(n==i*i*i+j*j*j+k*k*k)

printf("%d",n);

}

printf("\n");

return0;

}

输出结果:

 

4、有一分数序列:

求出这个数列的前20项之和。

程序如下:

#include

intmain()

{

inti,n=20;

doublea=2,b=1,s=0,t;

for(i=1;i<=n;i++)

{

s=s+a/b;

t=a,

a=a+b,

b=t;

}

printf("sum=%16.10f\n",s);

return0;

}

输出结果:

5、求

(书上的6题)

程序如下:

#include

intmain()

{

doubles=0,t=1;

intn;

for(n=1;n<=20;n++)

{

t=t*n;

s=s+t;

}

printf("1!

+2!

+3!

+...+20!

=%22.15e\n",s);

return0;

}

输出结果:

6、求

(课后第7题)

程序如下:

#include

intmain()

{

doublek,s1=0,s2=0,s3=0;

for(k=1;k<=100;k++)//计算1~100的和

{s1=s1+k;}

for(k=1;k<=50;k++)

{s2=s2+k*k;}

for(k=1;k<=20;k++)

{s3=s3+1/k;}

printf("%lf\n",s1+s2+s3);

return0;

}

输出结果:

7、一个数如果恰好等于它的因子和,这个数就称为“完数”。

例如,6的因子为1,2,3,而6=1+2+3,因此6是“完数”编程序找出1000之内的所有完数,并按下面格式输出其因子:

6itsfoctorsare123(课后第9题)。

方法1:

程序如下;

#defineM1000//定义寻找范围

#include

intmain()

{

intk1,k2,k3,k4,k5,k6,k7,k8,k9,k10;

inti,a,n,s;

for(a=2;a<=M;a++)//a是2~1000之间的整数,检查它是否完数

{n=0;//n用来累计a的因子的个数

s=a;//s用来存放尚未求出的因子之和,开始时等于a

for(i=1;i

if(a%i==0)//如果i是a的因子

{n++;//n+1,表示新找到一个因子

s=s-i;//s减去已找到的因子,s的新值是尚未求出的因子之和

switch(n)//将找到的因子赋给k1~k9,或k10

{

case1:

k1=i;break;//找出的第1个因子赋给k1

case2:

k2=i;break;//找出的第2个因子赋给k2

case3:

k3=i;break;//找出的第3个因子赋给k3

case4:

k4=i;break;//找出的第4个因子赋给k4

case5:

k5=i;break;//找出的第5个因子赋给k5

case6:

k6=i;break;//找出的第6个因子赋给k6

case7:

k7=i;break;//找出的第7个因子赋给k7

case8:

k8=i;break;//找出的第8个因子赋给k8

case9:

k9=i;break;//找出的第9个因子赋给k9

case10:

k10=i;break;//找出的第10个因子赋给k10

}

}

if(s==0)

{

printf("%d,Itsfocatorsare",a);

if(n>1)

printf("%d,%d",k1,k2);//n>1表示a至少有2个因子

if(n>2)

printf(",%d",k3);

if(n>3)

printf(",%d",k4);

if(n>4)

printf(",%d",k5);

if(n>5)

printf(",%d",k6);

if(n>6)

printf(",%d",k7);

if(n>7)

printf(",%d",k8);

if(n>8)

printf(",%d",k9);

if(n>9)

printf(",%d",k10);

printf("\n");

}

}

return0;

}

运行结果:

方法2:

程序如下:

#include

intmain()

{

intm,s,i;

for(m=2;m<1000;m++)

{s=0;

for(i=1;i

if((m%i)==0)

s=s+i;

if(s==m)

{printf("%d,itsfactorsare",m);

for(i=1;i

if(m%i==0)

printf("%d",i);

printf("\n");

}

}

return0;

}

运行结果:

8、一个求从100m高度自由落下,每次落地后反跳回原高度的一半,在落下,在反弹,求它在第10次落地时,共经过多少米,第10次反弹多高?

(课后第11题)。

程序如下:

#include

intmain()

{

doublesn=100,hn=sn/2;

intn=10;

for(n=2;n<=10;n++)

{

sn=sn+2*hn;

hn=hn/2;

}

printf("第10次落地时共经过%f米\n",sn);

printf("第10次反弹%f米n",hn);

return0;

}

运行结果:

9、用

公式求

的近似值。

程序如下:

#include

#include

intmain()

{

doublepi=1.0,n=1.0,a,b,term=1.0;

while(n<=100000000)

{pi=pi*term;

a=(n+1)*(n+1);

b=n*(n+2);

term=a/b;

n=n+2;

}

pi=pi*2;

printf("pi=%10.8f\n",pi);

return0;

}

显示结果:

10、译密码。

C=(c+4-‘a’)%26+’a’/c=(c+4-‘A’)%26+’A’

程序如下:

#include

intmain()

{charc;

c=getchar();

while(c!

='\n')

{if(c>='a'&&c<='z'||c>='A'&&c<='Z')

{

if(c>='a'&&c<='z')

c=(c+4-'a')%26+'a';

if(c>='A'&&c<='Z')

c=(c+4-'A')%26+'A';

}

printf("%c",c);

c=getchar();

}

printf("\n");

return0;

}

显示结果:

11、将一元钱分别换成1(0~100)分、2(0~50)分、5(0~20)分的硬币,编写求出有多少种不同的分法及每种分法各种硬币的数量。

程序如下:

#include

Intmain()

{

intx,y,z,n=0;

for(x=0;x<=100;x++,n++)

for(y=0;y<=50;y++)

for(z=0;z<=20;z++)

if(x+2*y+5*z==100)

printf("x=%d,y=%d,z=%d\t",x,y,z);

return0;

}

运行结果:

12、用牛顿迭代求下面方程在1.5附近的根:

(书上的14题)。

程序如下:

#include

#include

intmain()

{

doublex1,x0,f,f1;

x1=1.5;

do

{x0=x1;

f=((2*x0-4)*x0+3)*x0-6;

f1=(6*x0-8)*x0+3;

x1=x0-f/f1;

}

while(fabs(x1-x0)>=1e-5);

printf("Therootofequationis%5.2f\n",x1);

return0;

}

运行结果:

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

当前位置:首页 > 成人教育 > 成考

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2