C语言循环结构小结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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之和以外的任意小数的二进制转化小数部分