zoukankan      html  css  js  c++  java
  • 面向对象程序设计2020第一次作业(问答题+实践题+编程题)

    这个作业属于哪个课程 2020福大面向对象程序设计
    这个作业要求在哪里 【寒假作业1】(https://www.cnblogs.com/jhy16193335/p/12212380.html)
    这个作业的目标 安装开发环境,了解编译过程,实现白话文编程,记录学习过程,发布博客
    作业正文 问答题、实践题、编程题
    其他参考文献 【在windows命令行中如何运行c程序的文本】(https://zhidao.baidu.com/question/366892157337055052.html)
    问答题:
    在我看来,C语言的缺陷主要体现在对语法限制不严格,对变量的约束也并不严格,这就会导致整个程序的不安全性。C语言中大部分的错误并不能通过简单的编译发现,需要自己通过结果去调试。还有诸如数组越界问题在处理边界问题(像之前的一道题目扫雷)就体现的很清楚。还有整数溢出问题,对于整型及实型的变量类型都有一定的范围,一旦超过一定的变量范围,数值就会溢出,就得考虑通过数组来实现。还有字符串输入,字符串输入可以通过“scanf(“%s,a[])”和“gets()”实现,但如果忘记在“gets()”后将回车吞掉,就会导致后续的输入输出出现问题。
    鉴于我目前对C++并不了解,我大致通过查阅资料(《C++ Prime Plus》)可以得出C++与C语言相较的优点在于:C语言是面向过程的一种编程语言,而C++是面向对象的一种编程语言。C语言采用结构化编程,自顶向下,使得C语言便于维护,但不利于编写大型程序;而C++面向对象,把问题分解成各个对象,建立对象的目的不是为了完成某一个步骤,而是为了描述某个事物在整个问题的步骤中的行为。OOP(面向对象编程)设计类,类规定了可使用哪些数据来表示对象以及可以对数据执行哪些操作。其次,OOP还有助于创建可重用的代码。信息隐藏可以保护数据,使其免遭不适当的访问。多态能够为运算符和函数创建多个定义,通过编程上下文来确定使用哪个定义。继承能够使用旧类派生出新类。同时,C++还支持泛型编程。泛型编程强调独立于特定数据类型,它可以提供执行常见任务(如对数据排序或合并链表)的工具。
    C语言编译过程:C源程序—>预编译处理—>编译—>汇编—>链接
    由.c文件到.i文件,这个过程称为预处理;
    由.i文件到.s文件,这个过程称为编译;
    由.s文件到.o文件,这个过程称为汇编;
    由.o文件到可执行文件,这个过程称为链接。
    实践题:
    1、
    打开visual studio界面,选择工具栏—>命令行—>开发者命令提示,然后输入cl.exe即可查看编辑器版本。
    2、首先在visual studio界面。在键盘上同时按win+R,输入cmd,即可打开cmd界面;
    然后,输入所要编译的程序所在的盘,比如D盘(注意D后的冒号为英文的),然后输入确切地址即可编译。
    若编译C++文件,输入gcc,输入gcc时,命令行显示信息:不是内部或外部命令,也不是可运行的程序或批处理文件。
    需要在环境变量中添加gcc.exe的路径:
    首先打开我的电脑,右击此电脑,点击属性,
    “更改设置”——>“高级”——>“环境变量”——>“系统变量编辑”——>“新建”——>“添上gcc.exe”即可。
    编程题:
    在做这道题时,遇到的第一个问题在于文字如何存储,后来了解到可以用数组存储(即将一个文字视为一个字符)。原先,我想定义一个数组s[15],并且用s【9】与数字比较(即if(strcmp(s[9],“零”))==0),用于存放最初的值。但是在编译时会报错
    因此,后来用四个数组存放类似“整数 钱包 等于 零”,再将“零”拿来比较,即
    int zhi(char s[15])
    	{
    		if(strcmp(s,"零")==0)
    			return 0;
    		else
    			if(strcmp(s,"一")==0)
    				return 1;
    		else
    			if(strcmp(s,"二")==0)
    				return 2;
    		else
    			if(strcmp(s,"三")==0)
    				return 3;
    		else
    			if(strcmp(s,"四")==0)
    				return 4;
    		else
    			if(strcmp(s,"五")==0)
    				return 5;
    		else
    			if(strcmp(s," 六")==0)
    				return 6;
    		else
    			if(strcmp(s,"七")==0)
    				return 7;
    		else
    			if(strcmp(s,"八")==0)
    				return 8;
    		else
    			return 9; 
    	}
    

    鉴于我们无法确定输入中只有两次运算,因此我选择用循环语句判断。即
    while(1)
    {
    scanf("%s %s %s",str1,str2,str3);
    if(strcmp(str1,"输出")==0)
    break;
    若不是,就继续输入。
    这是完整的代码:

    # include<stdio.h>
    # include<string.h>
    int main()
    	{
    		int sum;
    		int zhi(char s[15]);
    		int zengjia(char s[15]);
    		int jianshao(char s[15]);
    		void shuchu(int sum);
    		char s1[15],s2[15],s3[15],s4[15];
    		char str1[15],str2[15],str3[15];
    		char a[15],b[15];
    		scanf("%s %s %s %s",s1,s2,s3,s4);
    		sum=zhi(s4);
    		while(1)
    		    {
    			scanf("%s %s %s",str1,str2,str3);
    			if(strcmp(str1,"输出")==0)
    			    break;
    			else
    			    {
    				if(strcmp(str2,"增加")==0)
    				    {
    					sum=sum+zengjia(str3);
    				    }
    				else
    				    if(strcmp(str2,"减少")==0)
    					{
    				            sum=sum-jianshao(str3);
    					}
    			    }
    		    }
    		scanf("%s %s",a,b);
    		if(strcmp(b,str2)==0)
    			shuchu(sum);
    		return 0;
    	}
    int zhi(char s[15])
    	{
    		if(strcmp(s,"零")==0)
    			return 0;
    		else
    			if(strcmp(s,"一")==0)
    				return 1;
    		else
    			if(strcmp(s,"二")==0)
    				return 2;
    		else
    			if(strcmp(s,"三")==0)
    				return 3;
    		else
    			if(strcmp(s,"四")==0)
    				return 4;
    		else
    			if(strcmp(s,"五")==0)
    				return 5;
    		else
    			if(strcmp(s," 六")==0)
    				return 6;
    		else
    			if(strcmp(s,"七")==0)
    				return 7;
    		else
    			if(strcmp(s,"八")==0)
    				return 8;
    		else
    			return 9; 
    	}
    int zengjia(char s[15])
    	{
    		if(strcmp(s,"零")==0)
    			return 0;
    		else
    			if(strcmp(s,"一")==0)
    				return 1;
    		else
    			if(strcmp(s,"二")==0)
    				return 2;
    		else
    			if(strcmp(s,"三")==0)
    				return 3;
    		else
    			if(strcmp(s,"四")==0)
    				return 4;
    		else
    			if(strcmp(s,"五")==0)
    				return 5;
    		else
    			if(strcmp(s," 六")==0)
    				return 6;
    		else
    			if(strcmp(s,"七")==0)
    				return 7;
    		else
    			if(strcmp(s,"八")==0)
    				return 8;
    		else
    			return 9; 
    	}
    int jianshao(char s[15])
    	{
    		if(strcmp(s,"零")==0)
    			return 0;
    		else
    			if(strcmp(s,"一")==0)
    				return 1;
    		else
    			if(strcmp(s,"二")==0)
    				return 2;
    		else
    			if(strcmp(s,"三")==0)
    				return 3;
    		else
    			if(strcmp(s,"四")==0)
    				return 4;
    		else
    			if(strcmp(s,"五")==0)
    				return 5;
    		else
    			if(strcmp(s," 六")==0)
    				return 6;
    		else
    			if(strcmp(s,"七")==0)
    				return 7;
    		else
    			if(strcmp(s,"八")==0)
    				return 8;
    		else
    			return 9; 
    	}
    void shuchu(int sum)
    	{
    		int m,n;
    		if(sum<=10)
    			{
    				if(sum==0)
    					printf("零");
    				else
    					if(sum==1)
    						printf("一");
    				else
    					if(sum==2)
    						printf("二");
    				else
    					if(sum==3)
    						printf("三");
    				else
    					if(sum==4)
    						printf("四");
    				else
    					if(sum==5)
    						printf("五");
    				else
    					if(sum==6)
    						printf("六");
    				else
    					if(sum==7)
    						printf("七");
    				else
    					if(sum==8)
    						printf("八");
    				else
    					if(sum==9)
    						printf("九");
    				else
    					printf("十");
    			}
    		else
    			{
    				m=sum/10;n=sum%10;
    				if(m==1)
    					{
    						if(n==1)
    							printf("十一");
    						else
    							if(n==2)
    								printf("十二"); 
    						else
    							if(n==3)
    								printf("十三");
    						else
    							if(n==4)
    								printf("十四");
    						else
    							if(n==5)
    								printf("十五");
    						else
    							if(n==6)
    								printf("十六");
    						else
    							if(n==7)
    								printf("十七");
    						else
    							if(n==8)
    								printf("十八");
    						else
    							printf("十九"); 
    					}
    				else
    					if(m==2)
    						{
    							if(n==0)
    								printf("二十"); 
    							else 
    								if(n==1)
    									printf("二十一");
    							else
    								if(n==2)
    									printf("二十二"); 
    							else
    								if(n==3)
    									printf("二十三");
    							else
    								if(n==4)
    									printf("二十四");
    							else
    								if(n==5)
    									printf("二十五");
    							else
    								if(n==6)
    									printf("二十六");
    							else
    								if(n==7)
    									printf("二十七");
    							else
    								if(n==8)
    									printf("二十八");
    							else
    								printf("二十九"); 		
    						}	
    					if(m==3)
    						{
    							if(n==0)
    								printf("三十"); 
    							else 
    								if(n==1)
    									printf("三十一");
    							else
    								if(n==2)
    									printf("三十二"); 
    							else
    								if(n==3)
    									printf("三十三");
    							else
    								if(n==4)
    									printf("三十四");
    							else
    								if(n==5)
    									printf("三十五");
    							else
    								if(n==6)
    									printf("三十六");
    							else
    								if(n==7)
    									printf("三十七");
    							else
    								if(n==8)
    									printf("三十八");
    							else
    								printf("三十九"); 	
    						}
    					else
    						if(m==4)
    							{
    								if(n==0)
    								printf("四十"); 
    							else 
    								if(n==1)
    									printf("四十一");
    							else
    								if(n==2)
    									printf("四十二"); 
    							else
    								if(n==3)
    									printf("四十三");
    							else
    								if(n==4)
    									printf("四十四");
    							else
    								if(n==5)
    									printf("四十五");
    							else
    								if(n==6)
    									printf("四十六");
    							else
    								if(n==7)
    									printf("四十七");
    							else
    								if(n==8)
    									printf("四十八");
    							else
    								printf("四十九"); 		
    							} 
    					else
    						if(m==5)
    							{
    								if(n==0)
    								printf("五十"); 
    							else 
    								if(n==1)
    									printf("五十一");
    							else
    								if(n==2)
    									printf("五十二"); 
    							else
    								if(n==3)
    									printf("五十三");
    							else
    								if(n==4)
    									printf("五十四");
    							else
    								if(n==5)
    									printf("五十五");
    							else
    								if(n==6)
    									printf("五十六");
    							else
    								if(n==7)
    									printf("五十七");
    							else
    								if(n==8)
    									printf("五十八");
    							else
    								printf("五十九"); 		
    							} 
    					else
    						if(m==6)
    							{
    								if(n==0)
    								printf("六十"); 
    							else 
    								if(n==1)
    									printf("六十一");
    							else
    								if(n==2)
    									printf("六十二"); 
    							else
    								if(n==3)
    									printf("六十三");
    							else
    								if(n==4)
    									printf("六十四");
    							else
    								if(n==5)
    									printf("六十五");
    							else
    								if(n==6)
    									printf("六十六");
    							else
    								if(n==7)
    									printf("六十七");
    							else
    								if(n==8)
    									printf("六十八");
    							else
    								printf("六十九"); 	
    							}
    					else
    						if(m==7)
    							{
    								if(n==0)
    								printf("七十"); 
    							else 
    								if(n==1)
    									printf("七十一");
    							else
    								if(n==2)
    									printf("七十二"); 
    							else
    								if(n==3)
    									printf("七十三");
    							else
    								if(n==4)
    									printf("七十四");
    							else
    								if(n==5)
    									printf("七十五");
    							else
    								if(n==6)
    									printf("七十六");
    							else
    								if(n==7)
    									printf("七十七");
    							else 
    								if(n==8)
    									printf("七十八");
    							else
    								printf("七十九"); 	
    							}
    					else
    						if(m==8)
    							{
    								if(n==0)
    								printf("八十"); 
    							else 
    								if(n==1)
    									printf("八十一");
    							else
    								if(n==2)
    									printf("八十二"); 
    							else
    								if(n==3)
    									printf("八十三");
    							else
    								if(n==4)
    									printf("八十四");
    							else
    								if(n==5)
    									printf("八十五");
    							else
    								if(n==6)
    									printf("八十六");
    							else
    								if(n==7)
    									printf("八十七");
    							else
    								if(n==8)
    									printf("八十八");
    							else
    								printf("八十九"); 		
    							} 
    					else
    						{
    							if(n==0)
    								printf("九十"); 
    							else 
    								if(n==1)
    									printf("九十一");
    							else
    								if(n==2)
    									printf("九十二"); 
    							else
    								if(n==3)
    									printf("九十三");
    							else
    								if(n==4)
    									printf("九十四");
    							else
    								if(n==5)
    									printf("九十五");
    							else
    								if(n==6)
    									printf("九十六");
    							else
    								if(n==7)
    									printf("九十七");
    							else
    								if(n==8)
    									printf("九十八");
    							else
    								printf("九十九"); 	
    						} 
    			} 
    	}
    

    但这份代码,它存在的问题在于:首先,我在运行的时候,他不能运行出结果,即
    ;
    其次,我仅考虑输入的各位数字均为十以下的数字,而且我采用的是枚举法,若数字增大,则这个方法非常不试用;
    其三,我上文中的第一种用是s[9]与数字(0~9)比较不能编译成功的原因还不了解。

  • 相关阅读:
    提取RDLC reporting相关dll的方式,打包客户端时需要用
    VS2012程序打包部署详解
    快速打包你的应用程序——Inno Setup
    "RDLC"报表-参数传递及主从报表
    如何在多个页中显示行标题和列标题 (Reporting Services)
    编译cocos2d-x 4.0版本
    2080Ti评测结果
    (转)u3d设计模式
    java基础知识(一)
    Java8新特性学习(一)--lambda表达式
  • 原文地址:https://www.cnblogs.com/dudu340/p/12231479.html
Copyright © 2011-2022 走看看