C语言练习day6

关于牛客网运行超时的问题 

[NOIP2008]ISBN号码_牛客题霸_牛客网

题目C语言练习day6_第1张图片

C语言练习day6_第2张图片

思路:这个题目重点在怎么去把这个ISBN号码正确输入,其实这个题目已经提示了我们一点信息:输入描述里说,是一个字符序列,其实我们就可以把这个ISBN号码存到一个字符数组里,至于那个相乘算最后一个数字,我们可以用循环来解决。输出的话,也是比较麻烦的。首先,我们要判断那个余数是否为10,如果是就要变成X,其次再来判断最后一个数是否相等,如果相等,就打印Right,如果不相等就得打印正确的,注意还要打印我们算出来的那个数。(到这里你可能认为,这个题目不是很难,但是我个人认为,这个题是比较恶心人的,待会看看运行结果就知道是怎么恶心人的了,当然这也有一部分是我的水平不够!)

代码演示:C语言练习day6_第3张图片

由于篇幅有限,只能展示main函数,上面还是头文件#include  这里我用的是for循环,但是如果我用while循环,就会运行超时

C语言练习day6_第4张图片

这两个代码在功能上应该是一样的,只不过while循环稍微多定义了一个变量,就会这样。(真服了,这个题目硬生生花了我几个小时才搞出来) 

关于小数是用float还是double的答案

简单计算器_牛客题霸_牛客网

题目:C语言练习day6_第5张图片

C语言练习day6_第6张图片

思路:其实这个题是比较简单的,按照要求输入之后,根据条件来判断是输出哪一个。(可以用swtich,也可以用if.....else....) 

代码实现:

C语言练习day6_第7张图片

注意一下:我们以后在写小数的时候,个人建议用double类型,因为有的float类型可能运行不过去。 

多组数据的存储相加

牛牛学数列_牛客题霸_牛客网

牛牛学数列2_牛客题霸_牛客网

牛牛学数列3_牛客题霸_牛客网

牛牛学数列4_牛客题霸_牛客网

我们可以先观察一下这四个题目,我们会发现前面两个是一类,后面两个是一类。

前面两个是关于单个数据的存储相加输出,后面两个是关于多组数据的存储相加输出

具体的,我们就直接看题目来分析,这两种情况。

牛牛学数列

题目

C语言练习day6_第8张图片

思路:这个题目是比较简单的,就是用一个for循环生成1~n的数字,并且用负号处理一下就可以了。

代码演示:C语言练习day6_第9张图片

牛牛学数列2

题目: C语言练习day6_第10张图片

思路:这个题目和上面那个是同样的配方,同样的味道,不同的名字罢了。也是用for循环产生1~n的数字,然后用1去除以该数字,但是这里有一个要注意的点,我们要用1.0去除,而不是1,因为C语言中的除法分为整数和浮点数,这里只有用浮点数才可以。(具体的我就不细讲了,大家想知道可以去看我前面写的文章C语言数据类型和变量(下)-CSDN博客)

代码演示:C语言练习day6_第11张图片

牛牛学数列3

题目:C语言练习day6_第12张图片

区别:我们在写这个题目的时候就会发现与前两个题目有所不同,前面两个题目用for循环生成数据之后就可以存起来,而这个题目在生成数据之后要先存起来,后面不断地更新。(代码写出来更加清晰)

思路:这里其实有两个方法。

法一:分子是不变的,分母是我们可以找规律的找出来,会发现是奇数的增长,但是有正负之分,我们就可以用前面那个方法来写。(利用flag来判定)

法二:我们发现最后给的分母表达式,其实就是整个分母的公式。利用这个公式也可以非常顺利的写出来。

代码演示:

法二:

C语言练习day6_第13张图片

 法一:

C语言练习day6_第14张图片

大家可以细细体会一下,其实我个人更喜欢第二种方法,毕竟这个只要套公式,属于那种无脑型。不需要考虑太多。 (当然这里只是针对这个题目而言)

牛牛学数列4

题目:C语言练习day6_第15张图片

思路: 一样的,这个题目也是先要生成1~n的数字,然后再相加,但是这个相加要加两次,一次是本次计算的,一次是从1开始的。

代码演示:C语言练习day6_第16张图片

好了,这个就是关于多组数的存储相加的全部内容了。 

你可能感兴趣的:(C语言,c语言)