美文网首页
天花板编程手把手计划-第一期-第五天打卡

天花板编程手把手计划-第一期-第五天打卡

作者: 4644f2f5191a | 来源:发表于2017-05-07 12:37 被阅读0次

题目

给出一组代数表达式,请编程判断出他们的括号是否配对正确。
输入

5
[a+(b+c)]*(a+b]
(a-1+b)-(b+c)
x-[a*(b+c))]
a+(b+c+(d-(e+m))
a+b+[c-d*e-(a-b)-c]

第一行中的5表示共有5个表达式需要判断。下面的每一行有一个表达式。要求把这组数据原样保存在文件input.txt中,通过读文件的方式读入数据完成判断。
输出

括号匹配正确打印1,匹配错误打印0。正确的输出结果应该是:

0
1
0
0
1

解题思路

刚开始是想把字符一个一个的获取进行判断,但是文件指向位置的移动无法判断,主要是无法判断eof结束和无法匹配结束,希望barry讲一下。最后一行一行的进行导入,完成程序

源代码

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void fit(FILE *fp,char *str)
{
    char c;
    int sign1;
    int sign2;
    sign1=0;
    sign2=0;
    for(int i=0;i<strlen(str);i++)
    {
        c=str[i];
        if(c=='(')
            sign1++;
        if(c=='[')
            sign2++;
        if(c==')')
            sign1--;
        if(c==']')
            sign2--;
        if(sign1==-1||sign2==-1)
            break;
    }
    if((sign1==0)&&(sign2==0))
    {
        printf("1\n");
    }
    else 
        printf("0\n");
    
}
void main()
{
    FILE *fp;
    char str[80];
    char a,d;
    int b;
    fp=fopen("input.txt","r");
    if(fp==NULL)
        return;
    a=fgetc(fp);
    b=atoi(&a);
    fseek(fp,2,1);
    for(int i=0;i<b;i++)
    {
        fgets(str,80,fp);
        fit(fp,str);
    }
}

运行截图

Paste_Image.png

总结

文件忘得差不多了,又在网上看的。前面几个程序,没有做出来,故没打卡。

相关文章

网友评论

      本文标题:天花板编程手把手计划-第一期-第五天打卡

      本文链接:https://www.haomeiwen.com/subject/uoyutxtx.html