2 ylxd41 ylxd41 于 2016.09.15 17:28 提问

求助,括号配对问题,c语言

// acm 括号配对.cpp : 定义控制台应用程序的入口点。
//输入样本个数和括号样本,看括号是否可以配成对

#include "stdafx.h"
#include

int _tmain(int argc, _TCHAR* argv[])
{
int n;
char*p;
int s;
char name[21];
p=name;
printf("请输入样本个数:");
scanf("%d",&n);
for(int i=0;i<n;i++)
{
printf("请输入测试样本:");
scanf("%s",&name);
s=strlen(name);
if(s%2!=0)//若输入样本为基数则不可能配对
printf("wrong\n");
else
for(int w=0;w<s;w++)
{
if(*(p+w)==(*(p+s)-w-2))//按顺序进行扫描字符
continue;
else
printf("wrong\n");
}
printf("right\n");
}
return 0;
}

2个回答

smileufo
smileufo   2016.09.15 17:52

我是学生一枚,括号是否可以配对什么意思?看了一下你的程序,到最后都会执行printf("right\n");哟,真的要这样吗?

smileufo
smileufo 回复ylxd41: 如果是判断是否成对会比较难吧,要看ASCII表,成对的符号对应的ASCII码也没有规律。如果只是判断abccba,((abba((这样的就容易一些。
大约一年之前 回复
ylxd41
ylxd41 不是,例如输入((),显示wrong 输入(),显示right 组成完整成对的括号
大约一年之前 回复
smileufo
smileufo   2016.09.15 22:16

/********* 只是实现了例如 "abc(dd(cba" **********/
#include "stdio.h"
#include "string.h"
int main()
{
int n;
char*p;
int s;
char name[21];
p=name;
printf("请输入样本个数:");
scanf("%d",&n);
for(int i=0;i<n;i++)
{
printf("请输入测试样本:");
scanf("%s",&name);
s=strlen(name);
if(s%2!=0)//若输入样本为基数则不可能配对
printf("wrong\n");
else
{
int w;
for(w=0;w<s/2;w++)
if(*(p+w)==*(p+s-w-1))//按顺序进行扫描字符
continue;
else
{
printf("wrong\n");
break;

}

if(w==s/2)
printf("right\n");
}
}
return 0;

Csdn user default icon
上传中...
上传图片
插入图片