C语言学习 第五章
C语言 第五章-循环结构程序设计
执行过程如图所示。其中i为外循环的控制变 量,j为内循环的控制变量。
i =0 当 i <=10
j=0 当 j<=10
printf(“%d ”, i*j ) j++ i++
例4 编程打印“九九乘法表”。
分析:九九乘法表 1×1=1 1×2=2 1×3=3 … 2×1=2 2×2=4 2×3=6 … 3×1=3 3×2=6 3×3=9 … …… 9×1=9 9×2=18 9×3=27 …
i ++ ; } while ( i <= 100 ) ; printf ( " %d " , sum ) ; }
结果相同
同样是下列程序,但如果while后面的表达式结果一开始就是 假时,两种循环结果会不一样。
main ( ) /*程序1*/
{ int i , sum = 0 ; i = 101 ;
所以程序需要设计成二重循环。由于题目只 要求找到一组解,所以在循环过程中只要找到一组 满足条件的x, y, z就可以跳出循环。
跳出循环的方法可以采用break语句,但是, 因为是二重循环,所以要考虑使用break是否方便。
程序 百钱买百鸡问题。 void main ( ) { int x , y , z ;
打印第2行 ( i = 2 ) for (j=1;j<=9;j++) printf(“%5d”,i*j) ; printf ( “ \n ” ) ; /*换行打印*/
…… 打印第9行 ( i = 9 )
for (j=1;j<=9;j++) printf(“%5d”,i*j) ; printf ( “ \n ” ) ; /*换行打印*/
C语言程序设计第五章
05 案例分析
案例一:条件语句在程序中的应用
总结词
条件语句是C语言中用于根据不同条件执行不同操作的语句,通过if、else if和else关键 字实现。
详细描述
编程练习二:循环语句应用
总结词
理解并掌握while和for循环的使用
详细描述
通过编写程序,实现重复执行某段代 码直到满足特定条件,或者根据需要 重复执行某段代码指定次数。例如, 计算1到100的累加和,或者打印出0 到99的所有偶数。
编程练习三:数组操作应用
总结词
理解并掌握数组的基本操作
VS
详细描述
详细描述
数组在程序中用于存储和处理同一种类型的 数据元素,例如存储一组学生的成绩、计算 一组数据的平均值等。数组操作包括数组的 声明、初始化、访问和修改等。通过循环语 句可以方便地遍历数组元素并进行处理。数 组操作在程序中具有广泛的应用,是C语言
中重要的数据结构和算法之一。
06 总结与展望
本章总结
详细描述
C语言中的数组是一种存储相同类型元素的线性数据结构。可以通过索引访问数 组元素,进行赋值、交换、排序等操作。同时,C语言还提供了字符串操作函数, 如strcpy、strcat、strlen等。
语法点三:数组操作
01
示例代码
02
```c
int array[10]; // 声明一个包含10个整数的数组
详细描述
循环语句在程序中用于重复执行一段代码, 例如打印1到10的数字、计算一定数量的累 加和等。循环语句可以嵌套使用,以实现更 复杂的循环结构和算法。循环语句通常与条 件语句结合使用,以控制循环的执行条件和 次数。
c语言(第五章选择结构) c语言 教学课件
• !((year%4==0 && year%100!=0)||year%400==0)或者:
• (year%4!=0 )||( year%100==0 && year%400!=0)
C语言程序设计
第五章 选择结构程序设计
5.3 if语句(条件选择语句)
• if语句的三种形式 ▪ 形式一: • 格式:
语句2
=0
表达式3 非0
语句3
=0 语句4
C语言程序设计
第五章 选择结构程序设计
• 例:
if (salary>1000) else if (salary>800) else if (salary>600) else if (salary>400) else index=0;
index=0.4; index=0.3; index=0.2; index=0.1;
if (x>0) printf(“%f”,x) ;
else printf(“%f”,-x);
(3)在if 和else 后面可以只含一个内嵌的语句,也可以有 多个操作语句,此时用花括号将几个语句括起来成为一 个复合语句。如:
if (x>y)
{ t=x ; x=y ; y=t ; }
C语言程序设计
第五章 选择结构程序设计
a=4;b=5;
!a
//值为0
a&&b //值为1
a||b
//值为1
!a||b
//值为1
4&&0||2 //值为1
5>3&&2||8<4-!0 //(5>3)&&2||(8<(4-(!0))) 值为1
c语言程序设计 第五章 程序控制流程——选择结构
1. 基本语法格式
if(表达式)
语句
说明:
(1) if语句的执行过程是先计算表达式的值,如果非0就执行包含在if中的语句;如果为0就不执行该语句。如下图所示:
(2) if语句中的表达式可以是任意的有值表达式,实际编程时往往使用关系表达式或将多个关系表达式用逻辑运算符连接起来的逻辑表达式。
main()
{
double a=.9*9,b=.1;
double c=0.1+0.2;
printf("c==0.3 %d\n",c==0.3);
printf("a==b %d\n",a==b);
}
【例5.4】比较两个浮点数是否相等的正确方法
#include <stdio.h>
#include <math.h>
#include <stdio.h>
main()
{
int a10,b=50,c=30;
if(a=b+c) printf("*******\n");
else printf("$$$$$$$\n");
}
【例5.14】输入两个实数,按代数值由小到大的次序输出这两个数。
#include <stdio.h>
main()
scanf("%d,%d,%d",&a,&b,&c);
max=a;/*先假定变量a的值最大*/
if(max<b) max=b;/*比较变量max值和变量b值的大小,如果b大,就将b赋给max*/
if(max<c) max=c;/*比较变量max值和变量c值的大小,如果c大,就将c赋给max*/
C语言程序设计-第5章全解
函数返回的值,程序可以使用它, 也可以不使用它
while(…) { getchar(); c=getchar(); … } /* 返回值不被使用 */ /* 返回值被使用 */
2018/10/21 华中科技大学计算机学院C语言课程组 18
5.2.1
函数的定义
函数定义的一般形式为: 类型名 函数名(参数列表) { 声明部分 语句部分 }
2018/10/21 华中科技大学计算机学院C语言课程组 19
类型名说明函数返回值(即出口参数)的数据类型 (简称为函数的类型或函数值的类型),可以是除 数组以外的任何类型。当返回值类型为void,函数 将不返回任何值。 参数列表说明函数入口参数的名称、类型和个数, 它是一个用逗号分隔的变量名及其类型列表,它描 述了在调用函数时函数所接收的参数。一个函数可 能没有参数,在没有参数的情况下,参数列表说明 为void,否则必须明确地列出每一个参数的类型。
16
图5.1 C语言程序的基本结构
2018/10/21
华中科技大学计算机学院C语言课程组
17
5.2
函数的定义与函数的声明
程序中若要使用自定义函数实现所需的功能, 需要做三件事: ① 按语法规则编写完成指定任务的函数,即 定义函数; ② 有些情况下在调用函数之前要进行函数声 明; ③ 在需要使用函数时调用函数
2018/10/21
华中科技大学计算机学院C语言课程组
9
在函数的顶端用“/*……*/”格式包含的部分是函 数头部注释,包括函数名称、函数功能、函数参数、 函数返回值等内容,如有必要还可增加作者、创建 日期、修改记录(备注)等相关项目。虽然函数头 部注释在语法上不是必需的,但可以提高程序的质 量和可维护性,在程序设计时要遵从这一编程规范。 GetNum是函数名,其后的void说明函数调用时不 接收任何参数,即没有入口参数,函数执行完应该 返回所产生的随机数,即该随机数是函数的出口参 数,函数名前的int说明出口参数的类型为整型。 函数体内的rand是接口stdlib.h中的一个函数,它 返回一个非负并且不大于常量RAND_MAX的随机整 数,RAND_MAX的值取决于计算机系统。 MAX_NUMBER是用#define定义的符号常量,其 值为1000。当执行return语句时,其后表达式的值 被带回到调用函数中。
C语言第五章
学习提示: (1)算法包括输入、处理和输出三个部分 ,其中处理部分为选择结构。
b=t
F
输出a,b 结束
5
信息科学与技术学院 软件工程系
选择结构算法设计
South West Jiaotong University
【例5. 1】输入a、b值,如果a>b,那么交换a和b,使得a≤b。 解决该问题的主要步骤为: 开始
17
信息科学与技术学院 软件工程系
关系运算符和关系表达式
【例】编写以下程序,查看结果。 #include <stdio.h> void main() { int a,b,c; int d,e,f; a=4,b=5,c=6; d=a>b; e=a<b<c; f=c>b>a; printf("%d %d %d \n",d,e,f); }
South West Jiaotong University
20
信息科学与技术学院 软件工程系
逻辑运算符- 优先级
• 各类运算符的优先级关系:
South West Jiaotong University
– !(非)高于 &&(与) 高于 ||(或)。 – &&(与)和||(或)低于关系运算符 – !(非)高于 算术运算符
1)任何数值(字符、整数、实数、指针)都可以表示 逻辑意义,只要数值不等于0,就表示“真”,而0 表示“假”;
2)关系与逻辑运算表达式的运算结果为“真”,表达 式的值为int型整数1,运算结果为“假”,则表达 式的值为int型整数0。
由2)可知,C语言的关系运算表达式和逻辑运算表 达式应该属于整型表达式范畴。
C语言第5章
π
6
定义实型变量s=0; 整型变量n=1,k=-1;
1./(2*n-1)>=1e-4?
k=k*(-1); s=s+k*(1./(2*n-1)); n++; 输出4*s的值
程序如下: main() {int n=1,k=-1; float s=0; while(1./(2*n-1)>=1e-4) {k=-k; s=s+k/(2.*n-1); n++; } printf(“PI=%f”,s*4); } 运行结果为: PI=3.141397
1
一、什么是循环 所谓循环,就是重复执行某一程序段。 所谓循环,就是重复执行某一程序段。循环是所 有程序设计中都有的一种最重要的程序控制结构。 有程序设计中都有的一种最重要的程序控制结构。 正是有了循环,使得程序变得非常简单。 正是有了循环,使得程序变得非常简单。可用最 少的程序代码就可完成许多复杂的事情。 少的程序代码就可完成许多复杂的事情。同时循 环也是所有程序设计中最难的一种程序结构, 环也是所有程序设计中最难的一种程序结构,许 多同学对于其它程序结构都好理解, 多同学对于其它程序结构都好理解,但一遇到循 环就变糊涂了,不可理解了。 环就变糊涂了,不可理解了。这一点希望引起同 学们的极大注意。本书一共给出了三种循环: 学们的极大注意。本书一共给出了三种循环: 语句构成的循环; ⑴用while语句构成的循环; 语句构成的循环 语句构成的循环; ⑵用do-while语句构成的循环; - 语句构成的循环 语句构成的循环; ⑶用for语句构成的循环; 语句构成的循环
定义变量sum=0,i=1 接收用户的输入n sum=sum+i; i++; i<=n printf(“sum=%d\n”,sum); #include “stdio.h” main() { int i,sum,n; i=1;sum=0; printf(“\ninput n:”); scanf(“%d”,&n); do { sum=sum+i; i++; }while(i<=n); 9 printf(“sum=%d\n”,sum);}
C语言课件 第5章
第5章 选择结构程序设计
/*程序 5 - 3, 求两个数的最大值、 最小值*/ main( ) { float x, y; float max, min; printf(″请输入两个数x, y: ″); scanf(″%f, %f″, &x, &y); if (x>y) {max=x; min=y; } else {max=y; min=x; } printf(″max=%6.2f, min=%6.2f\n″, max, min); } 输入数据: 1.2, 2.54 运行结果: max= 2.54, min= 1.20
第5章 选择结构程序设计
5.1.3 多分支if语句
多分支if语句不是一条具体的语句,它通过if语句的嵌套实
现。其一般形式为: if (条件表达式1)
if (条件表达式2) 语句1
else 语句2 else if (条件表达式3) 语句3 else 语句4
第5章 选择结构程序设计
T T
条件表达式1 条件表达式2
}
第5章 选择结构程序设计
例 5 — 7 将例 5 — 5 用switch语句实现。
switch ((int)(cj/10)) { 10: 9: ch=′A′; break; /*注意选择表达式的构造*/
8: ch=′B′; break;
7: ch=′C′; break; 6: ch=′D′; break;
第5章 选择结构程序设计
例 5 –3 输入两个数, 求两个数的最大值、最小值。 数据分析:
输入量: 两个数x、 y, float
C语言(第五章If)
}
输入: 1 0
输出:a=1, b=5, c=3, d=1 a=0, b=0, c=0, d=0
12
例: main( )
{
int a, b=0, c=0, d=0; scanf(“ %d”,&a); d=a | | (b=5) | | (c=3) ; printf (“a=%d, b=%d, c=%d, d=%d, \n”,a, b, c, d);
(year % 4= =0 && year % 100!=0) | | (year % 400= =0 && year % 4= =0)
由于能被400 整除的年份一定能被4 整除,所以可省去后一部分,即: (year % 4 = =0 && year % 100 != 0) | | (year % 400 = =0 ) 若判断非闰年,只在闰年表达式前加 ! , 即:
if(表达式1) 语句1; else if(表达式2) 语句2; else if(表达式3) 语句3; ┆ else if(表达式m) 语句m;
表达式1
假
表达式2
真
假 假
真
else 语句 n;
表达式3
真
表达式4
假
假定:m=4,n=5,所示框图
语句1 语句2 语句3
真
语句4
语句5
21
例: 商店售货按购物的款数分别给予不同的优惠折扣。 超过500元打8.5折, 300-500打9折,100-300打9.25折,50-100打9.5折,50以下不打折 设变量:n:购物款数, c:优惠折扣百分比, a:优惠后的实际款数
34 _ 28
真
表达式
C语言第5章循环结构程序设计1
(2)在循环体中应有使循环趋向于结束的语句。 比如上例中,循环结束的条件是“score>=0”, 那么当我们把这个班的成绩全部输入完后, 一定要输入一个负数,才能使程序往下执行。 (3)循环体语句有可能一次也不执行。比如说上 例中,当第一次输入的分数就为负数时,则 循环体一次也不执行。
§5.3 do …while语句
① ② ④ ③
for(i=1; i<100; i++) s=s+i; printf(″s=%d″, s); }
/*循环体语句*/
对于for循环,有一点非常重要,即条件测 试永远是在循环开始时进行,如果在循环开 始时条件为假,那么循环体语句就不会被执 行。如: int i=10; for (k=10;k!=i;k++) printf(″%d″,k); printf(″%d″,k);
2、循环控制变量必须在循环体内有所改变,才 能使while和do-while语句的循环控制条件表达 式的值不断改变,直至循环结束。否则会造 成死循环。例如: i=1; while(i<=100) putchar(′*′); i++; 这个循环永远不会结束,因为“i++;”语句 不属于循环体中的语句,循环控制变量i没有 在循环体内被改变。 程序应该作如下改变:
在使用while语句的时候,我们要注意以下 两个问题: (1)循环体如果包含一个以上的语句,应该用花 括号括起来,以复合语句的形式出现。如果 不加花括号,则while语句的范围只到while后 面的第一个分号处。比如上例中,while语句 中如无花括号,则while语句范围只到 “average+=score;”。
#include <stdio.h> main() {int i,n;long fac; Scanf(―%d‖,&n); i=1 while (i<=n) fac=fac*i; i++; } Printf(―%d!=%ld‖,n,fac); }
C语言第五章习题及答案
第五章习题答案一、选择题1) 有以下程序#include <stdio.h>main(){ int n=2,k=0;while(k++&&n++>2);printf("%d %d\n",k,n);}程序运行后的输出结果是A)0 2 B)1 3 C)5 7 D)1 22)有以下程序:main(){ int k=5;while(--k) printf("%d",k-=3);printf("\n");}执行后的输出结果是()。
A)1 B)2 C)4 D)死循环3)有以下程序#include<stdio.h>main(){int y=10;while(y--);printf(”y=%d\n”,y);}程序执行后的输出结果是A)y=0 B)y= -1 C)y=1 D)while构成无限循环4) 若变量已正确定义,有以下程序段i=0;do printf("%d,",i);while(i++);printf("%d\n",i)其输出结果是A)0,0 B)0,1 C)1,1 D)程序进入无限循环5)有以下程序:main(){ int i;for(i=1;i<=40;i++){ if(i++%5==0)if(++i%8==0) printf("%d",i); }printf("\n");}执行后的输出结果是()。
A)5 B)24 C)32 D)406) 有以下程序#includes <stdio.h>main(){ int a=1,b=2;for(;a<8;a++) {b+=a; a+=2;}printf ("%d,%d\n",a,b);}程序运行后的输出结果是(A)9,18 (B)8,11 (C)7,11 (D)10,147) 有以下程序#include<stdio.h>main(){int y=9;for( ; y>0;y--)if(y%3= =0) printf("%d",--y);}程序的运行结果是A)741 B)963 C)852 D)8) 一下程序段中的变量已正确定义for(i=0;i<4;i++,j++)for(k=1;k<3;k++); printf("*");程序段的输出结果是A)******** B)**** C)** D)*9) 有以下程序#iinclude <stdio.h>main(){ int i,j;for(i=3; i>=1; i--){ for (j=1;j<=2;j++) printf(“%d”,i+j);printf(“\n”);}}程序的运行结果是()A) 2 3 4 B) 4 3 2 C) 2 3 D) 4 53 4 5 5 4 3 3 4 3 44 5 2 3 答案:D10)有以下程序main(){int i,j;for(i=1;i<4;i++){for(j=i;j<4;j++) printf(“%d*%d=%d “,i,j,i*j);printf(“\n”);}}程序运行后的输出结果是A) 1*1=1 1*2=2 1*3=3 B) 1*1=1 1*2=2 1*3=32*1=2 2*2=4 2*2=4 2*3=63*1=3 3*3=9C) 1*1=1 D) 1*1=11*2=2 2*2=4 2*1=2 2*2=41*3=3 2*3=6 3*3=9 3*1=3 3*2=6 3*3=9 11) 有以下程序#include<stdio.h>main(){int i,j,m=55;for(i=1;i<=3;i++)for(j=3;j<=i;j++) m=m%j;printf("%d\n",m);}程序的运行结果是A)0 B)1 C)2 D)312) 有以下程序#include <stdio.h>main(){ int i=5;do{ if (i%3= =1)if (i%5= =2){printf(“*%d”,i); break; }i++;}while(i!=0);printf(“\n”);}程序的运行结果是A)*7 B)*3*5 C) *5 D)*2*6答案:A13) 有以下程序#include <stdio.h>main(){ int c=0,k;for(k=1;k<3;k++)switch(k){ default:c+=k;case 2:c++;break;case 4:c+=2;break;}printf("%d\n",c);}程序运行后的输出结果是A)3 B)5 C)7 D)914) 设变量已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)的程序段是A)n=0;while((ch=getchar())!='\n')n++;B)n=0;while(getchar()!='\n')n++;C)for(n=0;getchar()!='\n';n++);D)n=0;for(ch=getchar();ch!='\n';n++);15)有以下程序#includemain(){int a=1,b=2;while(a<6){b+=a;a+=2;b%二10;}printf(”%d,%d\n”,a,b);}程序运行后的输出结果是A)5,11 B)7,1 C)7,11 D)6,116) 要求通过while循环不断读入字符,当读入字母N时结束循环。
《C语言程序设计》第5章数组、字符串、指针
相当于声明了5个整型变量
说明: ① 数组的所有元素的数据类型都是相同的。 ② 数组取名规则应符合标识符的规定,数组 名不能与同一函数中其它变量名相同: int a; float a[10]; 是错误的。
③ C语言中规定数组的下标从0开始,方括号 中常量表达式表示数组元素的个数。
④ 不能在方括号中用变量来表示元素的个数, 但是可以是符号常数或常量表达式。例如: int n=5,a[n]; 是错误的。
二维数组在内存的存放顺序是“先行后列”
a[0][0] a[0][1] a[0][2] a[0][3] a[1][0]
…
a[2][3]
5.3.2 二维数组元素的引用
二维数组的元素的引用形式为: 数组名[下标][下标] 使用二维数组的情况举例: 学生多门功课的成绩,如: a[100][3]可以用来记录100个学生3门功 课的成绩。 矩阵,如: a[3][3]可以用来记录3×3的矩阵。一个 数组元素正好存放一个矩阵的元素。
5.2.2 一维数组的初始化
1、数组声明时初始化 在编译阶段进行的。这样将减少运行时间, 提高效率。 数组初始化的一般形式为: 类型符 数组名[常量表达式]={值,值…值}; 例如: int a[10]={ 0,1,2,3,4,5,6,7,8,9 }; 相当于a[0]=0; a[1]=1;... a[9]=9;
…
a[9]
#include <stdio.h> 声明有10个元素 void main() 的一维数组a {int n,i; float s=0, ave, a[10]; a[0] a[1] … a[9] for(i=0;i<10;i++) a[i] { scanf("%f",&a[i]); a[i] s=s+a[i]; } ave=s/10; for(i=0;i<10;i++) a[i] a[i] if (a[i]>ave) printf("%f ",a[i]); }
C语言 第五章新
例1:任意输入十个数,求它们的和. 任意输入十个数,求它们的和.
main() { int i=0; float s=0,x; while (i<10) while(i<100) { scanf(“%f”,&x); s=s+x; i++; } printf(“s=%f\n”,s); }
例2:求1+2+3+...+100的和。 例3:输入一串字符,求字符个数。 1+2+3+...+100的和。 的和 输入一串字符,求字符个数。 main() {int i,sum; i=1;sum=0; ; while(i<=100) while(i<100) {sum=sum+i; i=i+1;} printf(“sum=%d”,sum);} ; main() {char i; int n=0; ; i=‘’; while(i!=‘\n’) {scanf(“%c”,&i); n=n+1;} printf(“n=%d”,n);}
例:将上面计算10!并输出结果的程序用do-while语句写出: 将上面计算10!并输出结果的程序用do-while语句写出: 10 do 语句写出 main() { int i=1; long int t=1; while (i<=10) { t=t*i; i++; } printf(“10!=%ld\n”,t); } “ ” main() { int i=1; long int t=1; do { t=t*i; i++; }while (i<=10); printf(“10!=%ld\n”,t); } “ ”
C语言第5章
问题分析 可以使用多个赋值语句,完成把这些价格存入一个表格的任务。用嵌套for循环 打印输出结果。输出时用转移字符’\t’控制对齐,行号变化时必须插入一个’\n’ 以输出回车换行。为了在输出中增添描述性标题,只需简单地在首行数值打印之 前打印一行标题,在首列数值打印前打印一列标题即可。
程序实现
§5.3.4 多维数组的初始化和引用
#include <stdio.h> #include <stdlib.h> void main() { int i,j,nSum=0, nAverage,nAver[3]; int nScore[3][5]={{80,61,59,85,76},{75,65,63,87,77},{92,71,70,90,85}}; for(i=0;i<3;i++) { for(j=0;j<5;j++) nSum=nSum+nScore[i][j]; nAver[i]=nSum/5; nSum=0; } nAverage=(nAver[0]+nAver[1]+nAver[2])/3; printf("math:%d\nc languag:%d\ndFoxpro:%d\n",nAver[0],nAver[1],nAver[2]); printf("total:%d\n", nAverage); }
输出方法:
输出第i行第j列元素: printf(“%d”,a[i][j]); 输出整个数组元素:
for (i=0;i<2;i++) for(j=0;j<3;j++) printf(“%d”,a[i][j]);
例5-5 用二维数组实现如下表5-2所示的计算每门课的 平均分数。
c语言 第5章循环结构(while do-while for)
第1次运行: Input data: 11 22 33 44 55 66 77 88 99 0 1 2 11 22 33 44 55 66 77 88 99 0 sum=495 第1次运行: Input data: 0 0 sum=0 sum的初值与0的和
5.4 for语句
#include <stdio.h> int main() { int i=1,sum=0; while (i<=100) { sum=sum+i; i++; } printf("sum=%d\n",sum); return 0; for (i=1;i<=100;i++) } #include <stdio.h> int main() { int i=1,sum=0; do { sum=sum+i; i++; }while(i<=100); printf("sum=%d\n",sum); return 0; }
i++ for ( i = 1; i <= 100; i = i + 1 ) printf ( “**********\n” );
语句是?
【例1】在3~100之间所有3的倍数中,找出个位 数为2的数。
编程点拨 3~100内3的倍数有3 6 9 … 99 for ( i=3; i<=100; i=i+3 )
第1次运行: Input data: 11 22 33 44 55 66 77 88 99 0 1 2 11 22 33 44 55 66 77 88 99 sum=495 第2次运行: Input data: 0 (空一行) sum的初值 sum=0
C语言-第5章 循环结构程序设计
第5章循环结构程序设计一、单项选择题1.在C语言中,下列说法中正确的是()。
A) do-while语句构成的循环不能用其它语句构成的循环来代替。
B) do-while语句构成的循环只能用break语句退出。
C) do-while语句构成的循环在while后的表达式非零时结束循环。
D) do-while语句构成的循环,在while后的表达式为零时结束循环。
2. break语句不能出现在语句中()A) switch B)for C) while D) if…else3.对于break语句和continue语句的说法错误的是()A) break语句不能用于循环语句和switch语句之外的任何其他语句中。
B) break和continue也可以用于if语句中C) continue语句只结束本次循环,而不是终止整个循环的执行。
D) break语句是结束整个循环过程,不再判断执行循环的条件是否成立。
4. 语句while(!y);中的表达式!y等价于A)y==0 B)y=1 C)y=!0 D) y==15. 若有“int a=1,x=1;”,则循环语句“while(a<10) x++; a++;”的循环执行()。
A)无限次B)不确定次C)10次D)9次6. 有以下程序段int k=0while(k) k++;则while循环体执行的次数是A) 无限次B) 有语法错,不能执行C) 一次也不执行D) 执行1次7. 下列循环语句中有语法错误的是( )A while(x=y) 5;B while(0) ;C do 2;while(x= =b);D do x++ while(x= =10);8. 当运行时输入:abcd$abcde ,下面程序的运行结果是。
#include<stdio.h>main(){char c;while(putchar(getchar())!='$');printf("end");}A)abcd$abcde B)abcd$end C)abcdend D)abcd$abcdeend 9. 以下程序段( )x=-1;do { x=x*x; }while(x>0);A) 是死循环B) 循环执行一次C) 循环执行二次D) 有语法错误10. 下面程序段执行后的结果为: ( )int sum=0, n=10;do { sum=sum+n;n++; }while(n<10);printf(“%d,%d”,sum,n);A. 0, 10 B) 10, 11C) 0, 11 D) 以上结果都不对12. 循环“for(i=0,x=1;i=10&&x>0;i++);”的循环执行()。
c语言第五章选择结构程序设计(习题册答案)
c语⾔第五章选择结构程序设计(习题册答案)第五章选择结构程序设计基础练习(A)⼀、填空题1、关系表达式的运算结果是逻辑值。
C语⾔没有逻辑型数据,以1代表“真”,以0代表“假”。
2、逻辑运算符!是单⽬运算符,其结合性是由右结合性。
3、C语⾔提供的三种逻辑运算符是&&、|| 、!。
其中优先级最⾼的为!,优先级最低的为| | 。
4、逻辑运算符两侧的运算对象不但可以是0和1,或者是0和⾮0的整数,也可以是任何类型的数据。
系统最终以0 和⾮0 来判定它们属于“真”或“假”。
5、设y为int型变量,请写出描述“y是偶数”的表达式(y%2==0)。
6、设x,y,z均为int型变量,请写出描述“x或y中有⼀个⼩于z”的表达式x7、条件“22&&x<3。
8、判断char型变量ch是否为⼤写字母的正确表达式是(ch>=‘A’)&&(ch<=‘Z’)。
9、当a=3,b=2,c=1时,表达式f=a>b>c的值是0。
10、当a=5,b=4,c=2时,表达式a>b!=c的值是1。
11、已知A=7.5,B=2,C=3.6,表达式A>B&&C>A||AB的值是0。
12、若a=6,b=4,c=2,则表达式!(a-b)+c-1&&b+c/2的值是1。
13、有int x,y,z;且x=3,y=-4,z=5,则表达式(x&&y)==(x||z)的值为1。
14、有int x,y,z;且x=3,y=-4,z=5,则以下表达式的值为1。
!(x>y)+(y!=z)||(x+y)&&(y-z)15、有int a=3,b=4,c=5,x,y;,则以下表达式的值为0。
!(x=a)&&(y=b)&&016、if (!k) a=3;语句中的!k可以改写为k= =0,使其功能不变。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
§5.2 do-while循环语句
例[5-3] 计算sin(x) = x- x3/3! + x5/5! - x7/7! + ... 直到最后一项的绝对值小于1e-7时为止。 分析:这道题使用递推方法来做。 让多项式的每一项与一个变量n对应,n的值依次为1,3,5,7,..., 从多项式的前一项算后一项,只需将前一项乘一个因子: (-x2)/((n-1)*n) 输入x
13 上一页 下一页 停止放映 13
§5.3 for循环语句
二、for 语句的几种格式:
– b. for(;表达式2 ;表达式3 ) 语句;
使用条件是:循环控制变量的初值不是已知常量,而是在前面通 过计算得到,例如: i = m - n ; …… for(;i < k ;i++) 语句;
– c. for (表达式1 ;表达式2 ;)语句
4 上一页 下一页 停止放映 4
§5.1 while循环语句
[例5-1] 求n ! 分析:n!= n*(n-1)*(n-2)* ..2*1,0! = 1。即S0=1,Sn=Sn-1*n。可以从S0 开始,依次求出S1、S2、...Sn。 统一令S等于阶乘值,S的初值为0!=1;变量i为计数器,i从1变到n,每 一步令S=S*i,则最终S 中的值就是n!。
2 上一页 下一页 停止放映 2
重点与难点
重点
– 1. 循环结构; – 2. 程序的设计方法。
难点
– 程序设计方法
3 上一页 下一页 停止放映 3
§5.1 while循环语句
while语句用来实现“当型”循环。
一.格式:while(表达式) 语句;
假(0)
当表达式为真 语句
N-S图
表达式
上一页 下一页 停止放映
输入n scanf(“%d”,&n);
for (S = i = 1; i < =n;i ++)
S *= i 输出n,s
15 15
§5.3 for循环语句
[例5-6] 求Fibonacci数列:1,1,2,3,5,8,…的前30个数,即 F1=1 (n=1) f1=1,f2=1 F2=1 (n=2) for ( i = 1; i < =15;i ++) Fn=Fn-1+Fn-2 (n≥3) #include “stdio.h” 输出f1,f2 main() f1=f1+f2, f2=f1+f2 { long int f1,f2; int i; 程序运行结果: f1=1; f2=1; 1 1 2 3 for(i=1;i<=15;i++) 5 8 13 21 { 34 55 89 144 printf(“%15ld%15ld”,f1,f2); 233 377 610 987 if(i%2==0) printf(“\n”); 1597 2584 4181 6765 f1=f1+f2; 10946 17711 28657 46368 f2=f2+f1; 75025 121393 196418 317811 } 514229 832040 16 }
14 上一页 下一页 停止放映 14
§5.3 for循环语句
二、for 语句的几种格式:
– e. for(表达式1;表达式2 ;表达式3 ) ;
在for语句中,语句(循环体)可以为空语句,这种形式一般在循环 体比较简单的情况下使用,循环体的内容一般出现在表达式3中, 例如: for(s=i=1; i<=n; s*=i++); 等价于 for(s=i=1; i <=n; i++) s=s*i;
上一页 下一页
求解表达式1
假(0)
表达式2
真(非0) 语句(循环体) 求解表达式3
for语句的下一语句 表达式1 当表达式2为真 语句 表达式3
12 12
停止放映
§5.3 for循环语句
二、for 语句的几种格式: for语句的三个表达式都是可以省略的,但分号“;”绝对不能省略。
– a. for(; ;)语句;
真(非0) 表达式
流程图
假(0)
二.特点:先执行,后判断。因此,循环体至少被执行一次。 三. 注意:
– 1、注意do ...while与标准的直到型循环结构的区别:直到型循环是当 条件为真时结束循环,而do...while语句是条件为假时结束循环。 – 2、避免“死循环”的出现。 – 3、当循环体包含多条语句时,使用复合语句。
开始
输入N S=1, I=1
输入N
S=1,I=1 I<=N Y S=S*I N
当 I<=N
S=S*I I=I+1 输出S
N-S图
上一页 下一页
I=I+1
输出S
结束
流程图
停止放映
5 5
§5.1 while循环语句
mai n ( ) /*求n !*/ { int n,i; long int s; printf(" please input n (n>=0) :"); scanf ( " %d" , &n ) ; if (n>=0) { s=1; if (n>0) { i=1; while (i<=n) { s*=i; RUN i=i+1; please input n(n>=0): } /* End of while */ 6!= 720 } /* End of if (n>0)*/ RUN printf("%d! = %ld \n",n,s); please input n(n>=0): } /* End of if (n>=0)*/ else printf("Invalid input! \n"); Invalid input! } 6
上一页 下一页 停止放映 6
§5.1 while循环语句
[例5-2] 利用格里高利公式求π : π /4 = 1 - 1/3 + 1/5 - 1/7 + ... 直到最后一项的绝对值小于等于10-6为止。 # include <stdio.h> # include <math.h> main ( ) { double pi, t; 运行结果为: long int n ,s ; RUN t = 1.0 ; n=1; pi = 3.141591 s=1; pi= 0.0 ; while (fabs(t)>=1e-6) { pi= pi+ t ; n=n+2; s=-s; t = ( float ) s / n ; } pi= pi* 4 ; printf(" pi = %lf\n",pi) ; }
上一页 下一页 停止放映 10
§5.2 do-while循环语句
[例5-4]: 求 s=1+2+3+4…+n main() { int sum=0,i=0, n; printf(“Input number n:” ) ; scanf(“%d”,&n); do { i++; sum=sum+i; }while(i<n); printf("%d\n",sum); }
这是一个死循环,一般用条件表达式加break语句在循环体内适当 位置,一旦条件满足时,用break语句跳出for循环。 例如,在编制菜单控制程序时,可以如下: for(; ;) { printf("please input choice( Q=Exit):"); /* 显示菜单语句块:*/ scanf("%c",&ch); if ((ch==„Q‟) || (ch==„q‟)) break; /* 语句段*/ }
T=x,n=1,s=x n=n+2 t=t*(-x*x)/((n-1)*n) s=s+t 直到|t|<10-7
输出x,s
9 上一页 下一页 停止放映 9
§5.2 do-while循环语句
#include <math.h> #include <stdio.h> main ( ) { double s,t,x; int n ;/*s表示多项式的值,t表示每一项 的值*/ printf("please input x :"); scanf( " %lf",&x ) ; t = x ; n=1; s = x ; 运行结果如下: do { R U N n = n + 2 ; please input x:1.575 t = t*( -x*x)/(n-1)/n ; sin(1.575300)=0.9999 s = s + t ; RUN }while (fabs(t)>=1e-7); please input x:-0.65 printf("sin(%f )=%lf",x ,s ) ; sin(-0.650000)=-0.60 10 }
上一页 下一页
T=1,pi=0,n=1,s=1 当|t|>=10-6
pi=pi+t
n=n+2 s=-s t=s/n pi=pi*4 输出pi
7 停止放映 7
§5.2 do-while循环语句
do-while语句用来实现“直到型”循环。 一.格式:do 语句 while(表达式);
语句
语句
直到 表达式为假 N-S图
上一页 下一页 停止放映 16
§5.4 三种循环语句的讨论