1.编写程序输出以下图形:
1
121
12321
1234321
123454321
12345654321
1234567654321
123456787654321
12345678987654321
思路,首先找到行数和每行的空格以及数字之间的关系,
然后通过构造循环来实现遍历。
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a = 0;
int b = 0;
int i = 0;
int j = 0;
for (i = 1; i <= 9; i++)//创建行数
{
for (j = 1; j <= 9 - i; j++)//创建每一行的前面空白
{
printf(" ");
}
for (a = 1; a <= i; a++)//创建每一行的升序数字
{
printf("%d", a);
}
for (b = i - 1; b >= 1; b--)//创建每一行的降序数字
{
printf("%d", b);
}
for (j = 9; j <= 17 - i; j++)//创建每一行的后面空白
{
printf(" ");
}
printf("\n");
}
system("pause");
return 0;
}
2.在屏幕上输出以下图案:
*
***
*****
*******
*********
***********
*************
***********
*********
*******
*****
***
*
思路,把图形分成两部分,每部分再通过循环来构造行数与*以及 之间的关系。
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i = 0;
int j = 0;
for (i = 1; i <= 7; i++)//创建前7行
{
for (j = 1; j <= 2*i-1 ; j++)//创建每一行前面的*
{
printf("*");
}
for (j = 13; j > 2*i-1; j--)//创建每一行的后面空白
{
printf(" ");
}
printf("\n");
}
for (i = 6; i >= 1; i--)//创建后6行
{
for (j = 1; j <= 2 * i - 1; j++)//创建每一行前面的*
{
printf("*");
}
for (j = 13; j > 2 * i - 1; j--)//创建每一行的后面空白
{
printf(" ");
}
printf("\n");
}
system("pause");
return 0;
}
3.求出0~999之间的所有“水仙花数”并输出。
(“水仙花数”是指一个三位数,其各位数字的立方和确好等于本身,如;153=1+5+3?,则153是一个“水仙花数”)
思路,把一个百位数拆成个十百三部分分别进行循环遍历来寻找满足条件的结果。
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
int a = 0;
int b = 0;
int c = 0;
int x = 0;
for (a = 0; a < 10; a++)//对百位数进行遍历
{
for (b = 0; b < 10; b++)//对十位数进行遍历
{
for (c = 0; c < 10; c++)//对个位数进行遍历
{
x = pow(a, 3) + pow(b, 3) + pow(c, 3);
if (x == a * 100 + b * 10 + c&&x>100)//满足“水仙花数”的条件
printf("%4d", x);
continue;
}
}
}
system("pause");
return 0;
}
4.求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字,
例如:2+22+222+2222+22222
思路,首先把其每位数单独拿出来,利用类似科学计数法的累加形式将其表示出来,
然后通过循环手段来实现累加。
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
int i = 0;
int S = 0;
int a = 2;
for (i = 0; i < 5; i++)
{
S = a * (5 - i)*pow(10, i) + S;
}
printf("%d", S);
system("pause");
return 0;
}