打印图形:
思路分析:
找出规律,每行怎么打印,第一行到中间位置先打的空格数量变化
从上到下,打印到中间位置之后,倒过来在打印一遍,由于中间位置已经打印,所以注意a的起始值
代码示例:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a, b,c;
for (a=1; a <= 5; ++a)
{
for (b = 1; b <= 5-a; ++b)//每行打的空格数5-i个
{
putchar(' ');//打印空格
}
for (b=1; b <= 2 * a - 1; ++b)//每行打印的*数量满足2*a-1
{
putchar('*');//打印*
}
putchar('\n');
}
for (a = 4; a >= 1; --a)//倒着打印,从第四行打,第五行重复,所以不打印
{
for (b = 1; b <= 5 - a; ++b)
{
putchar(' ');
}
for (b = 1; b <= 2 * a - 1; ++b)
{
putchar('*');
}
putchar('\n');
}
system("pause");
return 0;
}
打印100-999之间的水仙花数:
思路分析:
使用遍历,把每一个数都拿到,然后分别取出个位十位和百位,此题只需要打印3位数内的水仙花数
所以只需要计算个位十位百位的立方之和是不是等于原数,如果等于,则是水仙花数
代码示例:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a, b, c, d;
for (a = 100; a <1000; ++a)
{
b = a % 10;//表示a的个位数
c = a / 10 % 10;//表示a的十位数
d = a / 100;//表示a的百位数
int sum = b*b*b + c*c*c + d*d*d;
if (sum == a)//判断是否是水仙花数
{
printf("%d\n",a);//将水仙花数打印下来
}
}
system("pause");
return 0;
}
求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字
例如:2+22+222+2222+22222
思路分析:
迭代法的应用,可以说是公式一般的代码
代码示例:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a;
int tmp = 0;
int sum = 0;
scanf("%d", &a);
for (int i = 1; i < 6 ; ++i)
{
tmp = tmp * 10 + a;
sum+=tmp;
}
printf("sum=%d", sum);
system("pause");
return 0;
}