【Day2】


前言

今天主要学习了算法书的第二章(循环结构),并实操了几个小题。


一、水仙花数

输出100~999中的所有水仙花数。若3位数ABC满足ABC=A^3 + B^3 + C^3,则称其为水仙花数。例如153=1 ^3 + 5^3 + 3^3,所以153是水仙花数。

分析:逐个检查范围内的每个整数是否满足条件。主要练习对于/(除)和%(取余)的实际应用。

#include<stdio.h>
#include<math.h>
int main()
{
	for(int i=100;i<1000;i++)
	{
		int n,k0,k1,k2;
		n=i;
		k0=n%10;//个位的数
		k1=n/10%10;//十位的数
		k2=n/100;//百位的数
		if(n==pow(k0,3)+pow(k1,3)+pow(k2,3))
			printf("%d\n",n);
	}
	return 0;
 } 

二、倒三角形

输入正整数n<=20,输出一个n层的倒三角形。例如,n=5时,输入及输出如下图所示:
在这里插入图片描述
分析:观察所要输出的倒三角形,发现我们只要控制每行的空格以及符号(*)的个数即可。

#include<stdio.h>
int main()
{
	int n;
	scanf("%d",&n);
	int count=0;
	int num= 2*n-1;
	for(int i=0;i<n;i++)//控制倒三角的行数
	{
		if(count>0)//控制输出空格
		{
			for(int j=0;j<count;j++)
				printf(" ");
		}
		if(num>0)//控制输出*
		{
			for(int k=0;k<num;k++)
				printf("*");
			printf("\n");
			count++;//每行对应的空格个数
			num-=2;//每次下一行*个数减少2			
		}
	}
	return 0;
}

三、分数化小数

输入整数a,b,c,输出a/b的小数形式,精确到小数点后c位。a,b<=10^6,c<=100。
样例输入:
1 6 4
0 0 0
样例输出:
Case 1:0.1667

#include<stdio.h>
int main()
{
	int a,b,c;
	int count=0;
	while(scanf("%d%d%d",&a,&b,&c)&&a&&b&&c)
	{
		count++;
		printf("Case %d: %.*f",count,c,1.0*a/b);
	}
	return 0;	
}

此解法略有问题,对于部分测试数据不能达到良好输出,仍需改进。具体问题举例如下:
在这里插入图片描述


今日Tips

1.几乎在所有的比赛平台上,int都是32位整数。在解题中注意中间结果溢出的情况。(改用long long)
2.不确定输入个数的情况下可以使用while(scanf("%d",&a))
3.读写数据的方式有重定向和fopen两种方法。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值