天花板編程手把手計劃-第一期-第五天打卡

題目

給出一組代數(shù)表達式,請編程判斷出他們的括號是否配對正確。
輸入

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個表達式需要判斷。下面的每一行有一個表達式。要求把這組數(shù)據(jù)原樣保存在文件input.txt中,通過讀文件的方式讀入數(shù)據(jù)完成判斷。
輸出

括號匹配正確打印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

總結

文件忘得差不多了,又在網(wǎng)上看的。前面幾個程序,沒有做出來,故沒打卡。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 這一期的內容已經(jīng)過半,部分同學開始覺得吃力。如果這時候放棄,那前邊的努力就白費了。今天我們來看看上一篇中的課后題。...
    天花板閱讀 1,694評論 0 13
  • 86.復合 Cases 共享相同代碼塊的多個switch 分支 分支可以合并, 寫在分支后用逗號分開。如果任何模式...
    無灃閱讀 1,543評論 1 5
  • 題目 原問題鏈接給出一組代數(shù)表達式,請編程判斷出他們的括號是否配對正確。 輸入內容 第一行中的5表示共有5個表達式...
    Hans941閱讀 507評論 0 3
  • 一、觀影5: 敦克爾克 愿每個生命都能得到拯救。審視當下,珍惜和平。 十面埋伏 章子怡的古裝好美,舞蹈是電影一大亮...
    dear歡歡閱讀 342評論 1 1
  • 雨夜,哦,雨夜! 生活在城市的人,也許意識不到雨對于這個世界有多重要。他們厭惡甚至憎恨下雨的時候,似乎它是一個趕走...
    xixihahalelehe閱讀 787評論 2 1

友情鏈接更多精彩內容