Bootstrap

C语言打印菱形、喝汽水问题练习

打印菱形

输入描述

13

输出描述

image-20210521111338363

#include<stdio.h>
int main()
{
    int line = 0;
    printf("请输入要打印的行数:");
    scanf("%d", &line);
    //打印上半行
    line = (line + 1) / 2;
    int i = 0;
    int j = 0;
    for (i = 1; i <= line; i++)
    {
        for (j = 0; j < 2 * (line - i); j++)
        {
            printf(" ");//打印空格
        }
        for (j = 0; j < 2 * i - 1; j++)
        {
            printf("* ");//打印*
        }
        printf("\n\n");
    }

    //打印下半行
    for (i = line - 1; i > 0; i--)
    {
        for (j = 0; j < 2 * (line - i); j++)
        {
            printf(" ");//打印空格
        }
        for (j = 0; j < 2 * i - 1; j++)
        {
            printf("* ");打印*
        }
        printf("\n\n");
    }
    return 0;
}

喝汽水问题

问题描述:

喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水(编程实现)。

#define N 2//定义常量几个空瓶换一瓶汽水
#define P 1//定义常量一瓶汽水的价格
//非递归
int EmptyBottle(int n)
{
    int count=0;
    while(n>1)
    {
        count += n/N;
        n=n/N+n%N;//新的空瓶数=换的汽水数+之前不够换汽水剩余的空瓶数
    }
    return count;
}
//递归实现
//int EmptyBottle(int n)
//{
//    int count=0;
//	  count=n/N;
//    n=n/N+n%N;//新的空瓶数=换的汽水数+之前不够换汽水剩余的空瓶数
//    if(n>1)
//     	return count+EmptyBottle(n);
//    else
//      return count;
//}
int main()
{
    int money=0;
    printf("请输入金额:");
    scanf("%d",&money);
    int n=money/P;//刚开始的汽水,也是开始的空瓶数
    int ret = n+EmptyBottle(n);
    //用钱买的汽水数+空瓶换的汽水数=一共能得到的汽水数
    printf("一共能得到的汽水数:%d",ret);
    return 0;
}

image-20210521111115332

;