一些代码

1、括号匹配

 

 
#include<stdio.h>
#include<stdlib.h> 
#include<string.h> 
typedef struct Node
{
	char data;//节点数据域 
	struct Node *pNext;//下一节点的指针域 
}NODE,*PNODE;
//建立栈 
typedef struct Stack
{
	PNODE pTop;//栈头指针
	PNODE pBottom;//栈尾部指针 
 }STACK,*PSTACK; 
 void init(PSTACK pS);
 void push(PSTACK pS,char val);
 int pop(PSTACK pS,char *val);
 int empty(PSTACK pS);
 void traverse(PSTACK pS);
 void clear(PSTACK pS);
 int progress(PSTACK pS,char data[10000]);
int main(int argc, char** argv) {
	int i;
	char data[10000];
	int result[100];
	STACK S;
	char val;
	init(&S);
    int length;
    scanf("%d",&length);
    for(i=0;i<length;i++)
    {
    	scanf("%s",data);
    	result[i]=progress(&S,data);
    
	}
	for(i=0;i<length;i++)
	{
		if(result[i])
		{
			printf("Yes\n");
		}
		else
		{
			printf("No\n");
		}
	}

	return 0;
} 
//初始化栈
void init(PSTACK pS)
{
	PNODE p=(PNODE)malloc(sizeof(NODE));
	if(p==NULL)
	{
		printf("初始化失败!\n");
	//	exit(-1);
	}
	else
	{
		p->pNext=NULL;
		pS->pTop=p;
		pS->pBottom=p;
	}
 } 
 //压入栈 
 void push(PSTACK pS,char val)
 {
 	PNODE pNew=(PNODE)malloc(sizeof(NODE));
 	if(pNew==NULL)
 	{
 		printf("压栈失败!\n");
 	//	exit(-1);
	 }
	 else
	 {
	 	
	 	pNew->data=val;
	 	pNew->pNext=pS->pTop;
	 	pS->pTop=pNew;
	 }
 }
 //判断栈是否为空
 int empty(PSTACK pS)
 {
 	if(pS->pBottom==pS->pTop)
 	{
 		return 1;
	 }
	 else
	 {
	 	return 0;
	 }
  } 
 //栈的遍历
  void traverse(PSTACK pS)
  {
  	PNODE p=pS->pTop;
  	while(p!=pS->pBottom)
  	{
  		printf("%c\n",p->data);
  		p=p->pNext;
	  }
  }
  //出栈
  int pop(PSTACK pS,char *val)
  {
  	PNODE p=pS->pTop;
  	if(!empty(pS))
  	{
  		pS->pTop=pS->pTop->pNext;
  		*val=p->data; 
  	//	free(p);
  		return 1;
	  }
	  else
	  {
	  	return 0;
	  }
   } 
   //栈的清空
   void clear(PSTACK pS)
   {
   	  PNODE p=NULL;
   	  
   	  while(empty(pS))
   	  {
   	  	p=pS->pTop;
   	  	pS->pTop=pS->pTop->pNext;
   	  //	free(p);
		 }
		 pS->pTop=pS->pBottom;
	} 
   //处理程序 
   int progress(PSTACK pS,char data[10000])
   {
   	int i;
   	int j=0;
   	int n=0;
   	int ch;
   	char val;
   	  int len=strlen(data);
   	  if((len%2)!=0)
   	  {
   	  	return 0;
	  }
		 else
		 {
		   clear(pS);
		 	push(pS,data[0]);
		 	for(i=1;i<len;i++)
		 	{
		 		if(pop(pS,&val))
		 		{
				 			ch=data[i]-val;
				 		if(ch!=1&&ch!=2)
				 		{
				 			
				 			push(pS,val);
				 			push(pS,data[i]);
						 }
						
					 
					 
				 }
		 		else
		 		{
		 			push(pS,data[i]);
				 }
		 
           }
           if(empty(pS))
					 {
					 	return 1;
					 }
					 else
					 {
					 	return 0;
					 }
         }
	   }         



2、从考试成绩中划分及格线

#include <stdio.h>
#include <stdlib.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {
	int a[10],i,s[7]={0};
	for(i=0;i<10;i++)
	{
		scanf("%d",&a[i]);
		switch(a[i]/10)
		{
			case 10:
		    case 9:
		    case 8:
		    case 7:
		    case 6:s[6]++;break;
		    case 5:s[5]++;break;
		    case 4:s[4]++;break;
		    case 3:s[3]++;break;
		    case 2:s[2]++;break;
		    case 1:s[1]++;break;
		    case 0:s[0]++;break;
		}
	}
	for(i=6;i>0;i--)
	{
		if(a[i]>=6)
		break;
		else
		a[i-1]+=a[i];
	}
	printf("%d",i*10);
	return 0;
}

3、控制灯亮,给出最后灯亮的盏数

#include <stdio.h>
#include <stdlib.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {
	int n,i,j,num,a;
	scanf("%d",&n);
	num=0;
	for(i=1;i<=n;i++)
	{
		a=0;
		for(j=1;j<=i;j++)
		{
			if(i%j==0)
			{
				a++;
			}
		}
		if(a%2==0)
		{
			num++;
		}
	 } 
	 printf("%d",num);
	return 0;
}



 
    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值