//------------进制转换-------------> void Conversion(int N,int R) //把十进制数N转换为R进制(R>=2)并输出 { Stack S; int x; char t; InitStack(&S); while(N>0) { x = N%R; if(x>9) switch(x%10) { case 0: t = 'A';break; case 1: t = 'B';break; case 2: t = 'C';break; case 3: t = 'D';break; case 4: t = 'E';break; case 5: t = 'F';break; } else t = x + '0'; Push(&S,t); N = N/R; } while(!EmptyStack(&S)) { Pop(&S,&t); printf("%c",t); } printf("\n"); } void main() { Conversion(100,2); Conversion(16,16); } //<------------进制转换------------- //------------括号匹配问题-------------> void check(char *strings) { Stack s; char x; int flag = 1; InitStack(&s); while(*strings!='\0' && *strings!='\n' && flag) { if(*strings == '(') Push(&s,*strings);//读入左括号,左括号入栈 if(*strings ==')') { if(EmptyStack(&s))//栈为空,无左括号配对,出错 flag = 0; else Pop(&s,&x);//有左括号配对,去左括号 } strings++; } if(!EmptyStack(&s))//栈不为空,左括号数目多于右括号数目,出错 flag = 0; if(flag == 1) printf("左括号和右括号匹配!\n"); else printf("左括号和右括号不匹配!\n"); } void main() { char s[200]; printf("输入包含左括号和右括号的字符串:\n"); gets(s); check(s); } //<-----------括号匹配问题-------------- |
|
来自: changqiong0606 > 《C/C 》