C语言循环结构小结

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

[C语言问题求解]

作者:苏丽媛

修订:李昕,高绍姝

1While循环

当要进行的操作相同,数据不同,但是这些数据可以形成某种序列时,考虑采用循环处理。

1.1while循环架构

while(条件)

{

语句;

}

1.2循环与选择结构的区别

循环是多次的(条件满足,进入循环,循环结束后返回,再次判断条件是否满足,不断循环,直到条件不满足,执行后继语句),选择结构仅仅是一次的(判断条件满足后执行,执行后结束,并开始执行后继语句)

1.3循环三要素

循环控制变量的初始化(初始化相当于设置了一个开始的值)

循环条件(条件相当于设置了一个结尾)

循环控制变量的改变(一定使之从开始到结尾的方向进行)

1.4例:

#include

#include

int sum(int n)

{

int result=0;

int i=1; ///i用来控制循环,称为循环控制变量//循环变量的初始化

while(i<=n) ///循环条件

{

result = result + i;

i++; ///即i=i+1//循环控制变量的改变

}

return result;

}

int main()

{

int n;

scanf("%d",&n);

printf("%d\n",sum(n));

return 0;

}

注:当循环结束后,循环控制变量的值是第一个不满足条件的值。

2for循环

2.1for循环结构

for(循环变量的初始化;循环的条件;循环的控制变量的改变)

{

循环体;

}

for循环的小括号中,有且仅有两个分号,分割了循环的三要素。

for()后不能接分号,分号代表空语句,如果接了分号,意味着循环体不再属于循环,整个循环只循环了一条空语句。

循环的条件判断比循环控制变量的改变多一次(多的一次是条件不成立的第一个数)。

建议:知道循环次数采用for循环,反之,采用while循环。

循环中定义的控制变量属于局部变量,出了循环便不可用了,如果出了循环仍想使用该变量,就必须重新定义。

2.2例:

#include

int sum(int n)

{

int result=0;

for(int i=1;i<=n;i++)

{

result = result + i;

}

return result;

}

int main()

{

int n;

scanf("%d",&n);

printf("%d\n",sum(n));

return 0;

}

3理解循环

3.1例:<求0到200中的所有整数和>以及<求101到200间的所有奇数和>

循环主要分为“变的部分(数据)”和“不变的部分(处理过程,即循环体)”。掌握循环,最重要的就是掌握变与不变的区分。

循环中要求改变的数据必须形成序列,必须有规律。

循环的变量初始化决定了循环的开始,循环条件决定了循环的结束,循环控制变量的改变决定了循环的步长以及变化规律

程序设计分三种基本结构:顺序结构,选择结构和循环结构,循环结构最复

杂但是又很基础,大家从变与不变两个角度去深入体会循环的作用。

int n;

scanf("%d",&n);

printf("%.4f\n",sum(n));

return 0;

}

4.3小结

一方面可以通过数学公式,极大地提高编程的效率;但另一方面,因为数学是理论科学,不关注实践,但是计算机是非常注重实践的,因此对于数学上的余计算要尽量避免。

当需要进行一定的实现是,采取技巧避免无效运算。

(1)编程需要考虑溢出问题,数学不需要。

(2)pow为数学上的常用方法,但是在编程时会引入浮点比较的问题,不建

议使用。

5整数分解

5.1例:<对不知位数的n进行整数分解>以及<二进制转化,整数分解为二进制>

注:因为不知道n的位数,所以尽量

采用while循环

除n取余法,实现十进制整数与任意进制之间的转换

#include

#include

int divide(int n,int system) ///引入一个新的参数,实现“system”进制的转换{

int i=0;

while(n>0)

{

int a = n%system;

printf("%d\n",a);

n/=system; ///n=n/system;

i++;

}

return i;

}

int main()

{

int n;

scanf("%d",&n);

printf("divide number %d\n",divide(n,数字));//数字为多少就是几进制

return 0;

}

6浮点比较

整数的进制转化采用除n取余法,小数的进制转化采用乘n取整法。整数的进制转化的倒序的,小数的进制转化是正序的。

6.1例:<十进制小数转化为任意进制(二进制)>

#include

#include

void fdivide(double n,int system)

{

for(int i=0; i<6; i++) //保留6位小数

{

n=n*system; ///system为进制

int a = (int)n;

printf("%d\n",a);

n -= a; ///n = n - a;

}

}

int main()

{

double n;

scanf("%lf",&n);

fdivide(n,2);

return 0;

}

在而二进制中,除了2n以及2n之和以外的任意小数的二进制转化小数部分

相关文档
最新文档