c语言中的 { } 大括号的使用,什么时候需要什么 ?

c语言中的 { } 大括号的使用,什么时候需要什么 ?,第1张

括号也称花括号是程序块的分界符,大括号起的作用主要就是划分区域用的。

没有规定for后面一定要加大括号,如果for循环里只有一个语句,如果有多个语句,就需要用一个大括号把他们包起来。

比如:if(a>b) println("a>b")与if(a>b) { println("a>b")},其实效果是一样的但有的时候是必须用到大括号的。

比如:当if语句后有多条语句的话就需要大括号与别的语句继续区分。比如:if(a>b){ max=aprintln("max=%d",c)}。

扩展资料

大括号号使用注意事项:

在Kb&R格式中,开括号总是与使用它的语句在同一行上,而闭括号总是在它所关闭的语句的下一行上,并且与该语句对齐。例如,在上例中,if语句的开括号和它在同一行上,|f语句的闭括号在它的下一行上,并且与它对齐。

在与if语句对应的else条件语句以及出现在程序段后部的while语句中,情况也是这样的。在Allman格式中,每个大括号都单独成行,并且开括号和闭括号都与使用它们的语句对齐。与Allman格式相同,Whitesmiths格式也要求大括号单独成行,但是它们要和它们所包含的语句对齐。

例如,在if语句的开括号是与第一个printf()函数调用对齐的。不管使用哪一种格式,一定要保持前后一致——这将有助于其它人更方便地读程序。

参考资料来源:百度百科—大括号

头文件:(另存为SeqStack.h)

typedef struct

{

DataType stack[MaxStackSize]

int top

} SeqStack

void StackInitiate(SeqStack *S)/*初始化顺序堆栈S*/

{

S->top = 0 /*定义初始栈顶下标值*/

}

int StackNotEmpty(SeqStack S)

/*判顺序堆栈S非空否,非空则返回1,否则返回0*/

{

if(S.top <= 0) return 0

else return 1

}

int StackPush(SeqStack *S, DataType x)

/*把数据元素值x压入顺序堆栈S,入栈成功则返回1,否则返回0 */

{

if(S->top >= MaxStackSize)

{

printf("堆栈已满无法插入! \n")

return 0

}

else

{

S->stack[S->top] = x

S->top ++

return 1

}

}

int StackPop(SeqStack *S, DataType *d)

/*d出顺序堆栈S的栈顶数据元素值到参数d ,出栈成功则返回1,否则返回0*/

{

if(S->top <= 0)

{

printf("堆栈已空无数据元素出栈! \n")

return 0

}

else

{

S->top --

*d = S->stack[S->top]

return 1

}

}

int StackTop(SeqStack S, DataType *d)

/*取顺序堆栈S的当前栈顶数据元素值到参数d ,成功则返回1,否则返回0*/

{

if(S.top <= 0)

{

printf("堆栈已空! \n")

return 0

}

else

{

*d = S.stack[S.top - 1]

return 1

}

}

括号问题

#include <string.h>

#include <stdio.h>

#include <stdlib.h>

#define MaxStackSize 100

typedef char DataType

#include "SeqStack.h"

void ExpIsCorrect(char exp[], int n)

//判断有n个字符的字符串exp左右括号是否配对正确

{

SeqStack myStack//定义链式堆栈

int i

char c

StackInitiate(&myStack)

for(i = 0i <ni++)

{

if((exp[i] == '(') || (exp[i] == '[') || (exp[i] == '{'))

StackPush(&myStack, exp[i]) //入栈

else if(exp[i] == ')' &&StackNotEmpty(myStack)

&&StackTop(myStack, &c) &&c == '(')

StackPop(&myStack, &c)//出栈

else if(exp[i] == ')' &&StackNotEmpty(myStack)

&&StackTop(myStack, &c) &&c != '(')

{

printf("左右括号配对次序不正确!\n")

return

}

else if(exp[i] == ']' &&StackNotEmpty(myStack)

&&StackTop(myStack, &c) &&c == '[')

StackPop(&myStack, &c)//出栈

else if(exp[i] == ']' &&StackNotEmpty(myStack)

&&StackTop(myStack, &c) &&c != '[')

{

printf("左右括号配对次序不正确!\n")

return

}

else if(exp[i] == '}' &&StackNotEmpty(myStack)

&&StackTop(myStack, &c) &&c == '{')

StackPop(&myStack, &c)//出栈

else if(exp[i] == '}' &&StackNotEmpty(myStack)

&&StackTop(myStack, &c) &&c != '{')

{

printf("左右括号配对次序不正确!\n")

return

}

else if(((exp[i] == ')') || (exp[i] == ']') || (exp[i] == '}'))

&&!StackNotEmpty(myStack))

{

printf("右括号多于左括号!\n")

return

}

}

if(StackNotEmpty(myStack))

printf("左括号多于右括号!\n")

else

printf("左右括号匹配正确!\n")

}

void main(void)

{

char a[] = "(())abc{[)(]}" //测试例子1。左右括号配对次序不正确

char b[] = "(()))abc{[]}" //测试例子2。右括号多于左括号

char c[] = "(()()abc{[]}" //测试例子3。左括号多于右括号

char d[] = "(())abc{[]}" //测试例子4。左右括号匹配正确

int n1 = strlen(a)

int n2 = strlen(b)

int n3 = strlen(c)

int n4 = strlen(d)

ExpIsCorrect(a, n1)

ExpIsCorrect(b, n2)

ExpIsCorrect(c, n3)

ExpIsCorrect(d, n4)

}

二者放于同一目录下即可


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11446275.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-16
下一篇2023-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存