关于【for循环定义数组c语言】,今天小编给您分享一下,如果对您有所帮助别忘了关注本站哦。
- 内容导航:
- 1、for循环定义数组c语言:工程师编程,C语言学习,关于数组方面的一些总结
- 2、for循环定义数组c语言,C语言for循环嵌套详解
1、for循环定义数组c语言:工程师编程,C语言学习,关于数组方面的一些总结
在学习编程语言时,无论如何我们都逃不掉关于数组这个问题。
那么,在谈及这个问题时,我会从三个方面来思考:
1、数组的定义是什么,也就是何为数组?
2、如何在数组中填充元素(数据)?
3、如何用数组来解决实际问题,缩短和简化程序?
抱着这三个疑问我去查找了相关知识。
首先针对第一个问题:数组的定义是什么,何为数组?
这其实很简单,数组就是用来存储一个固定大小的相同类型元素的顺序集合,关键点在于:存储、固定大小、相同类型元素、集合。
比方说,在C语言中这样定义一个数组,其中2代表整个数组中存在2个元素,后面的{0,1}代表这两个元素分别为0和1。
int array[2] = {0,1};
其次,针对第二个问题:如何在数组中填充元素(数据)?
要在数组中填充元素,那首先必须把整个数组给遍历一遍,这里要用到的知识点就是循环。
给定一个数组,如何把整个数组遍历,最有效的方法就是用一个for循环。
#include<stdio.h>int main(){ int array[10] = {0}; for(int i = 0;i < 10;i++){ array[i] = i; printf("%d ",array[i]); }}
正如这串代码所示,for循环正好能用来遍历一整个数组,最后给出相应的结果。
该程序给出最终的输出结构
最后,我们再来谈谈第三个问题:如何用数组来解决实际问题,缩短和简化程序?
谈到这个问题,我就得给出具体实例了,当然,我会给出两个实例。
第一个是斐波那契数列的实现,之所以选择这个,一方面是因为这个数列大家比较熟悉,另一方面,用数组来实现斐波那契数列的难度也比较简单。
斐波那契数列:1,1,2,3,5,8,13,21,35
不难发现,斐波那契数列的规律是前一个数加后一个数等于第三个数。
那么,用数组来表示的话,就可以得到array[i+2] = array[i] + array[i+1]。
这里的i指的就是前一个数,i+1指的就是后一个数,而i+2指的就是第三个数。
再结合之前所讲,也就能直接给出斐波那契数列的程序代码:
#include <stdio.h>int main(){ int array[20] = {1,1,0}; for(int i = 0; i<20; i++){ array[i+2] = array[i+1] + array[i]; printf("%d ",array[i]); }}
结果如图所示:经过验算,该程序最终结果是正确的。
斐波那契的输出结果
那么,这只是数组在实现数学公式方面的应用,除了这个方面,还有其它方面也能应用到此程序。
题目给定:给你五个集合,每个集合中各有16个数据,每个集合依次出现,你心中想一个数据,在每个集合出现时,输入1(代表这个数据存在该集合中),输入0(代表这个数据不存在该集合中),五个集合结束后,最终输出的结果将会成为你猜的数据。
针对这道题,看起来很麻烦,但其实并不难,我们先对题目进行一个分析。
1、五个集合,每个集合各有16个数据,那么我们所要做的,就是要定义5个数组,每个数组中各有16个数据,根据解决的第一个问题,不难得到:
2、要进行猜测,必须要把这五个数组中的内容显示在控制台中,才能判断自己心中所想的数据是否存在这五个数组中,显然,这需要一个for循环,同时,还要进行判断猜测的数据是否存在其中,用1或0来显示,这里就需要scanf用来输入1或0,还需要一个if条件语句进行判断。
剩下的,无非只需要多加几个for循环即可把最终答案给出来。
#include <stdio.h>int main() { int x; int number,number1,number2,number3,number4; int set1[16] = {1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31}; int set2[16] = {2,3,6,7,10,11,14,15,18,19,22,23,28,29,30,31}; int set3[16] = {4,5,6,7,12,13,14,15,20,21,22,23,28,29,30,31}; int set4[16] = {8,9,10,11,12,13,14,15,24,25,26,27,28,29,30,31}; int set5[16] = {16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31}; for(int i = 0; i < 16; i++){ printf("%d ",set1[i]); } printf("你想的数字是否存在: "); scanf("%d",&x); if(x == 1){ number = set1[0]; } if(x == 0){ number = 0; } for(int i = 0; i < 16; i++){ printf("%d ",set2[i]); } printf("你想的数字是否存在: "); scanf("%d",&x); if(x == 1){ number1 = set2[0]; } if(x == 0){ number1 = 0; } for(int i = 0; i < 16; i++){ printf("%d ",set3[i]); } printf("
最终结果:
总结:数组其实并不难,关键是弄清楚数组的用法,才能事半功倍,有效果的做题。
2、for循环定义数组c语言,C语言for循环嵌套详解
for循环定义数组c语言?虽说是多层,事实上 for 循环嵌套的层数也不能太多通常为两个 for 循环的嵌套,超过两个的极少使用,我来为大家讲解一下关于for循环定义数组c语言?跟着小编一起来看一看吧!

for循环定义数组c语言
虽说是多层,事实上 for 循环嵌套的层数也不能太多。通常为两个 for 循环的嵌套,超过两个的极少使用。
与单个 for 循环相比,多个 for 循环的嵌套在逻辑上更复杂一点,但并不难懂。
直接给大家写一个程序:
#include <stdio.h>int main(void){ int i, j; for (i=0; i<4; i) { printf("问世间情是何物, 直教生死相许"); for (j=0; j<3; j) { printf("两情若是久长时, 又岂在朝朝暮暮"); } } return 0;}
输出结果是:
问世间情是何物, 直教生死相许
两情若是久长时, 又岂在朝朝暮暮
两情若是久长时, 又岂在朝朝暮暮
两情若是久长时, 又岂在朝朝暮暮
问世间情是何物, 直教生死相许
两情若是久长时, 又岂在朝朝暮暮
两情若是久长时, 又岂在朝朝暮暮
两情若是久长时, 又岂在朝朝暮暮
问世间情是何物, 直教生死相许
两情若是久长时, 又岂在朝朝暮暮
两情若是久长时, 又岂在朝朝暮暮
两情若是久长时, 又岂在朝朝暮暮
问世间情是何物, 直教生死相许
两情若是久长时, 又岂在朝朝暮暮
两情若是久长时, 又岂在朝朝暮暮
两情若是久长时, 又岂在朝朝暮暮
=============
其实,多层 for 循环嵌套的执行过程与单个 for 循环的执行过程是一模一样的。多层 for 循环的嵌套只不过是将单个 for 循环大括号中的“语句”换成了 for 循环而已。
下面看看上面程序中两个 for 循环嵌套是怎么执行的。
1)首先求解表达式 1,即给变量 i 赋初值,i=0;表达式 1 只执行这一次,下面都不会再执行了。
2) 然后求解表达式 2,即 0<4 成立,则执行 for 循环中的内嵌语句:
printf("问世间情是何物, 直教生死相许");
for (j=0; j<3; j)
{
printf("两情若是久长时, 又岂在朝朝暮暮
}
====================
首先 “printf("问世间情是何物,直教生死相许")”,然后执行内部 for 循环,对这个 for 循环再次应用“单个 for 循环”的执行过程:
★ 首先求解表达式 1,即给变量 j 赋初值,j=0。
★ 然后求解表达式 2,即 0<3 成立,则执行 for 循环中的内嵌语句,即 “printf("两情若是久长时,又岂在朝朝暮暮");”。
★ 然后执行表达式 3,变量 j 自加 1,即变量 j 由 0 变为 1。
★ 然后求解表达式 2,即 1<3 成立,则执行 for 循环中的内嵌语句,即“printf("两情若是久长时,又岂在朝朝暮暮");”。
★ 然后执行表达式 3,变量 j 自加 1,即变量 j 由 1 变为 2。
★ 然后求解表达式 2,即 2<3 成立,则执行 for 循环中的内嵌语句,即“printf("两情若是久长时,又岂在朝朝暮暮");”。
★ 然后执行表达式 3,变量 j 自加 1,即变量 j 由 2 变为 3。
★ 然后求解表达式 2,即 3<3 不成立,则内部的循环结束。对内部的 for 而言循环是结束了,但对外部的 for 而言,“for 循环的执行”过程才执行到表达式 3。
3) 然后执行表达式 3,变量 i 自加 1,即变量 i 由 0 变为 1。
4) 然后再求解表达式 2……
……
就这样一直循环下去,直到外层循环结束,整个循环才结束。
总之,不管是单个 for 循环还是多个 for 循环的嵌套,它们的执行过程是一样的。只不过如果是“多个 for 循环的嵌套”,则其执行过程也是嵌套的。
for循环嵌套编程练习1、求出 1! 2! 3! … n!的和。对于这个程序前面用一个for编程也可以实现,但是逻辑性太强,现在再用for循环嵌套编程实现一下:
#include <stdio.h>int main(void){ int n = 0; //存储1! 2! 3! … n!中n的值 int i = 0, j = 0; //循环变量 int m = 1; //用于计算每个数的阶乘 unsigned long sum=0; printf("请输入n的值:"); scanf("%d", &n); for (i=1; i<=n; i) { for (j=1; j<=i; j) //求一个数的阶乘 { m = m*j; } sum = sum m; //求完之后就立即把它加到sum中 m = 1; } printf ("sum = %ld
==========
输出结果是:
请输入n的值:10
sum = 4037913
我们看到 n 的值仅为 10 结果就这么大,要再大点 long 类型肯定是存放不了的。此外,有人可能会纠结这样的问题,程序开头定义那么多变量,可是我写的时候怎么知道后面要用到哪些变量呢?
其实,这些变量都不是刚开始写程序的时候就定义的,大多数情况下都是“若刚开始知道定义哪些变量那么就定义上,如果不知道那就不定义,等到后面需要用再回到前面进行定义”,这才是正常的逻辑。
2、求出用 50元、20元 和 10元换算 100元有几种方式?思路:用穷举法, 将所有可能的情况都列出来, 用 for 循环可以实现穷举
分析:100 元单用 50 换算, 最多需要两张;用 20 元换算, 最多需要五张;用 10 元换算最多需要十张
#include <stdio.h>int main(void){ int w, e, s; //w代表wushi;e代表ershi;s代表shi for (w=0; w<=2; w) { for (e=0; e<=5; e) { for (s=0; s<=10; s) { if (100 == 50*w 20*e 10*s) { printf("%d %d %d
=========
输出结果是:
0 0 10
0 1 8
0 2 6
0 3 4
0 4 2
0 5 0
1 0 5
1 1 3
1 2 1
2 0 0
3、“百钱买百鸡”是中国古代一个著名的枚举法题目。所谓枚举就是将所有可能的情况全部列出来的意思。for 循环嵌套是实现枚举的一种手段,上面的换算也是一种枚举。假设公鸡 5 元一只,母鸡 3 元一只,小鸡 1 元 3 只,现在给你 100 元,要你买回 100 只鸡,求出公鸡、母鸡、小鸡分别为多少只。
#include <stdio.h>int main(void){ int x, y, z; //x、y、z 分别表示公鸡、母鸡、小鸡 for (x=0; x<20; x) { for (y=0; y<33; y) { z = 100 - x - y; //小鸡也可以用循环,但是能用二层循环解决的就不要用三层。 if ((0 == z%3) && (100 == 5*x 3*y z/3)) //将 0==z%3 放前面更好,因为 && 是“短路与”,前面不成立后面就不会执行了,所以把计算量小的放前面。 { printf("x = %d, y = %d, z = %d
==========
输出结果是:
x = 0, y = 25, z = 75
x = 4, y = 18, z = 78
x = 8, y = 11, z = 81
x = 12, y = 4, z = 84
==================================
for循环嵌套我们就学习到这里。
如果你还想更深入地学习以及其他知识,不管你是转行也好,初学也罢,进阶也可~
本文关键词:for循环 c语言,for循环用法c语言,c语言for循环定义变量,c++用for循环输入数组,把for循环的数据放到数组里c语言。这就是关于《for循环定义数组c语言,关于数组方面的一些总结》的所有内容,希望对您能有所帮助!