#C语言程序设计-----C语言学习(2)##

前言:今天我们主要学习的是for语句,包括fou语句的一般形式,对应for语句的流程图,for语句的用法,以及for语句运用时的一些注意事项,通过学习for语句进行一些简单程序的设计等等。好了废话不多说直接开干。

#C语言程序设计-----C语言学习(2)##_第1张图片

 

一.  主干知识的学习 

   今天我们主要讲的是for语句,在C语言中,for语句被称为循环语句,它可以实现C语言的重复执行操作指令。 

1.for语句的一般形式

  for(表达式1;表达式2;表达式3)

              循环体语句 

  for语句的执行流程如图,它先计算表达式1,再判断表达式2,若其值为‘真’,则执行循环体语句,并接着计算表达式3,然后继续循环,若其值为‘假’,则结束循环,继续执行for的下一条语句。且计算表达式3在执行循环体语句之后。 

 

#C语言程序设计-----C语言学习(2)##_第2张图片 

2.for语句的3个表达式

(1)表达式1:初值表达式,对循环变量赋初值,从而指定循环的起点。

(2)表达式2:条件表达式,给出循环的条件,通常判断循环变量是否超过循环的终点。

(3)表达式3:步长表达式,设置循环的步长,改变循环变量的值,从而可改变表达式2的结果。

(4)循环体语句:被反复执行的语句,只能是一条语句。

3.对于for语句需要注意的

(1)如果循环体语句由多条语句组成,必须用大括号把它们括起来,变成一条复合语句

(2)在C语言中,仅由一个分号(;)构成的语句称为空语句,它什么都不做。所以,不要在for语句中随意加分号。 

 

二.  具体程序考察对for语句的应用 

1.问题的引入:        

  输入两个整数lower和upper,输出一张华氏温度-摄氏温度转换表,华氏温度的取值范围为[lower,upper],每次增加1华氏温度。计算公式如下:

                                                   c=5*(f-32)/9 

式中c为摄氏温度,f为华氏温度。

下面是源程序:

#include 
int main()
{
	int fahr,lower,upper;
	double celsius;    //由于这里涉及分数所以我们定义为浮点数 
	printf("请输入华氏温度的下确界值:");  //温度数值的输入 
	scanf("%d", &lower);   //温度数值的读取 
	printf("请输入华氏温度的上确界值:");
	scanf("%d", &upper);
	if (lower<=upper)  //if语句执行的条件 
	{
		for (fahr=lower; fahr<=upper; fahr++) //for语句的应用 
		{
			celsius=(5.0/9.0)*(fahr-32.0);  //关系式的引入 
			printf("%4d %6.1f\n", fahr, celsius);  //转换值的输出 
		}
	}
	else
	{
		printf("您输入的lower值大于upper值(输入错误)"); //错误提醒 
	}
	 
	return 0;
 } 

  语句分析:这里令初始值fahr等于下确界值lower,语句再次进入的判断条件fahr<=upper,满足则语句再次被执行,直到条件不再满足,每次执行完循环体语句后,再执行fahr++语句,再进入判断语句,从而完成for语句。

下面是该程序的流程图:

#C语言程序设计-----C语言学习(2)##_第3张图片   

注意:在输出格式控制说明中,可以加宽度限定词,指定数据的输出宽度。例如,整型数据的输出格式控制说明%md,则指定了数据的输出宽度为m(包括符号位),对于实型数据输出格式控制说明%m.nf,指定了输出浮点型数据时保留n位小数,且输出宽度为m(包括符号位和小数点)。 

 

三.  一些实例的自我训练 

问题一:

输入一个正整数n,计算1-1/3+1/5-1/7+····的前n项和。

源程序:

#include 
int main()
{
	int denominator, flag, i, n;
	double item,sum;
	printf("Enter n:");  //输入提示 
	scanf("%d", &n);
	flag=1;       //用于表示符号 
	denominator=1;  //denominator为第i项的分母 
	item=1;
	sum=0;    //赋sum初始值为零 
	for (i=1; i<=n; i++)
	{
		sum=sum+item;
		flag=-flag;  //改变符号 
		denominator=denominator+2;  //分母递增2 
		item=flag*1.0/denominator;	 //计算第i+1项的值 
	}
	printf("sum=%.2f\n", sum);  //保留两位小数 
	
	
	return 0;
 } 

问题二:

输入一个正整数n,生成一张2的乘方表,输出2的0次到n次的值。

源程序:

#include 
#include    //调用数学函数 
int main()
{
	int i, n;
	int power;
	printf("Enter n:");  //输入提示 
	scanf("%d", &n);
	for(i=0; i<=n; i++)
	{
		power=pow(2,i);  //调用数学函数pow(2,i)计算2的i次方 
		printf("pow(2,%d)=%d\n", i, power);
	}
	

	return 0;
}

问题3

输入一个正整数n(n<=16),生成一张阶乘表,输出0!到n!的值。要求定义和调用函数fact(n)计算n!,函数类型为double。

源程序:

#include 
double fact(int n);  //自定义函数声明 
int main()
{
	int i,n;
	double result;
	printf("Enter n:");
	scanf("%d", &n);       //输入提示 
	for (i=0; i<=n; i++)
	{
		result=fact(i);  //调用自定义函数计算阶乘 
		printf("%d!=%.0f\n", i, result);
	}
	return 0;
}
double fact(int n)    //定义求阶乘的函数 
{
	int i;
	double product;
	product=1;
	for (i=1; i<=n; i++)   //循环n次,计算n的阶乘 
	{
		product=product*i;
	}
	return product;   //返回主函数 
}

 

好啦,今天就分享到这里,又是一天兢兢业业的大学生。谢谢大家的关注。

 

#C语言程序设计-----C语言学习(2)##_第4张图片 

 

 

 

 

 

你可能感兴趣的:(C语言学习,学习,开发语言,c语言,算法,数据结构,python,c++)