2.17--喝汽水,杨辉三角,奇数偶数位置问题解析

1.喝汽水

一瓶1元,2个空瓶换一瓶新汽水,有20元,可以喝几瓶?
方法一:

int main()
{
int money=0;
int empty=0;
int total=0;
scanf_s("%d",&money);//输入20,因为有20元
total=money;
empty=money;
while(empty>=2)
{
total+=empty/2;
empty=empty/2+empty%2;//因为有出现3个瓶子的情况,此时余1个瓶子
}
printf("total=%d\n",total);
return 0;
}

方法二:
找到数学规律:喝的数量是money*2-1
但如果money=0时,喝的数不是-1,所以要分类

int main()
{
int money=0;
scanf_s("%d",&money);
if(money==0)
{printf("汽水数为0")};
else
{printf("%d",money*2-1)};
}
retrun 0;
}

2.杨辉三角

在这里插入图片描述

#include<stdio.h>
int main()
{
    int arr[10][10] = { 0 };
    int i = 0;
    int j = 0;
    for (i = 0; i < 10; i++)
    {
        for (j = 0; j < 10; j++)
        {
            if (j == 0)
            {
                arr[i][j] = 1;
            }//让第一列都为1
        
        if (i == j)
        {
            arr[i][j] = 1;
        }
        }
    }
        for (i = 0; i < 10; i++)
        {
            for (j = 0; j <= i; j++)
            {
                if (i >= 2 && j >= 1)
                {
                    arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];
                }
            }
        }
        for (i = 0; i < 10; i++)
        {
            for (j = 0; j <= i; j++)
            {

                printf("%-4d ", arr[i][j]);
            }
            printf("\n");
        }
        
    
    return 0;
}

结果如下:
在这里插入图片描述

3.奇数偶数问题

调整一个输入函数使数组所有奇数位于前半部分,偶数在后半部分
思路:
1.从左找到一个偶数
2.从右找到一个奇数
3.二者交换

void move(int arr[],int sz)
{
int left=0;
int right=0;
while(left<right)
 {
 while((left<right) && (arr[left]%2==1))
 {left++};//这一步是为了找到偶数;并且不能越界
 while((left<right) && (arr[right]%2==0))
 {right--};
 if(left<right)
 {
int tmp=arr[left];
arr[left]=arr[right];
arr[right]=tmp; 
 }
 }
}
void Print(int arr[],int sz)
{
int i=0;
for(i=0;i<sz;i++)
 {
 printf("%d ",arr[i]);
 }
 pritnf("\n");
}
int main()
{
int arr={1,2,4,5,6,7,8,9,0};
int sz=sizeof(arr)/sizeof(arr[0]);
move(arr,sz);
Print(arr,sz);
reutrn 0;
}
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

温欣2030

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值