• 括号配对


    知识:字符串接受结束后自动加''。 使用scanf("%s",&s);函数输入字符串时存在一个问题,就是如果输入了空格会认为字符串结束,空格后的字符将作为下一个输入项处理,但gets()函数将接收输入的整个字符串直到遇到换行为止*/

    scanf 不能读取回车和储存

    scanf不能接受空格、制表符Tab、回车等; 而gets能够接受空格、制表符Tab和回车等;

    scanf碰到缓冲区里面的空字符(空格,tab,回车,换行就会截断并添加),而gets是要等回车才截断字符串并添加的

    比如 "hello world!" 字符串长度为12 (字符串存储时结尾自动加上字符) 如果这样写 "hello world!" 字符串长度为6 (空格也算一个字符)

    sprintf(a,"%2.2s",a);中第一个2表示最终生成的字符串不超过2个字符,如果超出了最后一位用字符串结束符填充,,第二个2表示在后面的字符串中最多去2个字符,

    用gets()函数输入字符串按回车后,回车符号不会被输入到字符串

    现在,有一行括号序列,请你检查这行括号是否配对。

     
    输入
    第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[","]","(",")"四种字符
    输出
    每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No。
    第一:配对的前提:字符个数必须为偶数个
    第二:第一与  N配对
            第二与  N-1配对
            循环结束条件为 j-i==1
    重点: 该问题先完全输入字符串后 再进行判断

    # include<stdio.h>
    # include<string.h>
    int main()
    {
    int N,i,j,n,h,leap;
    char s[10000],ch;
    scanf("%d",&N);
    ch =getchar();
    for(i=1; i<=N ; i++)
    {
    gets(s);
    n =strlen(s);

    if(n % 2 == 1)
    {printf("No");}
    else
    {
    for(j=0,h=n-1;j+1==h; j++,h--)
    {
    if(s[j]==s[h])
    leap = 1;
    else
    leap = 0;break;
    }
    if(leap == 1)
    printf("Yes");
    else
    printf("No");
    }
    printf(" ");
    }
    return 0;
    }

  • 相关阅读:
    CentOS7安装注意
    ES插件安装
    CentOS7命令
    ES安装手册
    五 、redis-cluster java api
    四 、Redis 集群的搭建
    三 redis 的 java api(jedis)
    C#验证码 使用GDI绘制验证码
    云时代架构阅读笔记二——Java性能优化(二)
    【转载】Asp .Net Web Api路由路径问题
  • 原文地址:https://www.cnblogs.com/wshyj/p/6010535.html
Copyright © 2020-2023  润新知