擴號匹配問題

描述 在某個字符串(長度不超過100)中有左括號、右括號和大小寫字母;規定(與常見的算數式子一樣)任何一個左括號都從內到外與在它右邊且距離最近的右括號匹配。寫一個程序,找到無法匹配的左括號和右括號,輸出原來字符串,並在下一行標出不能匹配的括號。不能匹配的左括號用"$"標註,不能匹配的右括號用"?"標註. 輸入 輸入包括多組數據,每組數據一行,包含一個字符串,只包含左右括號和大小寫字母,字符串長度不超過100
注意:cin.getline(str,100)最多隻能輸入99個字符! 輸出 對每組輸出數據,輸出兩行,第一行包含原始輸入字符,第二行由"$","?"和空格組成,"$"和"?"表示與之對應的左括號和右括號不能匹配。 樣例輸入
((ABCD(x)
)(rttyy())sss)(
樣例輸出
((ABCD(x)
$$
)(rttyy())sss)(
?            ?$
</pre><pre class="sh_cpp sh_sourceCode" style="margin-top: 0px; margin-bottom: 0px; padding: 11px; border: 1px solid rgb(218, 218, 218); font-size: 14px; line-height: 1.3em; overflow: auto; font-family: 'Courier New'; background: white;"><span class="sh_preproc" style="color: rgb(0, 0, 139); font-weight: bold;">#include</span><span class="sh_string" style="color: red; font-family: monospace;"><stdio.h></span>
<span class="sh_preproc" style="color: rgb(0, 0, 139); font-weight: bold;">#include</span><span class="sh_string" style="color: red; font-family: monospace;"><string.h></span>
<span class="sh_type" style="color: rgb(0, 100, 0);">int</span> <span class="sh_function" style="font-weight: bold;">main</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">()</span>
<span class="sh_cbracket" style="color: red;">{</span>
    <span class="sh_type" style="color: rgb(0, 100, 0);">char</span> a<span class="sh_symbol" style="color: rgb(139, 0, 0);">[</span><span class="sh_number" style="color: purple;">101</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">];</span>
	<span class="sh_type" style="color: rgb(0, 100, 0);">int</span> l<span class="sh_symbol" style="color: rgb(139, 0, 0);">,</span>i<span class="sh_symbol" style="color: rgb(139, 0, 0);">,</span>j<span class="sh_symbol" style="color: rgb(139, 0, 0);">,</span>t<span class="sh_symbol" style="color: rgb(139, 0, 0);">,</span>k<span class="sh_symbol" style="color: rgb(139, 0, 0);">;</span>
	<span class="sh_keyword" style="color: blue; font-weight: bold;">while</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">(</span><span class="sh_function" style="font-weight: bold;">gets</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">(</span>a<span class="sh_symbol" style="color: rgb(139, 0, 0);">))</span>
	<span class="sh_cbracket" style="color: red;">{</span>
		t<span class="sh_symbol" style="color: rgb(139, 0, 0);">=</span><span class="sh_number" style="color: purple;">0</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">;</span>
		k<span class="sh_symbol" style="color: rgb(139, 0, 0);">=</span><span class="sh_number" style="color: purple;">0</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">;</span>
		l<span class="sh_symbol" style="color: rgb(139, 0, 0);">=</span><span class="sh_function" style="font-weight: bold;">strlen</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">(</span>a<span class="sh_symbol" style="color: rgb(139, 0, 0);">);</span>
        <span class="sh_function" style="font-weight: bold;">printf</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">(</span><span class="sh_string" style="color: red; font-family: monospace;">"%s</span><span class="sh_specialchar" style="color: rgb(255, 192, 203); font-family: monospace;">\n</span><span class="sh_string" style="color: red; font-family: monospace;">"</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">,</span>a<span class="sh_symbol" style="color: rgb(139, 0, 0);">);</span>
		<span class="sh_keyword" style="color: blue; font-weight: bold;">for</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">(</span>i<span class="sh_symbol" style="color: rgb(139, 0, 0);">=</span><span class="sh_number" style="color: purple;">0</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">;</span>i<span class="sh_symbol" style="color: rgb(139, 0, 0);"><</span>l<span class="sh_symbol" style="color: rgb(139, 0, 0);">;</span>i<span class="sh_symbol" style="color: rgb(139, 0, 0);">++)</span>
		<span class="sh_cbracket" style="color: red;">{</span>
			<span class="sh_keyword" style="color: blue; font-weight: bold;">if</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">(</span>a<span class="sh_symbol" style="color: rgb(139, 0, 0);">[</span><span class="sh_number" style="color: purple;">0</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">]==</span><span class="sh_string" style="color: red; font-family: monospace;">')'</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">)</span>
			<span class="sh_cbracket" style="color: red;">{</span>
				a<span class="sh_symbol" style="color: rgb(139, 0, 0);">[</span><span class="sh_number" style="color: purple;">0</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">]=</span><span class="sh_string" style="color: red; font-family: monospace;">'?'</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">;</span>
					<span class="sh_keyword" style="color: blue; font-weight: bold;">continue</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">;</span>
			<span class="sh_cbracket" style="color: red;">}</span>
			<span class="sh_keyword" style="color: blue; font-weight: bold;">if</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">(</span>a<span class="sh_symbol" style="color: rgb(139, 0, 0);">[</span>i<span class="sh_symbol" style="color: rgb(139, 0, 0);">]==</span><span class="sh_string" style="color: red; font-family: monospace;">')'</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">)</span>
            <span class="sh_cbracket" style="color: red;">{</span>
				k<span class="sh_symbol" style="color: rgb(139, 0, 0);">=</span><span class="sh_number" style="color: purple;">0</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">;</span>
				<span class="sh_keyword" style="color: blue; font-weight: bold;">for</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">(</span>j<span class="sh_symbol" style="color: rgb(139, 0, 0);">=</span>i<span class="sh_number" style="color: purple;">-1</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">;</span>j<span class="sh_symbol" style="color: rgb(139, 0, 0);">>=</span><span class="sh_number" style="color: purple;">0</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">;</span>j<span class="sh_symbol" style="color: rgb(139, 0, 0);">--)</span>
				<span class="sh_cbracket" style="color: red;">{</span>
					<span class="sh_keyword" style="color: blue; font-weight: bold;">if</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">(</span>a<span class="sh_symbol" style="color: rgb(139, 0, 0);">[</span>j<span class="sh_symbol" style="color: rgb(139, 0, 0);">]==</span><span class="sh_string" style="color: red; font-family: monospace;">'('</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">)</span>
					<span class="sh_cbracket" style="color: red;">{</span>
						a<span class="sh_symbol" style="color: rgb(139, 0, 0);">[</span>j<span class="sh_symbol" style="color: rgb(139, 0, 0);">]=</span>a<span class="sh_symbol" style="color: rgb(139, 0, 0);">[</span>i<span class="sh_symbol" style="color: rgb(139, 0, 0);">]=</span><span class="sh_string" style="color: red; font-family: monospace;">'#'</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">;</span>
						k<span class="sh_symbol" style="color: rgb(139, 0, 0);">=</span><span class="sh_number" style="color: purple;">1</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">;</span>
						<span class="sh_keyword" style="color: blue; font-weight: bold;">break</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">;</span>
					<span class="sh_cbracket" style="color: red;">}</span>
					<span class="sh_keyword" style="color: blue; font-weight: bold;">else</span>
						<span class="sh_keyword" style="color: blue; font-weight: bold;">continue</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">;</span>
				<span class="sh_cbracket" style="color: red;">}</span>
				<span class="sh_keyword" style="color: blue; font-weight: bold;">if</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">(</span>k<span class="sh_symbol" style="color: rgb(139, 0, 0);">==</span><span class="sh_number" style="color: purple;">0</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">)</span>
				a<span class="sh_symbol" style="color: rgb(139, 0, 0);">[</span>i<span class="sh_symbol" style="color: rgb(139, 0, 0);">]=</span><span class="sh_string" style="color: red; font-family: monospace;">'*'</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">;</span>
			<span class="sh_cbracket" style="color: red;">}</span>
		
		<span class="sh_cbracket" style="color: red;">}</span>
		<span class="sh_keyword" style="color: blue; font-weight: bold;">for</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">(</span>i<span class="sh_symbol" style="color: rgb(139, 0, 0);">=</span><span class="sh_number" style="color: purple;">0</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">;</span>i<span class="sh_symbol" style="color: rgb(139, 0, 0);"><</span>l<span class="sh_symbol" style="color: rgb(139, 0, 0);">;</span>i<span class="sh_symbol" style="color: rgb(139, 0, 0);">++)</span>
		<span class="sh_cbracket" style="color: red;">{</span>
			<span class="sh_keyword" style="color: blue; font-weight: bold;">if</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">(</span>a<span class="sh_symbol" style="color: rgb(139, 0, 0);">[</span>i<span class="sh_symbol" style="color: rgb(139, 0, 0);">]==</span><span class="sh_string" style="color: red; font-family: monospace;">'('</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">)</span>
				a<span class="sh_symbol" style="color: rgb(139, 0, 0);">[</span>i<span class="sh_symbol" style="color: rgb(139, 0, 0);">]=</span><span class="sh_string" style="color: red; font-family: monospace;">'$'</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">;</span>
			<span class="sh_keyword" style="color: blue; font-weight: bold;">if</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">(</span>a<span class="sh_symbol" style="color: rgb(139, 0, 0);">[</span>i<span class="sh_symbol" style="color: rgb(139, 0, 0);">]==</span><span class="sh_string" style="color: red; font-family: monospace;">'*'</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">)</span>
				a<span class="sh_symbol" style="color: rgb(139, 0, 0);">[</span>i<span class="sh_symbol" style="color: rgb(139, 0, 0);">]=</span><span class="sh_string" style="color: red; font-family: monospace;">'?'</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">;</span>
		<span class="sh_cbracket" style="color: red;">}</span>
		<span class="sh_keyword" style="color: blue; font-weight: bold;">for</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">(</span>i<span class="sh_symbol" style="color: rgb(139, 0, 0);">=</span><span class="sh_number" style="color: purple;">0</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">;</span>i<span class="sh_symbol" style="color: rgb(139, 0, 0);"><</span>l<span class="sh_symbol" style="color: rgb(139, 0, 0);">;</span>i<span class="sh_symbol" style="color: rgb(139, 0, 0);">++)</span>
		<span class="sh_cbracket" style="color: red;">{</span>
			<span class="sh_keyword" style="color: blue; font-weight: bold;">if</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">(</span>a<span class="sh_symbol" style="color: rgb(139, 0, 0);">[</span>i<span class="sh_symbol" style="color: rgb(139, 0, 0);">]!=</span><span class="sh_string" style="color: red; font-family: monospace;">'$'</span> <span class="sh_symbol" style="color: rgb(139, 0, 0);">&&</span> a<span class="sh_symbol" style="color: rgb(139, 0, 0);">[</span>i<span class="sh_symbol" style="color: rgb(139, 0, 0);">]!=</span><span class="sh_string" style="color: red; font-family: monospace;">'?'</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">)</span>
				<span class="sh_function" style="font-weight: bold;">printf</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">(</span><span class="sh_string" style="color: red; font-family: monospace;">" "</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">);</span>
			<span class="sh_keyword" style="color: blue; font-weight: bold;">else</span>
				<span class="sh_function" style="font-weight: bold;">printf</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">(</span><span class="sh_string" style="color: red; font-family: monospace;">"%c"</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">,</span>a<span class="sh_symbol" style="color: rgb(139, 0, 0);">[</span>i<span class="sh_symbol" style="color: rgb(139, 0, 0);">]);</span>
		<span class="sh_cbracket" style="color: red;">}</span>
		<span class="sh_function" style="font-weight: bold;">printf</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">(</span><span class="sh_string" style="color: red; font-family: monospace;">"</span><span class="sh_specialchar" style="color: rgb(255, 192, 203); font-family: monospace;">\n</span><span class="sh_string" style="color: red; font-family: monospace;">"</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">);</span>
	<span class="sh_cbracket" style="color: red;">}</span>
	<span class="sh_keyword" style="color: blue; font-weight: bold;">return</span> <span class="sh_number" style="color: purple;">0</span><span class="sh_symbol" style="color: rgb(139, 0, 0);">;</span>
<span class="sh_cbracket" style="color: red;">}</span>



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章