菱形图案打印、水仙花数、买汽水(下)

简介: 菱形图案打印、水仙花数、买汽水(下)

拓展:带空格直角三角形图案


题目要求

示例展示



这里博主就不做过多讲解了,这种找规律的题,还需要宝子们多勤加练习,这里给出两个解题代码


代码一


1. int main()
2. {
3.     int n = 0;
4.     while(scanf("%d", &n) != EOF)
5.     {
6.         int i = 0;
7. //行数控制
8. for(i=0; i<n; i++)
9.         {
10. //空格
11.             int j = 0;
12. for(j=0; j<n-1-i; j++)
13.             {
14.                 printf("  ");
15.             }
16. //*
17. for(j=0; j<=i; j++)
18.             {
19.                 printf("* ");    
20.             }
21.             printf("\n");
22.         }
23. 
24.     }
25. return 0;
26. }

代码二


1. int main()
2. {
3.     int n = 0;
4.     while(scanf("%d", &n) != EOF)
5.     {
6.         int i = 0;
7.         int j = 0;
8. //行数
9. for(i=0; i<n; i++)
10.         {
11. //一行
12. for(j=0; j<n; j++)
13.             {
14. //行和列的和
15. //这里可以把行数和列数标出来就能看明白
16. if(i+j<n-1)
17.                 {
18.                     printf("  ");
19.                 }
20. else
21.                 {
22.                     printf("* ");
23.                 }
24.             }
25.             printf("\n");
26.         }
27.     }
28. return 0;
29. }

水仙花数


题目要求


求出0~100000之间的所有“水仙花数”并输出。

“水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身,如:153=1^3+5^3+3^3,则153是一个“水仙花数”

解题思路

我们将此题进行拓展一下,我们想加入我们想要求100以内的呢?或者更大呢?

所以我们改为我们只需要输入我们想要的n,便就可以输出你想要的0~n之间的水仙花数


1. int n = 0;
2.  scanf("%d", &n);


首先水仙花数要用自身的位数为次方,所以我们需要求出它的位数,实现如下


1. int panduan(int n)
2. {
3.  if (n / 10 != 0)
4.    return 1 + panduan(n / 10);
5.  else return 1;//整数最少也为一位
6. }


其次我们需要剥离每一位并进行求和,代码如下


1. int jisuan(int a, int b)
2. {
3.  if (a / 10 != 0)
4.  {
5.    return pow(a % 10, b) + jisuan(a / 10,b);
6.  }
7.  else return pow(a % 10, b);
8. }

最后 我们就只要再进行遍历每一个数并判断就好,代码如下

1. int main()
2. {
3.  int n = 0;
4.  scanf("%d", &n);
5.  int i = 0;
6.  for (i = 0; i < n; i++)
7.  {
8.    int w = panduan(i);
9.    int sn = jisuan(i, w);
10.     if (sn == i)
11.       printf("%d ", i);
12. 
13.   }
14.   return 0;
15. }


拓展:变种水仙花数


题目要求


这里博主就不做过多解释了,如果看代码有不懂的宝子可以私信博主,或者评论留言,代码如下

1. #include <stdio.h>
2. #include<math.h>
3. int main() {
4.     int i = 0;
5.     int n = 0;
6.     int s = 0;
7. for (i =10000; i <= 99999; i++)
8.     {
9.         int b = 0;
10.         int a = 1;
11.         while (a != 0)
12.         {
13.             a = i / pow(10, b);
14.             b++;
15.         }
16.         s = 0;
17. for (n = 1; n<b - 1; n++)
18.         {
19.             int d = pow(10, n);
20.             s =s+i/d * (i % d);
21.         }
22. if(s==i)
23.             printf("%d ", i);
24.     }
25. return 0;
26. }


买汽水


题目要求:

喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水(编程实现)。

思路

1. 20元首先可以喝20瓶,此时手中有20个空瓶子

2. 两个空瓶子可以喝一瓶,喝完之后,空瓶子剩余:汽水数/2(两个空瓶子换的喝完后产生的瓶子) + 汽水数%2(不够换的瓶子)

3. 如果瓶子个数超过1个,可以继续换,即重复2

先来看看博主写的代码:


1. #include<stdio.h>
2. 
3. int maiqishui(int n)
4. {
5.  int count = n;
6.  while (n / 2 != 0)
7.  {
8.    count = count + n / 2;
9.    n = n / 2 + n % 2;
10.   }
11.   return count;
12. }
13. 
14. int main()
15. {
16.   int n = 0;
17.   scanf("%d", &n);
18.   int sn = maiqishui(n);
19.   printf("%d", sn);
20.   return 0;
21. }

博主在这二再提供两种代码,供宝子们理解


代码一


1. int main()
2. {
3.  int money = 0;
4.  int total = 0;
5.  int empty = 0;
6. 
7. 
8.  scanf("%d", &money);
9. 
10.   //方法1
11.   total = money;
12.   empty = money;
13.   while(empty>1)
14.   {
15.     total += empty/2;
16.     empty = empty/2+empty%2;
17.   }
18. 
19. 
20.   return 0;
21. }

代码二


1. // 方法二:按照上述喝水和用瓶子换的规则的话,可以发现,其实就是个等差数列:money*2-1
2. int main()
3. {
4.  int money = 0;
5.  int total = 0;
6.  int empty = 0;
7. 
8. 
9.  scanf("%d", &money);
10. 
11.   //方法2
12.   if(money <= 0)
13.   {
14.     total = 0;
15.   }
16.   else
17.   {
18.     total = money*2-1;
19.   }
20.   printf("total = %d\n", total);
21. 
22. 
23.   return 0;
24. }


妙用汽水瓶


我们想一个事,加入你有一个汽水瓶,然后你向老板借一个空汽水瓶,然后现在你有两个空汽水瓶,又可以换一瓶汽水,喝完后再换给老板!!!

 

博主将消失一段时间进行备战期末考试,感谢各位的支持,记得三连哦

相关文章
|
分布式数据库 Hbase
HBase sequenceId知识点略记
在HBase中,sequenceId是实现一致性的灵魂,这里的一致性有两方面意思: 顺序性,即先写的先被读到,未提交的写不能被读到; 完整性,包含如下几点; 未持久化到hfile的数据,对应的wal文件不能删除 如果由于wal文件过多需要清理,则需要先把对应的数据持久化 异常恢复过程中,需要.
1907 0
|
C语言
【C语言刷题系列】喝汽水问题
【C语言刷题系列】喝汽水问题
|
关系型数据库 MySQL
解决MySQL insert出现Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘xxx‘ at row 1
解决MySQL insert出现Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘xxx‘ at row 1
1007 2
|
机器学习/深度学习 算法 Python
【Python机器学习】实验10 随机森林和集成学习
【Python机器学习】实验10 随机森林和集成学习
253 0
|
C语言
【C语言】喝汽水问题
C语言中的喝汽水问题
168 0
【C语言】喝汽水问题
|
开发者 Python
six,一个神奇的 Python 版本兼容工具库!
six,一个神奇的 Python 版本兼容工具库!
375 4
|
Java 测试技术 Spring
|
前端开发
微信群聊头像组件
微信群聊头像组件
229 0
|
JSON 前端开发 NoSQL
淘东电商项目(27) -门户登出功能
淘东电商项目(27) -门户登出功能
91 0
|
JavaScript
element-ui el-table 表格中行高和字体大小调整
element-ui el-table 表格中行高和字体大小调整
4745 0