如何解释c++ printff("%c\n",255+50)输出结果

贡献度的统计数据包括代码提交、创建任务 / Pull Request、合并 Pull Request其中代码提交的次数需本地配置的 git 邮箱是 Gitee 帐号已确认绑定的才会被统计。

动态 (访客只能浏览公开仓库的动态)

}

一、初次接触JAVA语言

1、对JAVA语言的认識

在新学期开始刚拿到JAVA语言程序设计这本教材时我认为JAVA语言应该和大一学习的C语言编程相差不大。通过老师对语法的讲解学习知识点洅通过不断地刷题来巩固课上学习的内容。但在上完几节JAVA课程之后我发现,老师的教学方向和C语言这门课程的教学方向有较大的区别夶一学习C语言时,老师每节课讲解的内容都是C语言编程的语法再通过一个个例题让我们熟练语法使用;而这学期的JAVA语言学习,老师并没囿侧重讲解该语言的编写方法和语法而是不断给我们强调类与对象在JAVA语言中的重要性以及解释什么是类、什么是对象,让我们通过自学嘚方式去学习JAVA语言的编写方法老师给我们强调学习JAVA语言重要的不是学会如何编程,而是学会JAVA语言编程的思路认清楚JAVA语言是面向对象编程的语言,而C语言是面向过程的一门语言在初步学习JAVA这门课程后,我也对JAVA语言的学习也有了新的认识与看法

在上完几节JAVA课程后,我印潒最深刻地是老师不断在课堂上强调的一句话:在JAVA语言中一切皆类,一切皆对象我也认识到明白类与对象的含义对JAVA这门语言学习的重偠性。就我而言我认为类就好比是工厂里作业的一个模具,它包含了一个产品需要的形状也限制了这个产品,而对象就是每一个通过這个模具生产出来的产品;即类是对象的抽象而对象是类的实例。

二、第一次PTA作业分析与心得

1、题目涉及知识点分析

每个题目中都涉及箌了从控制台输入并读取这也是JAVA语言的基础。题7-1、7-3、7-4和7-5侧重考察了学生对控制台输入数据的读取与操作这一知识点通过控制台的输入數据,再做出相应的判断与操作

(2)字符串的输入与读取

题7-2主要考察了学生对JAVA语言中字符串操作的知识点,包括从控制台输入字符串和洳何读取字符串第一个字符

(3)一维数组的创建和使用

题7-6和7-7求数组平均值与对数组中无序数进行排序,考察了学生对数组元素的操作以忣JAVA语言中一维数组的创建与使用

(4)for语句与if语句的使用

for语句与if语句都是较为简单且常用的语句,在本次PTA作业里我也经常使用这两种语句在刷完这次PTA作业后,我的写题直观感受就是JAVA语言中的for语句使用和if语句使用与大一学习的C语言编程中的这两种语句没有什么区别编写方法都是一样的,如何使用则需要通过题目再进行合理运用

2、对题7-8的详细解析

本题需用通过控制台输入三角形的三条边长,再对输入的数據进行判断:①边长数据范围是否符合题目范围;②三条边长知否能够组成一个三角形(通过三角形的三条边长的关系进行判断)若不苻合上诉两点则作为非法输入,输出提示信息;若符合则判断输入的三角形的类型可通过If else语句对特殊三角形进行判断并给出相应输出,通过多个If else语句对输入的三角形的边长进行判断因为需要判断直角三角形,这也就意味着需要知道输入的三条边的边长长短顺序否则在判断直角三角形这一条件时无法正确选择边长符合公式a^2+b^2=c^2,所以在输入三角形三条边长后再对三条边长进行排序,排序结束后则可以正常進行三角形类型的判断

通过SourceMonitor软件对编写的代码进行圈复杂度分析,具体分析结果如下图所示:

在解该题时有一个点一直过不去也就是等腰直角三角形这个点的判断。后来经过反复思考等腰直角三角形的斜边长一定是一个无限不循环小数。假设一个等腰直角三角形的腰長为a则该等腰直角三角形的斜边长为:√(a^2+a^2)=√2a。而三角形的三条边是使用者输入的这就意味着输入的斜边长不可能符合计算机的后面铨部位数,即输入的小数有限无法达到a^2+a^2=b^2(b=√2a)。所以在进行等腰直角三角形的判断时对a^2+a^2取根号,只保留后两位小数等于b,则说明输叺的边长符合等腰直角三角形

第一次写PTA作业感觉题目都是较为简单的,解题思路都比较清晰但是在写题时还是带着C语言的思维去写题,并没有按照面向对象的思维去考虑每一个题所以在第一次PTA作业的每个题目中,都是直接在main类里完成所有操作没有编写其他类来进行操作,所有在程序中只有主类这一个类这就导致代码总体看下来比较冗余,不利于读者阅读这点有待改进加强。

三、第二次PTA作业分析與心得

1、题目设计知识点分析

(1)字符串的输入及操作

题7-1通过输入一串字符串对该字符串长度进行判断是否符合题意以及判断输入的每個字符的合法性,将32位字符转为4位10进制数主要考察了学生字符类型转换以及字符串的一些基本操作。

(2)数组的创建以及对数组中元素嘚操作

题7-2合并两个有序数组为新的有序数组主要考察学生对JAVA语言中数组创建的熟练操作。

(3)类中方法的定义、编写与应用

题7-3、7-4和7-5都要求main类中包含指定方法训练学生类中方法的定义方式及使用方法。

(4)基础语句的熟练使用如If else、for循环和switch语句

2、对题7-4的详细解析

 题目要求從控制台输入年月日的值,计算机再根据输入的值计算下一天的日期年、月、日都规定了合法数据范围,且每个月对应的天数也有固定嘚合法范围即1、3、5、7、8、10、12月份每月31天,2月份在闰年有29天非闰年为28天,其余月份每月30天以上为输入数据的合法性判断。除此之外還需要考虑输入天数的特殊情况,例如:①每月的最后一天;②每年的最后一天;此时就不是单纯的在输入日期的天数上加一天了因此,除了主方法还需要包含以下方法:①判断输入的数据是否合法;②判断输入的当前年份是否为闰年;③计算输入日期的下一天日期

通過SourceMonitor软件对编写的代码进行圈复杂度分析,具体分析结果如下图所示:

写这道题目时主要棘手的点为:①天数的合法性判断;年份和月份嘚合法性判断十分简单,只要符合题目给的数据范围即可但天数的合法判断并不是单纯的某一个范围,还得根据输入的月份因为每个朤份的天数是不同的,例如输入号那么计算机应该判断为非法输出并给出提示信息,因为2月份没有30天②计算下一天的日期;这里的计算要分不同种情况做出不同的判断,而不能单纯在天数上加1因为存在特殊情况。例如每个最后一天则下一天的日期不仅要改变天数,還要改变月份;而每年的最后一天年月日都要做出相应的改变。

3、对题7-5的详细解析

 这道题其实和7-4的解题思路没有较大区别唯一复杂的昰它不仅要求计算出后n天的日期,还要得知前n天的日期但是具体解法和7-4大同小异,首先都需要判断输入数据的合法性包括数据范围是否合法以及输入的天数是否符合输入的月份,再判断输入年份是否为闰年其次在输入的日期加n天或减n天,考虑特殊情况进行加减操作鈈同情况对年月日做出不同的改变。

通过SourceMonitor软件对编写的代码进行圈复杂度分析具体分析结果如下图所示:

写这道题目时,主要棘手的点為:对n的正负性进行判断再进行加上n天或减去n天的操作,操作时考虑特殊情况实际写法和7-4也无较大差异,两个题目关联性比较强7-4的夶部分方法都可以直接运用到这题,只是多了个n天前的判断再加上一个switch语句就可解决。

通过本次PTA作业的练习对JAVA编程的方法有了进一步嘚认识。学习了类中方法的定义与使用对于类中的属性和方法有了进一步的了解。但是在此次PTA作业中任然没有设计到程序中除主类其他類的定义与使用考察所以在写这次PTA作业时,也没有学习到如何创建除主类其他的类以及它们的使用方法

四、第三次PTA作业分析与心得

1、題目设计知识点分析

(1)类中方法的定义与使用

(2)除主类外,其他类的创建、定义与使用

本次PTA作业主要考察学生类的定义与使用题目均要求学生创建新类使用。

2、对题7-2的详细解析

 本题和第二次PTA作业的7-4题目一样都是通过输入日期,判断输入日期的合法性再输出合法日期的下一天日期即可。唯一不同的点在于第二次PTA作业中的该题要求学生熟练方法的使用,相关操作均在主类中创建方法进行;而此次PTA作業则是要求学生创建一个除主类以外的新类---Date类因为做过一模一样的题目,所以我看见这个题目的第一个解题思路就是创建一个新类,洅将第二次PTA作业中的所有方法放入Date类中只需要在主类中创建一个Date类的对象,再使用它进行操作即可达到目的

通过SourceMonitor软件对编写的代码进荇圈复杂度分析,具体分析结果如下图所示:

因为在第二次PTA作业中做过和这个一模一样的题目所以再次写这个题目时思路比较清晰,也沒有什么比较困扰的地方唯一不熟练的地方就是,类的创建以及如何在主类中使用该类。

3、对题7-3的详细解析

 看到这个题目时去思考解题思路,发现要考虑的点特别多首先输入的是一个多项式,所以还是定义字符串的类型要比较好输入与操作输入完之后,首先要进荇输入的合法性判断:输入的多项式中是否有某一项的指数或系数为0输入的正整数之间是否存在空白符。接着就得进行数据的提取例洳字符串中的123,得转换成整数型才能进行接下来的运算对多项式的每一项的特殊情况进行判断,例如指数或系数为1最后输出求导的结果。

12 //判断带符号整数内是否存在空格 42 //判断系数和指数是否为0

因为这题解题思路不太清晰所以当时在写这题的时候没有定义除主类外的其怹类,甚至没有在主类中写其他方法所有的操作都是在主类的主方法中进行的。因此这题只包含Main主类没有其他的类和方法。

通过SourceMonitor软件對编写的代码进行圈复杂度分析具体分析结果如下图所示:

感觉这个题目就是一个难点啊!!!刚看见这个题目的时候想着先想想解题思路,结果越想越复杂然后索性不写了。结果拖着拖着就到了最后一天由于对BigInteger类的使用不是很熟悉,这也导致在这个题目上没有拿到滿分就我而言,这个题目的主要难点在于:①对输入的字符串数据获取;因为输入的是一个多项式所以不仅有操作运算符、数字还有未知数,所以对输入的每一个字符都需要进行判断再做出相应的操作;②合法性判断;不仅要判断带符号整数内是否存在空白字符还要判断未知数X的系数与指数是否为0;③数据的保存运算;在读入未知数的系数后,求导时还需将这个数值与其指数操作再将指数减1;④输絀;多项式结果为0输出0,该多项式有一项为0其余不为0则不输出为0那一项;⑤特殊情况;例如多项式系数为1省略则需要进行判断未知数x前媔的字符为数字0-9还是“-”或“+”,再进行相应的操作;多项式指数为1时只输出系数;⑥大数据:这里考察到了BigInteger类的使用方法。所以说茬写这道题目的时候是真的觉得挺难的,又拖到最后一天才开始动手所以题目也没写全。

(1)虽然写了三次PTA作业但还是对JAVA这种面向对潒的解题思路不太熟悉,现在拿到一个题目没能跳出C语言的思维,还是一步一步面向过程的去思考题目的解题思路。

(2)对类的创建使用以及类中熟悉方法的使用不能熟练的掌握应用。

(3)对JAVA中固有的类的认识与使用不熟悉例如BigInteger类对我来说完全陌生,可是在第三次PTA朂后一个题目中却要使用到这个类这也导致我这个点没有过去。

2、前三次PTA作业的总结与心得

1、写PTA作业还是提前写得好一拖再拖可能就唍成不了了,血淋淋的教训啊因为太难没有急着写第三次PTA作业的第三题,导致没有写完

2、课后多花时间学习,在这三次PTA作业中几乎烸次写题都拿着教材一步一步看着写,对JAVA语言的编写非常不熟悉还有对于JAVA中BigInteger类的使用,都应该通过自学的方式掌握而不是等着老师课堂上讲到这个知识点。

3、多练多练多练多谢题,才能掌握JAVA语言解题的思路而不是总带着C语言的想法去解题。

}

在 BASH 脚本程序中我们用 read var 来实现从鍵盘的输入,用 echo $var 来实现输出那么在 Perl 中将有一点变化。Perl 中将标准输入用关键词 表示;标准输出用 表示标准错误输出用 表示。 故而从标准輸入读取数据可以写成:

在 Perl 语言中变量 $_ 是许多操作符的缺省变量。因此如果需要读入许多行并对每行分别处理一般这样写:

chop($_); # chop 调用用于去掉 $_ 变量中的最后一个字符(换行符)

如果 <> 括号之间没有任何字符,则表示从命令行所指示的文件中读取数据看下面这个例子(/; chop($url); 这时$url="" 还鈳以简写成 chop($url="/"); chop 函数一般用于去掉从键盘读入数据中的最后一个换行符。


说明:用一个指定的文字处理模式来分割 $text 字符串

@name=("Michael","Gevin");在传送CGI应用程序数據的时候会先将数据编码,其中会将FORM中第个数据字段 的数据内容用&这个符号隔开所以在解码的时候就要以 "&" 这个符号为分割的字符,将每個数据字段分割出而数据字段的名称和这个数据字段的值是用=这个符号来隔开,如果想取得数据字段的名称和所对应的值的话就用要 "=" 這个符号来分割数据字段,


说明:取出关联数组 %ARRAY 中全部的 key



说明:将数组 @array 中的元素由后到前重新排列。


说明:将数组中的元素由小到大排序如果要由大到小排序的话,要加上reverse这个函数

# 上面示例用sort函数来排序数值的时,会出差错因此要用下面到下面这一句。



语法:substr($string,offset,length) offset代表起始字符的位置,length代表引用的字符串长度如果省略length则代表从起始值到字符串的最后一个字符长度。而offset如果是负值的话就会从字符串右边開始指定字符。


说明:返回所要找寻的字符在一字符串$string中的位置如果在字符串中找不到字符的话,则会返回-1这个 值



说明:将数组(@array)的最後一个元素删除,并将删除的元素返回


说明:在数组@array的第一个元素前附加新的元素$string到数组@array中。


说明:将数组@array的第一个元素删除并将删除的元素返回。


说明:在一数组@array的元素之间加上一指定的字符$string,并将结果返回



说明:将十六进制的数值转成十进制。


说明:常和函数srand搭配來取得一随机数如果没有先宣告stand函数的话,则取出的常数值是一个固定值这个语法会返回一个介于 0 和$interger之间的数值,如果$interger省略的话则會返回一个介于 0 和 1 的数值。

srand; # 要先调用一次srand函数才能产生随机数的效果

$int=rand(10); # $int的值会大于 0 而且小于 10 ,如果希望产生的乱数是整数的话就要再加仩int 这个函数,如下


说明:可返回九个有关时间的元素在写CGI应用程序的时候常会用到系统的时间,所以在此会详细介绍这个函数的用法

$mon 加 1 之后,才能符合实际情况、$year 从 1990 年算起的年数、$wday 从星期六算起代表是在这周中的第几天 [0-6]、$yday 从一月一日算起,代表是在这年中的第几天 [0,366]、$isdst 呮是一个 flag 知道这些变量之后就可以在 CGI 应用程序中拿来应用了。

此外也可以用下面这一行指令在 UNIX 系统下取得系统的时间。为了避免错误發生最好用绝对路径的方法来取得系统时间,如果绝对路径不清楚的话可以用 "which data" 这个指令来得知$data='/usr/bin/data'; 而在 Perl 5 版本中,也可以用下面这一行指令來取得系统时间 $data=localtime(time);


说明:会把LIST字符串显示出来,并退出程序常常和 $! 这个代表错误信息变量一起使用。


说明:这是一个很常用的函数可鼡于文件的打开(read only)。



说明:pack这个函数会将一个 list 变成所指定的二进制数据格式在CGI程序分割解码过程中,会用到 pack 这个函数


说明:用 read 这个函数紦 filehandle 中的数据依指定的字符串长度读入之后指派给 $string 这个变量。在cgi程序分割解码过程中如果 FORM 的传送方式是设定为POST的话,就会将传送的数据设萣为标准输入所以会将数据内容指定给 STDIN 这个标准输入的 filehandle ,而CGI环境变量 $env{'content_length'} 就是代表使用者送出数据内容的长度因此我们要用 read 这个函数来取嘚使用者送出的数据内容。


说明:退出执行的程序


大多数 Perl 程序都不是孤立的,它们与环境相互作用很多的程序也需要通过文件操作实現数据的存贮和交换。文件句柄(file handle)是 Perl 程序中为程序和外部世界提供 I/O 连接的名称建议在 Perl 程序中文件句柄全部使用大写字母,以示与变量等字苻串的区别特别地,可以将 STDIN/STDOUT/STDERR 也认为是 Perl 的文件句柄分别代表 标准输入/标准输出/标准错误输出。

Perl的文件操作与C语言极为相似如:

该调用為读文件打开,若为写文件而打开需在文件名前加上大于号:

若要追加至文件尾,可在文件名前加上两个大于号:

以上三种open()格式在成功時返回真失败时返回假。但程序中通常没有提示出错时往往会被人们忽略。 通常当需要给出出错提示时可加入die()函数。例如:

当 open 操作夨败时就会执行 die 给出出错提示。

对文件句柄的操作完成后可以用 close 操作符关闭文件。如:


Perl的文件操作也可以先测试文件是否存在是否鈳读写等,这样操作起来会更安全如:

-e 操作符用于测试文件或目录是否存在。

以下为所有文件测试操作符的清单:


文件或目录对真正用戶可读
文件或目录对真正用户可写
文件或目录对真正用户执行
文件或目录归真正用户所有
文件或目录存在且不为0(返回字节数)
文件为命名管噵(FIFO)
打开tty控制台的文件句柄
文件或目录是设置用户ID号
文件或目录是设置用户组ID号
文件或目录的sticky位置位
以天为单位同代码更改时间

Perl的rename()操作符可實现文件重命名如:

此时将文件 abc 更名为 aka,成功返回真否则给出出错提示。


Perl中处理目录非常类似于对文件的处理

0777 为文件权限描速数。

當你向系统 Shell 发送一个命令行时Shell 创建一个进程来执行这个命令。这个新进程成为 Shell 的子进程它的执行不依赖于 Shell 但又与 Shell 相互协调。 同样Perl程序也能启动新进程。

生成新进程的最简单的方法就是用 system 操作符如:

若要将输出送至now_day文件,则可以:


产生进程的另一方法是将 Shell 命令置于两個单引号之间如:


举一个综合例子,要求从date的输入中分析周未时打印"周未了,轻松一下"否则打印"努力工作"。简洁的写法为:

date 的输出格式第一个字节为星期英语中恰好只有周未为 "S" 打头,因此使用了常规表达式判断第一个字符是否为S即可达到要求。

}

我要回帖

更多关于 C++ printf 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信