C语言-习题5循环1

1. (15分) c_5_1最大公约数

题目描述
输入两个正整数m和n,求其最大公约数和最小公倍数。

输入描述
输入为整型

输出描述
输出为整型(输出里的冒号为中文冒号)

输入样例
12,15

输出样例
最大公约数为:3
最小公倍数为:60

用户代码

#include<stdio.h>
int main()
{
	int a,b,c,d,e;
	scanf("%d,%d",&a,&b);
	e=a*b;
	if(a<b)
	{
		d=a;
		a=b;
		b=d;
	}
	    c=a%b;
		while(c!=0)
		{
		a=b;
		b=c;
		c=a%b;
		}
		e=e/b;
	printf("最大公约数为:%d\n",b);
	printf("最小公倍数为:%d\n",e);
	return 0;
} 

2. (15分) c_5_3数列和

题目描述
有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13……,求该数列的前n项之和。

输入描述
输入计算的项数(整数)

输出描述
输出和为浮点数据,小数点后保留4位

输入样例
3

输出样例
前3项的和=5.1667

用户代码

#include<stdio.h>
int main()
{
	int n,i=0;
	double a=2,b=1,t,sum=0;
	scanf("%d",&n);
	while(i!=n)
	{
		sum=sum+a/b;
		t=a;
		a=a+b;
		b=t;
		i++;
	}
	printf("前%d项的和=%.4f\n",n,sum);
	return 0;
} 

3. (15分) c_5_7梯形法求积分

题目描述
用梯形法求(2x5+5x3)dx的积分。

输入描述
依次输入积分起点(双精度),终点(双精度),步数(整数),标点用英文。

输出描述
结果(双精度)

输入样例
2,3,1000

输出样例
302.92

用户代码

#include<stdio.h>
#include<math.h>
int main()
{
	int i,n;
	double a,b,c,d,h,sum;
	scanf("%lf,%lf,%d",&a,&b,&n);
	h=(b-a)/n;
	sum=0,i=1;
	while(i<=n)
	{
		c=2*pow(a+(i-1)*h,5)+5*pow(a+(i-1)*h,3);
		d=2*pow(a+i*h,5)+5*pow(a+i*h,3);
		sum=sum+(c+d)*h/2;
		i++;
	}
	printf("%.2f",sum);
	return 0;
} 

4. (10分) c_5_2水仙花数

题目描述
输出所有的水仙花数,所谓水仙花数是指一个3位数,其各位数字立方和等于该数本身。

输出描述
每行输出一个水仙花数,按从小到大的顺序输出。

输出样例
153
370
371
407

用户代码

#include<stdio.h>
#include<math.h>
int main()
{
	int i;
	double a,b,c,d,sum;
	a=100,b=0,c=0,d=0,i=1,sum=0;
	while(i<=4)
	{
    b=(int)a/100,c=(int)a%100/10,d=(int)a%10;
	b=pow(b,3),c=pow(c,3),d=pow(d,3);
	sum=b+c+d;
	if(a!=sum)
     a++;
	else
	{
	printf("%.0f\n",sum);
	i++,a++;
	}
	}
	return 0;
} 

5. (10分) c_5_4牛顿迭代法求根

题目描述
用牛顿迭代法求下面方程在1.5附近的根,2x3-4x2+3x-6=0。

输出描述
输出只保留小数点后2位

输入样例

输出样例
2.00

用户代码


#include<stdio.h>
#include<math.h>
int main()
{
	double x,y,y1;
	 x=1.5;
	 y=2*pow(x,3)-4*pow(x,2)+3*x-6;
	 y1=6*pow(x,2)-8*x+3;
		while(y!=0)
		{
		 x=x-y/y1;
	     y=2*pow(x,3)-4*pow(x,2)+3*x-6;
	     y1=6*pow(x,2)-8*x+3;
		}
		printf("%.2f",x);
	return 0;
} 

6. (10分) c_5_5求满足条件的数

题目描述
编程求出200~300之间满足下列条件的数:该数的三个数字之积为42,三位数字之和为12。

输出描述
按从小到大的顺序每行输出一个三位数

输入样例

输出样例
237
273

用户代码

#include<stdio.h>
int main()
{
	int x,a,b,c,sum,sub;
	x=200;
	while(x<=300)
	{
	a=x/100;
	b=x/10%10;
	c=x%10;
	sub=a*b*c;
	sum=a+b+c;
	if(sub==42&&sum==12)
	{
		printf("%d\n",x);
		x++;
	}
	x++;
	}
	return 0;
} 

7. (10分) c_5_6人民币换零钱

题目描述
用一张100元人民币换5元、1元、0.5元面值的人民币,要求各种面值的人民币至少各一张,且总张数为100张,问共有多少种换法,各种面值分别为多少张?

输出描述
按printf(“5元:%2d张,\t1元:%2d张,\t0.5元:%2d\n”,i,j,k);格式输出。

输入样例

输出样例
5元: 1张, 1元:91张, 0.5元: 8
5元: 2张, 1元:82张, 0.5元:16
5元: 3张, 1元:73张, 0.5元:24
5元: 4张, 1元:64张, 0.5元:32
5元: 5张, 1元:55张, 0.5元:40
5元: 6张, 1元:46张, 0.5元:48
5元: 7张, 1元:37张, 0.5元:56
5元: 8张, 1元:28张, 0.5元:64
5元: 9张, 1元:19张, 0.5元:72
5元:10张, 1元:10张, 0.5元:80
5元:11张, 1元: 1张, 0.5元:88
总共有11种换法

用户代码

#include<stdio.h>
int main()
{
	int i,j,k,n;
	i=1,k=0,j=100-i-k,n=0;
	for(i=1;i<=98;i++)
	{
		k = 1;
		while(k<=100-i-1)
		{
			j=100-i-k;
			if(5*i+j+0.5*k==100)
			{
				 printf("5元:%2d张,\t1元:%2d张,\t0.5元:%2d\n",i,j,k);
				 n++;
			}
			k++;
		}
	}
	printf("总共有%d种换法",n);
	return 0;
}
发布了37 篇原创文章 · 获赞 10 · 访问量 746

猜你喜欢

转载自blog.csdn.net/qq_43608850/article/details/104320668
今日推荐