您的位置:首页 > 编程语言 > C语言/C++

用C语言实现:打印图案;求Sn=a+aa+aaa+aaa的前n项之和,其中a是一个数字;求出0~999之间的所有“水仙花数”并输出

2019-03-25 21:18 399 查看

用C语言实现:打印图案;求Sn=a+aa+aaa+aaa的前n项之和,其中a是一个数字;求出0~999之间的所有“水仙花数”并输出

1.打印如下图案

#include<stdio.h>
#include<stdlib.h>
int main()
{
int i = 0;
int j = 0;
int line = 0;
scanf("%d", &line);
//上半部分
for (i = 0; i <= line; i++)
{
//打印空格
for (j = 0; j <= line - 1 - i; j++)
{
printf(" ");
}
//打印*号
for (j = 0; j < 2 * i - 1; j++)
{
printf("*");
}
printf("\n");
}
//下半部分
for (i = 0; i <= line - 1; i++)
{
//打印空格
for (j = 0; j <= i; j++)
{
printf(" ");
}
//打印*号
for (j = 0; j < 2 * (line - 1 - i) - 1; j++)
{
printf("*");
}
printf("\n");
}
system("pause");
return 0;
}

2.求Sn=a+aa+aaa+aaa的前n项之和,其中a是一个数字

#include<stdio.h>
#include<stdlib.h>
int main()
{
int n;//几项数字相加,如三项2+22+222
int a;//数字几,如2
int i = 0;
int tmp = 0, sum = 0;
scanf("%d%d", &n, &a);
for (i = 0; i < n; i++)
{
tmp = tmp * 10 + a;
sum += tmp;//总和
}
printf("%d", sum);
system("pause");
return 0;
}

3.求出0~999之间的所有“水仙花数”并输出

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int main()
{
int i,n;
for (i = 100; i < 1000; i++)
{
n = pow(i % 10, 3) + pow((i % 100) / 10, 3) + pow(i / 100, 3);
if (n == i)
{
printf("%d ", i);
}
}
system("pause");
return 0;
}

扩展:求0-999999之间符合该数等于各个位数的n次方的数字。如1是一位数字,则1=1^1,153=111+555+333……

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
int i = 0;
for (i = 0; i < 1000000; i++)
{
int count = 0;
int sum = 0;//必须放在for语句内部,每次循环初始化为0,
int tmp;
tmp = i;
//判断i是几位数字
while (tmp != 0)
{
count++;
tmp /= 10;
}
//求各个位上的数字并求和
tmp = i;
while (tmp != 0)
{
sum += pow((tmp % 10), count);
tmp = tmp/10;
}
if (i == sum)
{
printf("%d\n", i);
}
}
system("pause");
return 0;
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐