C语言学习(第五天)

今天学第二章第四节

今天要学一个重要的循环语句: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 

今天就敲到这里吧,记住要让你的代码忘掉前任哦,嘿嘿。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值