- 相关推荐
C语言教程实例:1到100求和
C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。以下是小编为大家整理的C语言教程实例:1到100求和,希望对你有所帮助!
C语言教程实例:1到100求和
首先我们将问题简化一下,只求1+2=?相信每位同学都能很快的写出c语言的程序。按照以前的思路,我们先写程序模板,然后在指定的地方编写代码即可。
#include
int main(){
int a1 = 1;
int a2 = 2;
int sum =a1 + a2;
return 0;
}
是不是很快就写出了程序代码,既然1+2我们能求,那么1+2+...+100是不是也是同样的道理。
#include
int main(){
int a1 = 1;
int a2 = 2;
...
int a100 =100;
int sum =a1 + a2+...+a100;
return 0;
}
(上面的代码并不是完整的代码,其中的省略号部分需要大家自己补全。)
这就是我们解决1到100求和的第一种解法。是不是很有成就感!!!
上面的代码虽然能够解决问题,但是大家在编写代码的时候,是不是感觉有点恼火。
我们来分析一下以上代码的问题,最主要的问题在于我们需要定义101个整型变量,其中100个a1, a2,..., a100还有一个sum。那么是否可以减少变量定义的个数呢?
我们需要变量来保存1,2,...,100但是又不想使用a1,a2, ..., a100这种方式。那么是否可以只使用1个变量就可以呢?即只定义一个变量i,就可以实现保存1,2,...,100。
在经过一番分析之后,我们发现可以利用C语言的循环结构来实现。
int i = 0;
for( i = 1; i <= 100; i++)
上面的代码是不是就可以实现只使用一个变量i就能保存1,2,...,100。
以前我们需要100个变量来保存1,2,...,100现在我们只需要1个变量就可以了,是不是进步了很多。
那么接下来便是如何实现求和呢?
我们可以定义一个变量sum来保存当前最新的求和结果,然后去加i,并将求和的结果更新到sum,那么sum本质就是一个累加器。(如想了解更多,请关注《C语言教程累加器》)
int i = 0;
int sum = 0;
for(i = 1; i <= 100; i++){
sum = sum +i;
}
以上代码是不是很简洁了,那么这是不是最好的答案呢?还可以改进吗?
其实我们还可以有更好的方式,那就是直接使用数学公式就可以求解。
int sum = (1+100)*100 / 2;
直接一行代码就可以得到答案,这就是数学的魅力哈!所以小伙伴们,要不要好好学习数学!!!
总结
从上面的分析我们知道,在解决一个问题的时候,我们首先想到的大多是一些比较简单的解法,但是随着对问题分析的不断深入,我们可以不断的改进解法,最终会找到适合你自己的解决问题的方法。
【拓展内容】
C语言学习中的指针用法教程
对于C语言初学者来说,需要明白指针是啥?重点就在一个“指”上。指啥?指的地址。啥地址?内存的地址。
上面说明就是指针的本质了。
这里再详细解释下。数据存起来是要存在内存里面的,就是在内存里圈出一块地,在这块地里放想放的东西。变量关心的是这块地里放的东西,并不关心它在内存的哪里圈的地;而指针则关心这块地在内存的哪个地方,并不关心这块地多大,里面存了什么东西。
指针怎么用呢?下面就是基本用法:
int a, b, c;double f;int *pt_a = &a, *pt_b = &b, *pt_c = &c;double *pt_f = &f;
上面两行声明了三个int类型的变量a,b,c,一个double类型的变量f。下面就是指针的用法了,声明变量的时候只需要在变量前面加上“*”这个符号就说明了这个变量是指针,而前面的“int”说明指针指向的内存里面存放着int类型的变量。
变量和指针的声明也可以放到一起:
int a, b, c;double f;int other, *pt_a = &a, *pt_b = &b, *pt_c = &c;double x = 0, *pt_f = &f;
然后就是新的运算符——“&”了。是不是很熟悉?没错,这个就是scanf里面的那个“&”。它是取地址符,即用在变量前面使用这个运算符,能够获得这个变量在内存里面的地址。由此就可以解释scanf双引号后面为何要使用“&”了,就是将前面按照格式读进来的数据,按照后面给出的地址直接填进内存里,所以scanf双引号后面提供的参数实质上并不是希望赋值的变量,而是希望保存数据的地址。所以,例如如果有int类型的变量a,同时有指向它的指针pt,那么下面两句是等效的:
scanf("%d", &a);scanf("%d", pt);
回到指针,接下来就是修改指针指向变量的值了,怎么弄呢?下面就是例子:
int a;int *pt = &a;*pt = 123; // 该语句等同于 a = 123;
不要把“*”给忘了哈。
至于这个“*”符号,可以这么理解:需要用到指针指向的内容时,加上“*”,此时它等同于一个变量;只是需要指针的地址时,不需要加“*”,此时它代表内存的地址。
而指针也可以改变它指向的地址:
int a, b, c;int *pt_a = &a, *pt_b = &b;pt_b = &c;pt_a = pt_b;
很多教材都在强调野指针的问题,什么叫野指针?呃……可以叫做“撒野”的指针。什么意思呢?举个例子,如果声明了一个指针pt,而没让他指向任何变量,那么它指向哪里呢?答案是:不确定,整个内存哪里都有可能被它指到。如果此时修改它指向的内容,而它恰好指向了系统某个关键的进程……那后果就比较严重了。所以指针用之前一定让它指点东西。如果想让它什么都不指,怎么办?很简单,指向NULL即可。
这就是指针了。可能看完很多人会觉得本来用变量你又加了个指针指不是更麻烦?我要说的是,这只是最基本的用法。C语言的数组中,还有一些复杂的数据结构都需要用到指针。所以这些基础的东西还是有必要加以熟练掌握的。
希望本文所述对大家C语言程序设计的学习有所帮助。
【C语言教程实例:1到100求和】相关文章:
1到100的英语单词怎么写?07-29
怎样学习c++c语言编程04-28
认识1到5的教案04-13
C语言入门知识07-20
C语言的编码规范02-10
C语言的基本构成12-05
c语言的优点介绍04-13
C语言试题训练10-20
C语言程序的实现09-27
什么是C语言数组04-15