“水仙花数”问题-c语言

“⽔仙花数”问题-c语⾔1.在屏幕上输出以下图案
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
/*
分析:中间最长的是13个*;每⼀层加2个*;
分为上三⾓和下三⾓,
for循环或者while实现。
*/
void PrintDesgin(int len){
for (int i = 1; i <= len; i = i + 2){
int j = 1;
while (j <= i){
printf("%c", '*');
j++;
}
printf("\n");
}
for (int i = len - 2; i > 0; i = i - 2){
int j = 1;
while (j <= i){
printf("%c", '*');
j++;
}
printf("\n");
}
}
int main(){
int len = 0;
printf("请输⼊你想打印图案的最长*数:");
scanf("%d", &len);
PrintDesgin(len);
system("pause");
return 0;
}
运⾏效果:
2.求出0~999之间的所有“⽔仙花数”并输出。
“⽔仙花数”是指⼀个三位数,其各位数字的⽴⽅和确好等于该数本⾝,如;153=1+5+3?,则153是⼀个“⽔仙花数”。
/*
在数论中,⽔仙花数(Narcissistic number)也称为⾃恋数、⾃幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),是指⼀N位数,其各个数之N次⽅和等于该数。
例如153、370、371及407就是三位数的⽔仙花数,其各个数之⽴⽅和等于该数:
153 = 1^3 + 5^3 + 3^3。
aaaaaaaaaaaaaaaaaa370 = 3^3 + 7^3 + 0^3。
371 = 3^3 + 7^3 + 1^3。
407 = 4^3 + 0^3 + 7^3。
*/
/*
分析:
⽤for循环依次判断0-999之间的⽔仙花数,是则输出。
*/
void is_narcissus(int min, int max){
printf("%d-%d之间的“⽔仙花数”为:\n", min, max);
int i = 0;
if (min >= 100){
i = min;
}
else{
i = 100;
}
for ( i ; i <= max; i++){
int k = i / 100;//百位;
int p = (i - k * 100) / 10;//⼗位;
int j = i % 10;//个位;
int number = k*k*k + p*p*p + j*j*j;
if (number == i){
printf("%d\n", i);
}
}
}
int main(){
int min = 0;
int max = 0;
printf("请输⼊你想打印的⽔仙数的范围(如:0-999):");
scanf("%d-%d", &min, &max);
is_narcissus(min,max);
system("pause");
return 0;
}
运⾏效果:
3. 求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是⼀个数字,
例如:2+22+222+2222+22222
#include <math.h>
/*
分析:a+aa+aaa+aaaa+aaaaa=a0000*1+a000*2+a00*3+a0*4+a*5
两位数时:如:13
13+1313+131313+13131313+1313131313=1300000000*1+13000000*2+130000*3+1300*4+13*5 */
void five_sum(int x){
int len = 1 + (int)log10(x);//求数的长度
//printf("%d\n", len);
int result = 0;//结果
int n = 10000;
int m = 1;
int i = 0;
for (i = 1; i <= len; i++){
m = m*n;
}
for (i = 1; i <= 5; i++){
result = result + x*(m)*i;
m = m / (len * 10);
}
//打印结果
for (int j = 1; j <= 5; j++){
int k = 0;
while (k < j){
printf("%d", x);
k++;
}
if (j < 5){
printf("+");
}
}![在这⾥插⼊图⽚描述](img-blog.csdnimg/20181128201917562.png)
printf("=");
printf("%d\n", result);
}
int main(){
int x;
printf("请输⼊⼀个数:");
scanf("%d", &x);
five_sum(x);
system("pause");
return 0;
}
运⾏效果:

本文发布于:2024-09-21 14:38:10,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/361168.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:仙花   打印   循环   恋数   输出   图案
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议