P8597 [蓝桥杯 2013 省 B] 翻硬币 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

文章介绍了大一学生使用C语言解决蓝桥杯省赛B组的一道简单题目,该题目涉及字符串的比较和字符计数。通过分析,问题转化为计算两个变化字符间的不变字符数量。作者提供了代码实现,并分享了编程技巧,如使用bool变量优化判断以及初始化字符数组。
摘要由CSDN通过智能技术生成

大一小白的第一篇博客,都是基于C语言完成的。

作为一道上古蓝桥杯省赛B组题,这道题的难度还是很简单的(或者说我思考的角度比较简单)

通过观察案例不难发现可以将问题转化为“两个改变的字符间有几个没改变的字符+1”

举个栗子:

***oo**

*o**o**

可以发现改变的2个字符中间只有1个,所以输出的是1+1=2

值得注意的是,如果有多段字符组合,需要将他们相加

如:

***oo** **********

*o**o** o****o****

改变的字符有(1+1)+(4+1)=7

附上我的代码

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<stdbool.h>
//我个人的习惯:头文件全部都整上去

int main()
{
    int sum=0,i=0;//sum用于计数
    bool tmp=0;//tmp是关键,用于判断两个字符是否发生变化,bool类型不常用,可以积累一下
    char s1[1000]={'\0'};
    char s2[1000]={'\0'};

    scanf("%s",&s1);
    scanf("%s",&s2);

    for(;i<strlen(s1);i++)
    {
        if(s1[i]!=s2[i])
        {
            tmp=!tmp;//判断改变字符的头和尾
        }
        if(tmp==1)
        {
            sum++;
        }
        
    }
    printf("%d",sum);
    
    
    return 0;
 } 

附上我自己的一些小积累:

  1. 开字符数组时记得将字符数组初始化为\0

  1. 用bool类型可以更好的实现判断,不过其实也可以用两个if语句来实现判断、

  1. 对于头文件跟string函数的使用需要留意,别把c++和java的一些语法搞混了(在写strlen时还写成了length.s1)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值