c语言括号配对问题
题目描述括号'('、')'总以配对的形式出现,编写程序,判断一个字符串的括号是否配对。输入在输入的每一行中,,第一个数n表示该行文本中有几个字符。n之后接一个空格,然后是...
题目描述
括号 '(' 、')' 总以配对的形式出现,编写程序,判断一个字符串的括号是否配对。
输入
在输入的每一行中,,第一个数n表示该行文本中有几个字符。n之后接一个空格,然后是文本内容。
输出
输出括号是否配对,若配对,则输出 ‘Yes’,否则输出‘No’
样例输入
5 (()))
8 ((+=))()
样例输出
No
Yes
初学C语言,请大神们不要用太难的方法解,最好就用数组,循环选择语句解决。 展开
括号 '(' 、')' 总以配对的形式出现,编写程序,判断一个字符串的括号是否配对。
输入
在输入的每一行中,,第一个数n表示该行文本中有几个字符。n之后接一个空格,然后是文本内容。
输出
输出括号是否配对,若配对,则输出 ‘Yes’,否则输出‘No’
样例输入
5 (()))
8 ((+=))()
样例输出
No
Yes
初学C语言,请大神们不要用太难的方法解,最好就用数组,循环选择语句解决。 展开
2个回答
展开全部
#include<string.h>
#include<stdlib.h>
#include <stdio.h>
int main(){
char a[100]; //假设长度小于100
gets(a);//or scanf("%s",a);
int t=0,kuohao=0;
for(;t<strlen(a);t++)
{
if(a[t]='(') //左括号的情况
kuohao++;
else if(a[t]=')') kuohao--;
}
if(kuohao) printf("NO"); //kuoho=0时,if返回false
else printf("Yes");
}
展开全部
#include<stdio.h>
#include<stdlib.h>
int isPair(char *s)
{
int i,j=0,k=0;
for(i=0;s[i]!='\0';i++)
{
if(s[i]=='(') j++;
if(s[i]==')') k++;
}
if(j==k) return 1;
return 0;
}
int main()
{
int n;
char *s;
scanf("%d",&n);
s=(char*)malloc((n+1)*sizeof(char));
scanf("%s",s);
if(isPair(s)) printf("Yes\n");
else printf("No\n");
free(s);
return 0;
}
#include<stdlib.h>
int isPair(char *s)
{
int i,j=0,k=0;
for(i=0;s[i]!='\0';i++)
{
if(s[i]=='(') j++;
if(s[i]==')') k++;
}
if(j==k) return 1;
return 0;
}
int main()
{
int n;
char *s;
scanf("%d",&n);
s=(char*)malloc((n+1)*sizeof(char));
scanf("%s",s);
if(isPair(s)) printf("Yes\n");
else printf("No\n");
free(s);
return 0;
}
更多追问追答
追问
貌似不太对哦…… 测试运行结果不对
追答
思路应该没问题,可能输入和内存分配那有点问题,我没测试,你试试楼下的,思路也差不多。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询