zoukankan      html  css  js  c++  java
  • 第一次编程作业

    这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzzcxy/SE
    这个作业要求在哪里 https://edu.cnblogs.com/campus/fzzcxy/SE/homework/10283
    这个作业的目标 中文语言编译器
    作业正文 如下
    其他参考文献

    ithub仓库地址:https://github.com/ARIES-7/FIRST

    代码行数:205行

    作业所需数字转换:

    -汉转数:

    int change(char x[]){
    	if(strcmp(x,"零") == 0)
    		return 0;
    	if(strcmp(x,"一") == 0)
    		return 1;
    	if(strcmp(x,"二") == 0)
    		return 2;
    	if(strcmp(x,"三") == 0)
    		return 3;
    	... (同上)
    }
    

    -数转汉:

    void change2(int a){
    	int x,y;
    	if(a == 0)
    		printf("零"); //特殊情况
    	if(a%10 == 0)
    	{
    		switch(a/10){
    			case 1:
    				printf("十");break;
    			case 2:
    				printf("二十");break;
    			case 3:
    				printf("三十");break;
    			...
    		}
    	}
    	else{
    		x=a/10;
    		y=a%10;
    		switch(x){
    			case 1:
    				printf("十");break;
    			case 2:
    				printf("二十");break;
    			case 3:
    				printf("三十");break;
    			case 4:
    				printf("四十");break;
    			...
    		}
    		switch(y){
    			case 1:
    				printf("一");break;
    			case 2:
    				printf("二");break;
    			case 3:
    				printf("三");break;
    			case 4:
    				printf("四");break;
    			... (同)
    		}
    	
    	}
    }
    

    此处数字汉字转换还未考虑到上百

    遇到提取引号内文字:

    void tq(char y[]){
    	char s[100];
    	int i=0,n=0;
    	while(y[i]!='"' && y[i]!='' )
    				i++;
    			while(1){
    				i++;
    				if(y[i]!='"') 
    					s[n++]=y[i];
    				else
    					break;
    			}
    			s[n++]='';
    	printf("%s
    ",s);
    }
    

    主函数实现:

    	while(scanf("%s",&y1)){      //先输入一个字符串,进行判断  案例共有四种可能
    		if(strcmp(y1,"整数") == 0){        //读入数据
    			if(flag == 0){
    				scanf("%s %s %s",&x1,&x3,&x4);
    				a+=change(x4);
    				flag=1;
    			}
    			else{
    				scanf("%s %s %s",&x2,&x3,&x4);
    				b+=change(x4);
    			}
    		}
    		else if(strcmp(y1,"看看") == 0){    //打印数据
    			scanf("%s",&y2);
    			if(strcmp(y2,x1) == 0){	
    				change2(a);
    				printf("
    ");
    			}
    			if(strcmp(y2,x2) == 0){	
    				change2(b);
    				printf("
    ");
    			}
    		}
    		else if(strcmp(y1,"如果") == 0){  //特殊处理
    			scanf(...);
    			if(strcmp(z5,"看看") == 0)
    				if(strcmp(z1,x1) == 0){
    					if(a>change(z3)) tq(z6);
    					else tq(z9);
    				}
    				else{
    					if(b>change(z3)) tq(z6);
    					else tq(z9);
    				}
    			else{
    				if(strcmp(z1,x1) == 0){
    					if(a>change(z3)) 
    						if(strcmp(z6,"增加") == 0)
    							if(strcmp(z5,x1) == 0) a+=change(y3);
    							else b+=change(y3);
    								
    						else if(strcmp(z6,"减少") == 0)
    							if(strcmp(z5,x1) == 0) a-=change(y3);
    							else b-=change(y3);	
    					else
    						if(strcmp(z9,"无") == 0) break;
    				}
    				else{
    					if(b>change(z3)) 
    						(重复) 同上增减
    				}
    			}
    		}
    		else{         //数据处理
    			scanf("%s %s",&y2,&y3);
    			if(strcmp(y2,"增加") == 0){
    				if(strcmp(y1,x1) == 0)
    					a+=change(y3);
    				else
    					b+=change(y3);
    			}		
    			else if(strcmp(y2,"减少") == 0){
    				if(strcmp(y1,x1) == 0)
    					a-=change(y3);
    				else
    					b-=change(y3);
    			}	
    		}
    	}
    	return 0;
    }
    

    作业中的问题:

    本次代码只能实现部分固定句式的测试,若是增加或句式改变,仍然存在问题。

  • 相关阅读:
    Hanoi塔问题
    《OD学hive》第六周20160731
    《OD学Hive》第六周20160730
    《OD学Sqoop》数据转换工具Sqoop
    《OD学hive》第五周0723
    《OD学hive》第四周0717
    《OD学hadoop》第四周0716
    hadoop环境搭建笔记
    《OD学hadoop》第三周0710
    《OD学hadoop》第三周0709
  • 原文地址:https://www.cnblogs.com/line-in/p/12285928.html
Copyright © 2011-2022 走看看