填空题 输入一字符串str,判断其中“(”与“)”是否配对,即“(”与“)”个数相等,且从第一个字符开始,任何时候“)”的个数都不超过“(”的个数。
#include<stdio.h>
int main()
{
char str[81], *p=str;
int k=0;
gets(str);
while(*p!=0)
{
if( 1)
k++;
else if(*p==")")
2;
if(k<0)
break;
p++;
}
if( 3)
printf("RIGHT/n"); /*配对*/
else
printf("ERROR/n"); /*不配对*/
return 0;
}
【正确答案】
【答案解析】*p=="(" k-- k==0[解析] 从str中的第1个字符开始扫描直到结束,设置一变量k(初值为0),当遇到“(”时,k++,当遇到“)”时,k--。这样,若出现k<0,则说明从已扫描的字符串中“)”的个数多于“(”的个数,“(”与“)”不配对;若出现k>=0,则说明已扫描的字符串中的“(”的个数多于或等于“)”的个数,应继续扫描。扫描结束后,若k==0,则说明字符串str中“(”的个数等于“)”的个数,“(”与“)”配对。根据此思路,可得各答案。