1.喝汽水问题
int Func(int money)
{
int total = money;
int empty = money;
while (empty > 1)
{
total = total + empty / 2;
empty = empty / 2 + empty % 2;
}
return total;
}
2.打印菱形
将菱形看作三部分打印:上三角,中间,下三角
分别列出每一行空格,星号,行号,找出空格、星号与行号的关系。
for()
{
打印空格
for()
打印星号
for()
}
打印下三角时也找规律,和上三角反着来,但是我没想出来。。。。
void Func(int line)
{
//上半部分
for (int i = 0; i < line/2; i++)
{
//打印空格
for (int j = 0; j <line/2-i ; j++)
{
printf(" ");
}
//打印*
for (int j = 0; j < 2 * i + 1; j++)
{
printf("*");
}
printf("\n");
}
//打印中间
for (int i = 0; i < line; i++)
{
printf("*");
}
printf("\n");
//打印下半部分
for (int i = 0; i < line / 2; i++)
{
//打印空格
for (int j = 0; j < i+1; j++)
{
printf(" ");
}
//打印*
for (int j = 0; j < 2 * (line/2-1-i) + 1; j++)
{
printf("*");
}
printf("\n");
}
}
int main()
{
Func(7);
return 0;
}
3.打印水仙花数
#include<stdio.h>
#include<math.h>
void Func()
{
for (int i = 0; i < 100000; i++)
{
//1.求当前数字i有几位
//这里用tmp是因为最后i=0;无法进行步骤2了
int count = 0;
int tmp = i;
while (tmp != 0)
{
count++;
tmp /= 10;
}
//2.求数字的每一位
tmp = i;
int sum = 0;
while (tmp != 0)
{
//tmp % 10 ^ count;
sum += pow(tmp % 10, count);
tmp /= 10;
}
if (sum == i)
{
printf("%d ", i);
}
}
}
4.求Sn
int Sn(int n,int a)
{
int num = 0;
int sum = 0;
for (int i = 0; i < n; i++)
{
num = (num * 10 + a);
sum += num;
}
return sum;
}
int main()
{
printf("%d\n", Sn(5,2));
}