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

题目

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

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

总结

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 这一期的内容已经过半,部分同学开始觉得吃力。如果这时候放弃,那前边的努力就白费了。今天我们来看看上一篇中的课后题。...
    天花板阅读 1,633评论 0 13
  • 86.复合 Cases 共享相同代码块的多个switch 分支 分支可以合并, 写在分支后用逗号分开。如果任何模式...
    无沣阅读 1,421评论 1 5
  • 题目 原问题链接给出一组代数表达式,请编程判断出他们的括号是否配对正确。 输入内容 第一行中的5表示共有5个表达式...
    Hans941阅读 428评论 0 3
  • 一、观影5: 敦克尔克 愿每个生命都能得到拯救。审视当下,珍惜和平。 十面埋伏 章子怡的古装好美,舞蹈是电影一大亮...
    dear欢欢阅读 296评论 1 1
  • 雨夜,哦,雨夜! 生活在城市的人,也许意识不到雨对于这个世界有多重要。他们厌恶甚至憎恨下雨的时候,似乎它是一个赶走...
    xixihahalelehe阅读 738评论 2 1