程序填空题
tk609.c程序实现检查任意输入的字符串s中左括号的个数是否与右括号的个数相同并且按从左到右的顺序查找右括号的个数在任何时候都不超过之前所遇到的左括号的个数。若满足条件则输出“符合要求”,否则输出“不符合要求”。
请在括号[ ]处补充完整程序,并删除[ ],运行测试,实现上述要求。不得增加行或删除行,也不得更改程序结构。
---------------------------------------------------
#include <stdio.h>
int f(char *s)
{
int i=0,j=0;
while(*s!='\0')
{
if(*s=='(')
i++;
else if(*s==')')
{
j++;
if([ ])
return 0;
}
[ ]
}
return 1;
}
void main()
{
char s[50];
int n;
printf("请输入一个字符串: ");
gets(s);
n=f(s);
if(n)
printf("符合要求\n");
else
printf("不符合要求\n");
}
#include <stdio.h>
int f(char *s)
{
int i=0,j=0;
while(*s!='\0')
{
if(*s=='(')
i++;
else if(*s==')')
{
j++;
if(j>i) //如果右括号多于左括号,返回0
return 0;
}
s++; //字符数组地址加1,查看下一个字符
}
return 1;
}
void main()
{
char s[50];
int n;
printf("请输入一个字符串: ");
gets(s);
n=f(s);
if(n)
printf("符合要求\n");
else
printf("不符合要求\n");
}
j>i 不符合要求时 返回0
s++; 指针后移
不过我觉得这道题不完整,应该在while 循环return 1之间加一个条件判断
if(i==j) return 1;
else return 0;
否则我举一个例子 ((((((()))(( 这种情况貌似也会打印出 符合要求
#include <stdio.h>
int f(char *s)
{
int i=0,j=0;
while(*s!='\0')
{
if(*s=='(')
i++;
else if(*s==')')
{
j++;
if(j>i)
return 0;
}
s++;
}
return 1;
}
void main()
{
char s[50];
int n;
printf("请输入一个字符串: ");
gets(s);
n=f(s);
if(n)
printf("符合要求\n");
else
printf("不符合要求\n");
}