今天学第二章第四节
今天要学一个重要的循环语句:for循环。
标准格式:
for(表达式1;表达式2;表达式3){
需要循环的语句;
}
直接上例题,实操一下。
#include <stdio.h>
int main(void)
{
int F, A, B;
double C;
printf("Enter A:");
scanf("%d",&A);
printf("Enter B:");
scanf("%d",&B);
if(A<=B){
printf(" F C\n");
for(F=A;F<=B;F++){
C = (5.0/9.0)*(F-32);
printf("%4d%6.1f\n", F, C);
}
}else{
printf("Invalid Value!\n");
}
return 0;
}
之前忘记写了,int main(void)这句中的void可以不打,可以直接是:int main(),就行了,因为void代表的就是空函数。
printf("%4d%6.1f\n", F, C);
还有就是这句,"%4d%6.1f",%4d是指输出的数据如果不够4个字符,就在数据前面加空格凑够四个字符,如果数据本身就多余四个字符就不加空格。%6.1f也是一个道理,%.1f之前讲过,%6.1f就是相当于把%6f和%.1f和在一起了。
for(F=A;F<=B;F++)
这句中F=A:赋初始值,F<=B:规定范围为[A,B],F++为F=F+1的缩写。
还有最关键的这一句:
C = (5.0/9.0)*(F-32);
我相信很多人和我有一样的疑惑:为什么非得要5.0/9.0,为什么不能5/9,大家不妨用5/9运行一下试试,你会发现输出了一串的0.0。那是因为赋值符号的左边和右边的数据类型不一致,也就是等号左右的数据类型不一样,C是double型,(5/9)*(F-32)是整型,而且就算输出出来了,输出的值也不对,而(5.0/9.0)*(F-32)就不一样了,5.0/9.0是double的数据类型(也就是浮点型),然后再用它乘上F-32,数据类型也还是浮点型,这样两边的数据类型就一致了。当然,也可以是5.0/9,,5/9.0都可以。
OK,下一个题:
#include<stdio.h>
int main(void)
{
int n, i, sum;
printf("Enter n:");
scanf("%d",&n);
sum = 0;
for (i=1;i<=n;i++){
sum = sum+i;
}
printf("sum = %d\n", sum);
return 0;
}
其中:sum = sum+i 这句配合上for循环就达到了累加的效果,当然也不是一定要sum,也可以把sum换成a,换成b,等等。这道题最最最重要的一句:
sum = 0;
为什么是这一句呢?这句是给sum赋初值,没有这一句看起来没什么,但是没有它,就像你找了个女朋友或者男朋友,但是她或他没有忘掉她或他的前任。这样形容可以说是贴切但有病,所以说,一定要记得赋初值!
下一题:
#include <stdio.h>
int main(void)
{
int denominator, flag, i, n;
double item, sum;
printf("Enter n:");
scanf("%d", &n);
flag = 1;
denominator = 1;
item = 1;
sum = 0;
for(i = 1;i<=n;i++){
sum = sum + item;
flag = -flag;
denominator = denominator + 2;
item = flag*1.0/denominator;
}
printf("sum = %f\n", sum);
return 0;
}
为什么要把这道题拿出来呢?就因为这句话:
item = flag*1.0/denominator;
上面我们说过的数据转化,右边原本是整型,但是乘了1.0,就让右边变成了浮点型,这也告诉我们,一个技巧,当整型进行乘除法的时候,可以乘一个1.0,将其转化为浮点型。
当然,我们可以将上面这一长串代码简化一下:
#include <stdio.h>
#include <math.h>
int main(void)
{
int n, i;
double sum;
printf("Enter n:");
scanf("%d",&n);
sum = 0;
for(i=1;i<=n;i++){
sum=sum + pow(-1,i+1)*pow(2*i-1,-1);
}
printf("sum = %f\n", sum);
return 0;
}
所谓,想的越多,打的越少。
下一道题是求n!。我就不放出来了原理是一样的,就是将sum = sum+i 换成 product = product*i
今天就敲到这里吧,记住要让你的代码忘掉前任哦,嘿嘿。