C程序设计基础与实验:chap02-for-循环_第1页
C程序设计基础与实验:chap02-for-循环_第2页
C程序设计基础与实验:chap02-for-循环_第3页
C程序设计基础与实验:chap02-for-循环_第4页
C程序设计基础与实验:chap02-for-循环_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Chap2用C语言编写程序2.1在屏幕上显示HelloWorld!2.2求华氏温度100°F对应的摄氏温度2.3计算分段函数2.4输出华氏—摄氏温度转换表2.5生成乘方表与阶乘表2.4输出华氏-摄氏温度转换表2.4.1程序解析2.4.2for语句2.4.3指定次数的循环程序设计2.4.1程序解析例2-6输入2个整数lower和upper,输出一张华氏-摄氏温度转换表,华氏温度的取值范围是[lower,upper],每次增加1°F。fahrcelsius30-1.131-0.6320.0330.6341.1351.72.4.1程序解析-温度转换表#include<stdio.h>intmain(void){intfahr,lower,upper;

doublecelsius;printf("Enterlower:");scanf("%d",&lower);printf("Enterupper:");scanf("%d",&upper);printf("fahrcelsius\n");//温度重复转换:华氏温度从lower开始,到upper结束,每次增加1°F

for(fahr=lower;fahr<=upper;fahr++){celsius=(5.0/9.0)*(fahr-32);printf("%d%6.1f\n",fahr,celsius);}

return0;}fahr=fahr+1Enterlower:30Enterupper:

35fahrcelsius30-1.131-0.6320.0330.6341.1351.7例2-8中for语句的流程for(fahr=lower;fahr<=upper;fahr++){celsius=(5.0/9.0)*(fahr-32);printf("%d%6.1f\n",fahr,celsius);}fahr=fahr+2输出?Enterlower:30Enterupper:

35fahrcelsius30-1.131-0.6320.0330.6341.1351.7for(表达式1;表达式2;表达式3)

循环体语句实现C语句的重复执行2.4.2for语句-循环语句3个表达式、循环体语句!书写顺序和执行顺序不同!表达式1只执行一次循环(控制)变量:for语句中,通过改变或判断某个变量的值来控制循环的执行for(fahr

=lower;

fahr

<=upper;

fahr

++){celsius=(5.0/9.0)*(fahr-32.0);printf("%d%6.1f\n",fahr,celsius);}for语句中的循环变量赋初值判断其值改变其值for(fahr

=lower;

fahr

<=upper;

fahr

++){celsius=(5.0/9.0)*(fahr-32.0);printf("%d%6.1f\n",fahr,celsius);}表达式1:给循环变量赋初值,指定循环的起点。fahr=lower表达式2:给出循环的条件,决定循环的继续或结束。fahr<=upper表达式3:设置循环的步长,改变循环变量的值,从而可改变表达式2的真假性。fahr++语句:被反复执行的语句,一条语句。for语句的说明for(fahr=lower;fahr<=upper;fahr++)

{celsius=(5.0/9.0)*(fahr-32.0);printf("%d%6.1f\n",fahr,celsius);}for(fahr=lower;fahr<=upper;fahr=fahr+1)

celsius=(5.0/9.0)*(fahr-32.0); printf("%d%6.1f\n",fahr,celsius);复合语句{}和空语句;for(fahr=lower;fahr<=upper;fahr=fahr+1);

celsius=(5.0/9.0)*(fahr-32.0); printf("%d%6.1f\n",fahr,celsius);!不要在for语句中随意加分号求1+2+……+100抽取具有共性的算式:sum=sum+isum初值为0,该算式重复100次,i从1变到100设i为循环变量,则:指定循环起点的表达式1:i=1给出循环条件的表达式2:i<=100设置循环步长的表达式3:i++循环体语句:sum=sum+i;for(i=1;i<=100;i++)sum=sum+i;2.4.3指定次数的循环程序设计/*计算1+2+3+……+100*/#include<stdio.h>intmain(void){

inti,sum;sum=0; /*置累加和sum的初值为0*/

for(i=1;i<=100;i++)/*循环重复100次*/sum=sum+i; /*反复累加*/printf(“sum=%d\n”,sum); /*输出累加和*/

return0;}源程序-求1+2+……+100for(i=1;i<=100;i++){sum=0;sum=sum+i;}sum=5050#include<stdio.h>intmain(void){

inti,sum;sum=0;

for(i=1;i<=100;i++)sum=sum+i;printf(“sum=%d\n”,sum);

return0;}求1+1/2+1/3+……+1/100for(i=1;i<=100;i++)sum=sum+1.0/i;inti;doublesum;printf(“sum=%f\n”,sum);一般包含四个部分:初始化:指定循环起点给循环变量赋初值,如i=1;进入循环之前,设置相关变量的初值,如sum=0。条件控制:只要i<=100,循环就继续工作:指重复执行的语句(循环体)。一条语句,可以是复合语句或空语句。如sum=sum+i。改变循环变量:在每次循环中改变循环变量的值如i++,以改变循环条件的真假。一旦i>100,循环结束。指定次数的循环程序设计输入一个正整数n,求前n项和,即循环n次#include<stdio.h>intmain(void){

inti,sum;sum=0;

for(i=1;i<=100;i++)sum=sum+i;printf(“sum=%d\n”,sum);

return0;}例2-7求1+2+3+……+nfor(i=1;i<=n;i++)sum=sum+i;printf(“Entern:");scanf("%d",&n);Entern:100Sum=5050#include<stdio.h>intmain(void){

inti,sum;

printf(“Entern:");scanf("%d",&n);sum=0;

for(i=1;i<=n;i++)sum=sum+i;printf(“sum=%d\n”,sum);

return0;}求1+1/2+1/3+……+1/n#include<stdio.h>intmain(void){inti;

doublesum;

printf(“Entern:");scanf("%d",&n);sum=0;

for(i=1;i<=n;i++)sum=sum+1.0/i;printf(“sum=%f\n”,sum);

return0;}求前n项和,即循环n次,每次累加1项。for(i=1;i<=n;i++)sum=sum+item

(第i项)

item=1.0/(2*i-1)求1+1/3+1/5+…的前n项和#include<stdio.h>intmain(void){inti,n;

doubleitem,sum;printf(“Entern:"); scanf("%d",&n); sum=0;

for(i=1;i<=n;i++){ item=1.0/(2*i-1); /*计算第i项的值*/ sum=sum+item; /*累加第i项的值*/ } printf("sum=%f\n",sum);

return0;}源程序-求1+1/3+1/5+…求前n项和,即循环n次,每次累加1项。for(i=1;i<=n;i++)sum=sum+item

(第i项)item=flag*1.0/denominator

denominator=denominator+2flag=-flag例2-8求1-1/3+1/5-…的前n项和item=flag*1.0/(2*i-1)#include<stdio.h>intmain(void){intdenominator,flag,i,n;

doubleitem,sum;printf(“Entern:");scanf("%d",&n); flag=1;denominator=1; sum=0;

for(i=1;i<=n;i++){ item=flag*1.0/denominator;/*计算第i项的值*/ sum=sum+item;/*累加第i项的值*/flag=-flag;/*准备下一次循环*/denominator=denominator+2; } printf("sum=%f\n",sum);

return0;}例2-8源程序n!=1*2*…*nfor(i=1;i<=n;i++)product=product*item

(第i项)item=i例2-9求n!product=?#include<stdio.h>intmain(void){

inti,n;

doubleproduct;printf("inputn:\n");scanf("%d",&n);product=1; /*置阶乘product的初值为1*/

for(i=1;i<=n;i++) /*循环重复n次,计算n!*/product=product*i;printf("product=%.0f\n",product);

return0;}例2-9源程序输入实数x和正整数n,计算xn=x*x*…*xfor(i=1;i<=n;i++)power=power*item

(第i项)item=?求xn

#include<stdio.h>intmain(void){

inti,n;

doublex,power;printf(“Enterx,n:\n");scanf("%lf%d",&x,&n);power=1; /*置power的初值为1*/

for(i=1;i<=n;i++) /*循环重复n次,计算x的n次幂*/power=power*x;printf("%0.f\n",power);

reutrn0;}源程序-求xn

思考题1、兔子繁衍问题一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假如兔子都不死,请问第1个月出生的一对兔子,至少需要繁衍到第几个月时兔子总数才可以达到R对?(R为给定的正整数。)2、没有输入,输出方程X2+Y2=2009的所有正整数解。3、猴子吃桃问题一只猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半加一个。到第n天(n>1)早上想再吃时,见只剩下一个桃子了。问:第一天共摘了多少个桃子?要求:输入n(1<n<=10),输出第一天摘的桃子数。分析(1)问题分析:这显然是一个循环计算的问题。这个问题可以倒过来考虑:设第i天有p个桃子,则第i-1天应该有2(p+1)个桃子。如此反复计算,直到i=1停止循环。因此,只要循环变量从n开始,用每次减1的循环控制方法就可以了。(2)实现要点:循环变量从n到1递减控制。注意循环只需n-1次。初值p=1。如果正向(循环变量从1到n递增)考虑这个问题,反而很难表达。2.5生成乘方表和阶乘表例2-10生成乘方表输入一个正整数n,生成一张2的乘方表,输出20到2n的值,可以调用幂函数计算2的乘方。for(i=0;i<=n;i++){power=pow(2,i);/*调用幂函数pow(2,i)计算2的i次方*/

输出power的值;}源程序-生成乘方表#include<stdio.h>#include<math.h>intmain(void){

inti,n;

doublepower;printf("Entern:");scanf("%d",&n);

for(i=0;i<=n;i++){power=pow(2,i);/*调用幂函数pow(2,i)计算2的i次方*/printf("pow(2,%d)=%.0f\n",i,power);}

return0;}Entern:4pow(2,0)=1pow(2,1)=2pow(2,2)=4pow(2,3)=8pow(2,4)=16

例2-11生成阶乘表输入一个正整数n,生成一张阶乘表,输出0!到n!的值。要求定义和调用函数fact(n)计算n!,函数类型是double。for(i=0;i<=n;i++){power=pow(2,i);/*调用幂函数pow(2,i)计算2的i次方*/

输出power的值;}for(i=0;i<=n;i++){product=f

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论