C语言循环程序设计

实验四 循环程序设计

实验目的

  1. 熟悉计数控制的循环
  2. 熟悉条件控制的循环
  3. 熟悉循环嵌套的用法
    实验条件:
    PC 计算机,Windows7 或 Windows10 操作系统,Office2010
    及以上版本,
    Dev-C++5.11 及以上版本或 Code Blocks16.01 及以上版本。
    实验内容
    1.程序调试
    求自然对数底 e 问题。自然对数底 e 可采用下述的级数公式计算得到:
    在这里插入图片描述

试编写程序,对输入一个正整数 n,计算下列式的和(保留 4 位小数),要
求使用嵌套的循环。
源程序(有错误)

#include<stdio.h> 
int main() 
{ 
	double e, item; 
	int i,j,n; 
	printf("Input n:"); 
	scanf("%d", &n); 
	e=0; 
	item=1; 
	for(i=1;i<=n;i++) 
	{ 
		for(j=1; j<=n; j++) 
	{ 
			item=item*j;} 
			e=e+1.0/item; //调试时设置为断点 
	} 
	printf("e=%.4f \n",e); /*调试时设置为断点*/ 
	return 0; 
} 

程序清单如下:

#include<stdio.h> 
int main() 
{ 
	double e, item; 
	int i,j,n; 
	printf("Input n:"); 
	scanf("%d", &n); 
	e=1.0; 
	for(i=1;i<=n;i++) 
	{ 
		item=1; 
		for(j=1; j<=i; j++) 
	{ 
		item=item*j; 
	} 
	e=e+1.0/item; //调试 
时设置为断点 
} 
	printf("e=%.4f \n",e); 
/*调试时设置为断点*/ 
	return 0; 
} 

程序运行结果如图一所示:
在这里插入图片描述

图一
2.基础编程
求自然对数底 e 问题。自然对数底 e 可采用下述的级数公式计算得到: 在这里插入图片描述

试编写程序,对输入一个正整数 n,计算下列式的和(保留 4 位小数),要
求使用单循环结构。
程序清单如下:

#include<stdio.h> 
int main() 
{ 
	int n,i; 
	double e=1.0; 
	long fac=1; 
	printf("Please input n\n"); 
	scanf("%d",&n); 
	for(i=1;i<=n;i++) 
	{ 
		fac=fac*i; 
		e=e+1.0/fac;} 
	printf("%.4f\n",e); 
	return 0; 

程序运行结果如图二所示:
在这里插入图片描述

图二
2. 求自然对数底 e 问题。自然对数底 e 可采用下述的级数公式计算得到:
在这里插入图片描述
试编写程序,直到最后一项的绝对值小于 10-5时为止,输出 e 的值,并统计
累加项数量。
程序清单如下:

#include<stdio.h> 
#include<math.h> 
int main() 
{ 
	int i=1,count=0; 
	double e=1.0; 
	long fac=1; 
	while(fabs(1.0/fac)>= 1e-5) 
	{ 
		fac=fac*i; 
		e=e+1.0/fac; 
		count++;i++; 
	} 
	printf("%.4f,%d\n",e, count); 
} 

程序运行结果如图三所示:
在这里插入图片描述

图三
3. 验证哥德巴赫猜想:任何一个大于等于 6 的偶数均可表示为两个素数的
和。如 6=3+3,8=3+5,,18=5+13。试编写程序,要求将输入的一个偶数表示成两
个素数之和。
程序清单如下:

#include<stdio.h> 
#include<stdlib.h> 
int main() 
{ 
	int p1,p2,num,i,j; 
	printf("Please input an even number(>=6):\n"); 
	scanf("%d",&num); 
	for(p1=3;p1<=num/2 .0;p1++) 
	{
		for(i=2;i<p1/2.0;i++) 
		{ 
			if(p1%i==0) 
			{ 
				break; 
				} 
			} 
		if(i>=p1/2.0) 
		{ 
			p2=num-p1; 
			for(j=2;j<=p2/2.0;j++) 
			{ 
				if(p2%j==0) 
				{ 
						break; 
						} 
			} 
		if(j>p2/2.0) 
		{ 
			printf("%d=%d+%d\n",num,p1,p2); 
			} 
		}
	} 
} 

程序运行结果如图四所示:
在这里插入图片描述

图四
4. 水仙花数:水仙花数的含义 “水仙花数”是一个三位数其各位数字的立
方和等于该数本身,如 153=13+53+33。请编程实现输出指定的两个整数 m 和 n
之间的所有水仙花数。
程序清单如下:

#include<stdio.h> 
int main() 
{ 
	int m,n,i,j,k,num; 
	printf("Please input m n(m>n)\n"); 
	scanf("%d,%d",&m,&n); 
	for(num=n;num<=m;num++) 
	{ 
		i=num/100; 
		j=(num-100*i)/10; 
		k=(num-100*i)%10; 
		if(num==i*i*i+j*j*j+k*k*k) 
		{ 
		printf("num=%d\n",num); 
		}
	} 
return 0;} 

程序运行结果如图五所示:
在这里插入图片描述

图五

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xlorb

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值