C程序设计第四章
C语言程序设计第4章

4.2.2 逻辑表达式
例:设a=3,b=4,x=0,y=0,求值: 结果:0 1、a < b && x > y 结果:1 2、a = = b || x = = y 3、! a || a > b 结果:0 4、! a && b || x > y 结果:0 5、int a=-1,b=1,c=2,d=3,m=5,n=2,k; k=(m=a+b)&&(n=c+d) k为0 ,m为0, n为2
当尝试对该程序进行编译时,C语言编译器会报告 "illegal else without matching if"的语法错误。 28
4.3.4使用if语句应注意的问题
void main() { int x; x=1; if(x==1) printf("x等于1\n"); else ; /*这里多加了个分号*/ printf("x不等于1\n"); }
if(表达式) 语句1 else 语句2
真 表达式 语句1 语句2 假
如果括号内的表达式为真,则执行括号后面的 语句1。如果表达式值为假,则执行else后面的 语句2;语句1和语句2只能有一个被执行。
21
4.3.2 else子句
【例4-2】输入两个整数,将较大者输出。 /*程序4-2*/ #include<stdio.h> void main () { int a, b, max; printf("Please input the data a and b:"); scanf("%d, %d",&a, &b); if(a>=b) max=a; else max=b; printf("The max is %d\n", max); }
《C语言程序设计课件》第四章-数组

#include <stdio.h> #define N 10 int main(void)
{ int a[N], i; printf("Enter %d numbers: ", N);
for (i = 0; i < N; i++)
for(i=0;i<1;i++) if (a[i]>a[i+1]) { t=a[i];a[i]=a[i+1];a[i+1]=t; }
a[0]
20
a[1]
02
a[2]
44
a[3]
55
a[4]
88
a[5]
99
for(i=0;i<5;i++) if (a[i]>a[i+1]) { ……}
for(i=0;i<4;i++) if (a[i]>a[i+1]) { ……}
4.2 一维数组
一维数组主要用来存储一组类型相同并且数量一定 的数据。其中,每个数据称为数组的一个元素。
4.2.1 一维数组定义 一维数组的定义形式如下: 类型名 数组名[常量表达式]; int x[100]; char string[10]; double data[10];
常量表达式给出了数组的长度,在C语 言中定义数组时必须确定数组的长度。
600
xxx[[[654]]]
700
xxx[[[765]]]
800
xxx[[[876]]]
900
xxx[[[987]]]
《C语言程序设计(第五版)》第4章选择结构程序的设计 PPT课件

►(b*b-4*a*c)>=0
b*b-4*a*c>=0
►z= (x>y+3)
z= x>y+3
►(a>b)= = c
a>b= =c
►a=(b!=c)
a=b!=c
当然为提高程序的可读性、可维护性你不妨多使用 括号,因为C语言中的有些优先级很容易让你不小心犯 错。
C语言程序设计
第4章 选择结构程序设计
第10页
“>”的结果为“假”,即条件不成立。
C语言程序设计
第4章 选择结构程序设计
第5页
4.1 关系运算及关系表达式
4.1.1 关系运算符及其优先次序
运算符
含义
> 大于
优先级
结合性
>= 大于或等于 这些关系运算符等优
< 小于
先级,但比下面的优 先级高
左结合性
<= 小于或等于
== 等于 != 不等于
这些关系运算符等优 先级,但比上面的优 先级低
C语言程序设计
第4章 选择结构程序设计
第4页
4.1 关系运算及关系表达式
所谓“关系运算”实际上就是“比较运算”, 即将两个数据进行比较,判定两个数据是否符合 给定的关系。例如,
► “x>y+3”中的“>”表示一个大于关系运算。 ➢如果a的值是5,b的值是1,则大于关系运算
“>”的结果为“真”,即条件成立; ➢如果a的值是2,b的值是1,则大于关系运算
因为按照自左至右的结合方向,先执行关系运算
“a>b”得值为1(“真”),再执行关系运算“1>c”, 得值为0(“假”),因此y为0。
C语言程序设计
C程序设计(第五版)-第4章选择结构程序设计课后习题答案

C程序设计(第五版)-第4章选择结构程序设计课后习题答案1. 什么是算术运算?什么是关系运算?什么是逻辑运算?【答案解析】算熟运算:算术运算即“四则运算”,是加法、减法、乘法、除法、乘⽅、开⽅等⼏种运算的统称。
其中加减为⼀级运算,乘除为⼆级运算,乘⽅、开⽅为三级运算。
在⼀道算式中,如果有多级运算存在,则应先进⾏⾼级运算,再进⾏低⼀级的运算。
C语⾔中的算熟运算符包括:+、-、*、/、++、--、%等种类。
如果只存在同级运算;则从左⾄右的顺序进⾏;如果算式中有括号,则应先算括号⾥边,再按上述规则进⾏计算。
⽰例:$ (1 + 1)^{2} * 4+5 * 3$解析:1. 先进⾏括号内运算1+1,然后进⾏乘⽅运算得到结果4.2. 接下来与4相乘,得到结果163. 因为乘法优先级⼤于加法,因此先进⾏5*3,得到结果154. 最终相加得到结果31结果:31关系运算:关系的基本运算有两类:⼀类是传统的集合运算(并、差、交等),另⼀类是专门的关系运算(选择、投影、连接、除法、外连接等),⽽在C语⾔中,关系运算通常被认为是⽐较运算,将两个数值进⾏⽐较,判断⽐较结果是否符合给定的条件。
常见的关系运算符包括:<、<=、>、>=、==、!=等种类。
其中,前4种关系运算符(<、<=、>、>= )的优先级别相同,后2种(==、!=)也相同。
⽽前4种⾼于后2种。
例如, >优先于==。
⽽>与<优先级相同。
并且,关系运算符的优先级低于算术运算符,关系运算符的优先级⾼于赋值运算符(=)。
逻辑运算:在逻辑代数中,有与、或、⾮三种基本逻辑运算。
表⽰逻辑运算的⽅法有多种,如语句描述、逻辑代数式、真值表、卡诺图等。
⽽在C语⾔中,逻辑运算通常⽤于使⽤逻辑运算符将关系表达式或其它逻辑量连接起来组成逻辑表达式⽤来测试真假值。
常见的逻辑运算符包括:&&、||、!等种类&&:与是双⽬运算符,要求有两个运算对象,表⽰两个运算对象都成⽴,则结果为真,否则结果为假。
《新编C语言程序设计教程》课件第4章

如if语句中的选择体和while语句中的循环体需多条语句描述 时,就必须采用复合语句。
复合语句只需用大括号“{ }”将一系列语句括起来即可。
复合语句不是一条具体语句,它是一种逻辑上的考虑,凡是 单一语句可以存在的位置,均可以使用复合语句。复合语句用 在语法上只能使用单一语句,而相应操作需由多条语句描述。 复合语句又称为分程序,它可以有属于自己的数据说明部分。
第 4章 顺序结构程序设计
4.1.3 特殊语句
1. 注释语句
格式为: /*注释文本*/ 注释语句虽然不对程序的运行产生任何影响, 但必要的 注释是程序的重要组成部分。 注释分功能性注释和说明性注释。 功能性注释用以注 释程序、 函数及语句块的功能, 说明性注释用以注释变量的 作用。
第 4章 顺序结构程序设计
(10) 在分析程序的输入数据时, 要同时考虑输入数据 的输入格式。
第 4章 顺序结构程序设计
4.3 数据输出
4.3.1 一般格式
printf(格式字串, 输出参数表) (1) 格式字串用以描述输出数据的格式, 由格式说明符 和普通字符组成。 与scanf( )函数中格式字串一样, 格式说 明符由“%”和格式字符组成, 不同的格式说明符对应不同 类型数据的输出, 普通字符原样输出。
第 4章 顺序结构程序设计
(2) 输出参数可以是表达式。如果是常量, 直接输出; 如是 变量, 输出其值; 如是表达式, 先计算表达式的值, 再输出。
(3) 输出函数的调用一般也采用语句调用形式, 间接形成C 语言的输出语句。 例如: int i=3, j=6; ① printf("i=%2d,j=%2d",i,j); 输出结果:i= 3,j= 6 ② printf("%2d*%2d=%2d",i,j,i*j);
《C语言程序设计课件》第四章-循环语句

{ sum+=n; scanf("%d",&n); }
printf("The sum is :%d\n",sum);
return 0; }
从任意 n 个实数中选出最大数 和最小数
从任意 n 个实数中选出最大数和最小数
#include <stdio.h> int main( ) {
/*程序4-1*/ #include <stdio.h> int main() {
int i,sum=0; i=1; while(i<=100) {
sum += i; i++; } printf("sum=%d\n",sum); return 0; }
【例4-2】输入一行字符以回车键结束,分别 统计出其中英文字母、空格、数字和其它字符 的个数。
#include <stdio.h> int main( ) {
int i,n;
printf("This program prints a table of squares.\n"); printf("Enter number of entries in table:");
scanf("%d",&n); i=1; while (i<=n)
【例】求整数1~100的累加和,使用for语句实 现。
#include <stdio.h> int main() {
int i,sum=0; for(i=1;i<=100;i++)
谭浩强C程序设计第4章

图4.1是一个程序中函数调用的示意图。 图4.1
例4.1 在主函数中调用其他函数。
#include <iostream>
பைடு நூலகம்
using namespace std; void printstar(void)
//定义printstar函数
{
cout<<″****************************** ″<<endl;
}
//输出30个“*”
void print_message(void)
//定义print_message函数
{
cout<<″ Welcome to C++!″<<endl;
//输出一行文字
要根据需要编写一个个函数,每个函数用来实现某
一功能。因此,读者必须掌握函数的概念以及学会 设计和使用函数。
“函数”这个名词是从英文function翻译过来的,其 实function的原意是“功能”。顾名思义,一个函数 就是一个功能。
在实际应用的程序中,主函数写得很简单,它的作 用就是调用各个函数,程序各部分的功能全部都是 由各函数实现的。主函数相当于总调度,调动各函 数依次实现各项功能。
}
C++要求在定义函数时必须指定函数的类型。
4.3 函数参数和函数的值
4.3.1 形式参数和实际参数
在调用函数时,大多数情况下,函数是带参数的。 主调函数和被调用函数之间有数据传递关系。前面 已提到:在定义函数时函数名后面括号中的变量名 称为形式参数(formal parameter,简称形参),在 主调函数中调用一个函数时,函数名后面括号中的 参数(可以是一个表达式)称为实际参数(actual parameter,简称实参)。
C程序设计(第四版)教案第四章

月日第4章选择结构程序设计4.1 选择结构和条件判断举例:在现实生活中,需要进行判断和选择的情况是很多的如果你在家,我去拜访你如果考试不及格,要补考如果遇到红灯,要停车等待周末我们去郊游70岁以上的老年人,入公园免票都需要用到【选择】在现实生活中,需要进行判断和选择的情况是很多的,处理这些问题,关键在于进行条件判断,由于程序处理问题的需要,在大多数程序中都会包含选择结构,需要在进行下一个操作之前先进行条件判断。
C语言有两种选择语句:(1)if语句,实现两个分支的选择结构(2)switch语句,实现多分支的选择结构例4.1 在例3.5的基础上对程序进行改进。
题目要求是求一元二次方程的根。
由键盘输入a,b,c。
假设a,b,c的值任意,并不保证b*b-4ac>0。
需要在程序中进行判别,如果b*b-4ac>0 ,就计算并输出方程的两个实根,否则就输出“方程无实根”的信息。
解题思路:输入a,b,c计算discdisc<0计算x1,x2输出无实根输出x1,x2假真程序#include <stdio.h>#include <math.h>int main ( ){double a,b,c,disc,x1,x2,p,q;scanf("%lf%lf%lf",&a,&b,&c);disc=b*b-4*a*c;计算b2-4ac,disc的值变为-15if (disc<0)printf(“has not real roots\n”);else{ p=-b/(2.0*a);q=sqrt(disc)/(2.0*a);x1=p+q;x2=p-q;pri ntf(“real roots:\nx1=%7.2f\nx2=%7.2f\n”,x1,x2); }return 0;}-15<0为真#include <stdio.h>#include <math.h>int main ( ){double a,b,c,disc,x1,x2,p,q;scanf("%lf%lf%lf",&a,&b,&c);disc=b*b-4*a*c;计算b2-4ac,disc的值变为8if (disc<0)printf(“has not real roots\n”);else{ p=-b/(2.0*a);q=sqrt(disc)/(2.0*a);x1=p+q;x2=p-q;printf(“real roots:\nx1=%7.2f\nx2=%7.2f\n”,x1,x2); }return 0;}8<0为假p的值变为-1q的值变为0.71x1的值变为-0.29x2的值变为-1.71if (disc<0)printf(“has not real roots\n”);else{ p=-b/(2.0*a);q=sqrt(disc)/(2.0*a);x1=p+q;x2=p-q;printf(“real roots:\nx1=%7.2f\nx2=%7.2f\n”,x1,x2);}return 0;}选择结构,用if语句实现的if (disc<0)printf(“has not real roots\n”);else{ p=-b/(2.0*a);q=sqrt(disc)/(2.0*a);x1=p+q;x2=p-q;printf(“real roots:\nx1=%7.2f\nx2=%7.2f\n”,x1,x2);}return 0;}4.2 用if语句实现选择结构4.2.1 用if语句处理选择结构举例例4.2 输入两个实数,按代数值由小到大的顺序输出这两个数。
C语言程序设计第4章

能够使用if语句和switch语句,进行 选择结构程序设计 会利用多分支结构解决较复杂逻辑 判断问题
目录
CONTENTS
00 案例4 百分制转换等级制 01 4.1 选择结构判定条件的构成 02 4.2单分支和双分支选择结构程序设计 03 4.3 多分支选择结构程序设计
目录
CONTENTS
04 4.4 小结 05 4.5 拓展案例
案例4 百分制转换等级制
问题描述
学生成绩管理系统中需要对老师录入的百分制转换为等 级制。百分制与等级制的对应关系如下:90-100 对应A、 80-89对应B、70-79对应C、60-69对应D、0-59对应E。
问题分析
这是一个需要根据不同条件作出相应选择的程序,根据 描述,我们可以定义float变量fScore用来存放成绩值, 从而根据题目列出下列条件表达式: fScore>=90&&fScore<=100 your grade is A fScore>=80&&fScore<=89 your grade is B fScore>=70&&fScore<=79 your grade is C fScore>=60&&fScore<=69 your grade is D fScore>=0&&fScore<=59 your grade is E
4.4 小结
(1)嵌套if-else语句和switch语句都是用来实现多分支选择结构的,它们的 应用环境不同,嵌套if-else 语句用于对多条件并列测试,从中取一的情形; switch语句用于单条件测试,从其多种结果中取一种的情形。 (2)一般情况下用switch能解决的问题,用嵌套if-else 也一样能解决,反 之用嵌套if-else 语句能解决的问题用switch也能解决,在使用时要根据具体 问题灵活运用。 (3)如果多分支选择结构中需要判断的逻辑关系只是是否相等,则最好用 switch语句。switch语句的执行效率高于嵌套if-else语句。
C语言程序设计第四章

运行情况: 1989↙ 1989is not a leap year.
2000↙
2000 is a leap year.
C程序设计
第五章
选择结构程序设计
例4.6 求
2 ax bx c 0 方程的解
#include "stdio.h" #include "math.h" main() {float a,b,c,d,disc,x1,x2,realpart,imagpart; scanf("%f,%f,%f",&a,&b,&c); printf("The equation"); if (fabs(a)<=1e-6) printf("is not a quadratic"); else disc=b*b-4*a*c; if(fabs(disc)<=1e-6) printf("has two equal roots:%8.4f\n",-b/(2*a)); else if(disc>1e-6) {x1=(-b+sqrt(disc))/(2*a); x2=(-b-sqrt(disc))/(2*a); printf("has distinct real roots:%8.4f and %8.4f\n",x1,x2); } else {realpart=-b/(2*a); imagpart=sqrt(-disc)/(2*a); printf("has complex roots:\n"); printf("%8.4f+%8.4fi\n",realpart,imagpart); printf("%8.4f-%8.4fi\n",realpart,imagpart); } }
C语言程序设计教案第四章顺序程序设计(5篇模版)

C语言程序设计教案第四章顺序程序设计(5篇模版)第一篇:C语言程序设计教案第四章顺序程序设计第四章顺序程序设计课题:第四章顺序程序设计教学目的:1、掌握赋值语句、输入输出语句2、学会简单的顺序程序设计教学重点:输入、输出语句教学难点:格式输入输出语句步骤一复习引导上一章介绍的常量、变量、运算符、表达式等都是构成程序的基本成分。
本章将介绍为编写简单程序所必需的一些内容。
步骤二讲授新课一、C语句概述1、控制语句ν二个分支语句(if-else、switch)ν三个循环语句(for、while、do-while)ν四个转移语句(continue、break、goto、return)2、函数调用语句ν如:printf(“Hello, world!”);3、表达式语句ν x+y;i++;a=2;a=3*5, 40;4、空语句(;)5、复合语句{ 语句序列}一、赋值语句赋值语句是由赋值表达式加上一个分号构成,如:b=3;if((a=b)>0)t=a;三、数据输入输出的概念及在C语言中的实现1、输入、输出2、输入输出操作是由函数来实现的Ξ C语言函数库中有“标准输入输出函数” Ξ字符的输入与输出:getchar()、putchar()Ξ字符串的输入与输出:gets()、puts()Ξ格式输入与输出: scanf()、printf()3、在使用C语言库函数时,要用预编译命令“#include”将有关的“头文件”包括到用户源文件中。
例如:使用标准输入输出库函数时,要用到“stdio.h”文件,在源文件开头应有: #include 或#include “stdio.h”(一)字符数据的输入输出1、字符输出函数——putchar 语法:putchar(c)语义:(向stdout终端)输出一个字符;如:#include main(){ putchar(…141‟);putchar(…a‟);putchar(…A‟+32);putchar(…n‟);}输出:aaa2、字符输入函数——getchar语法:getchar(),是一个无参函数;语义:(从stdin终端上)输入一个字符;getchar 包含在stdio.h中,是stdio.h中定义的宏;如:#include main(){putchar(getchar());}如:#include main(){ int c;while((c=getchar())!=…#‟)if(c>=…a‟&&c<=…z‟)putchar(c-‟a‟+‟A‟);else putchar(c);}从键盘上输入一串字符遇‘#’结束,若字符在a~z之间时,则输出字符的大写;否则直接输出字符。
C程序设计第4章

(2) “输出表列”是需要输出的一些数据,可以是表 达式。
(2) “输出表列”是需要输出的一些数据,可以是表 达式。
▪ 如: printf(“%d %d”,a,b) 输出:3 4 printf(“a=%d b=%d”,a,b) 输出:a=3 b=4
其printf函数的一般形式可表示为: printf(参数1,参数2,……,参数n)
3.使用scanf函数时应注意的问题 (1)格式控制后,是变量地址,非变量名 (2)若在格式控制中除了%外还有其它字符,则输入时应一 起输入 (3)用%c输入时,所有字符都有效
scanf(“%c%c%c”,&c1,&c2,&c3); 若输入a b c 则c1=‘a’,c2=‘ ‘,c3=‘b’. 所以应该输入abc (4)输入数据时,遇到以下情况认为输入结束 空格,回车,Tab
4.4.2 getchar函数(字符输入函数) ▪ 此函数的作用是从终端(或系统隐含指定的输入设备)输入
一个字符。getchar函数没有参数,其一般形式为: getchar() 【例4.2】输入单个字符。 #include <stdio.h> void main() { char c; c=getchar(); putchar(c); putchar(‘\n’); } ▪ 请注意,getchar()只能接收一个字符。 ▪ 也可putchar(getchar()); 或者 printf(“%c”,getchar());
A A,65 a,97
【例4.12】求ax2+bx+c=0方程的根。a,b,c由键盘输入, 设b2-4ac>0。源代码如下: #include <stdio.h> #include <math.h> void main() { float a,b,c,disc,x1,x2,p,q; scanf ("a=%f,b=%f,c=%f",&a,&b,&c); disc=b*b-4*a*c; p=-b/(2*a); q=sqrt(disc)/(2*a); x1=p+q; x2=p-q; printf("x1=%5.2f\nx2=%5.2f\n",x1,x2); } 运行情况如下: a=1,b=3,c=2 x1=-1.00 x2=-2.00
《c语言程序设计教学资料》第4章---键盘输入与屏幕输出

编辑ppt
编辑ppt
格式化输出
例: m.n 例:int a=1234; float f=123.456; char ch=‘a’; printf(“%8d\n%2d\n”,a,a); printf(“%f\n%8f\n%8.1f\n%.2f\n%.2e\n”,f,f,f,f,f); printf(“%3c\n”,ch);
float f=123.456; printf(“%f\n%10f\n%10.2f\n%.2f\n%-10.2f\n”,f,f,f,f ,f ); }
编辑ppt
%e格式符
指定以指数形式输出实数 VC++给出小数位数为6位
指数部分占5列 小数点前必须有而且只有1位非零数字 printf(”%e”,123.456); 输出:1.234560 e+002
补空格。
编辑ppt
输出实数时的有效位数。
#include <stdio.h> void main() { float x,y;
x=111111.111; y=222222.222; printf(″%f″,x+y); }
编辑ppt
例4.8 输出实数时指定小数位数。
#include <stdio.h> void main() {
有以下几种用法:
① %f。不指定字段宽度,由系统自动指定字段宽度,使整数
部分全部输出,并输出6位小数。应当注意,在输出的数字中
并非全部数字都是有效数字。单精度实数的有效位数一般为7位。
②%m.nf。指定输出的数据共占m列,其中有n位小数。如果
第4章 C语言选择结构程序设计

《 C语言程序设计》
流程图
真 (非0) 表达式
假(0)
语句1
语句2
《 C语言程序设计》
例4.1
【例4.1】试用if…else语句编写程序,判断学生成绩 是否合格。
判断方法: ①如果成绩大于等于60,输出及格 ②否则输出成绩不及格
《 C语言程序设计》
4.2 if语句 if语句
C语言中if条件语句有三种结构形式,分别是: if结构(单分支结构) if if-else if-else结构(双分支结构) if-else-if结构 (多分支结构) if-else-if
《 C语言程序设计》
例4.5 设计一个应用程序,判断某一年是否为闰年
判断方法: ①如果该年能被4整除而不能被100整除,则为闰年; ②或者能被400整除也是闰年。 如: 1996年、2000年是闰年 1996年 2000年是闰年
1998年 1900年不是闰年 1998年、1900年不是闰年
逻辑表达式为: year%4==0 && year%100!=0 || year%400==0
4.4 条件运算符和条件表达式
条件运算符: 1、条件运算符:?:是C语言中惟一的一个三 目运算符。 一般形式为: 2、一般形式为: 表达式1 ? 表达式2 : 表达式3 3、操作过程:如果表达式1成立,则表达式2的 操作过程: 值就是此条件表达式的值;否则,表达式3 的值是此条件表达式的值。
《 C语言程序设计》
《 C语言程序设计》
4.2.2 if-else结构 if-else结构
1、格式: if(条件表达式 语句1 条件表达式) if(条件表达式) 语句1; 真 (非0) else 语句2; 语句 ; 语句1 2、执行过程:
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
A)1,2,0
B)2,1,0
C)1,2,1
D)2,1,1
无锡润智图书有限公司制作
3、若有以下程序段,且变量已正确定义和赋值: for(s=1.0,k=l;k<=n;k++) s=s+1.0/(k*(k+1)); printf(”s=%f\n\n”,s); 请填空,使下面程序段的功能与之完全相同: S=1.0;k=l; while( k<=n ) { s=s+1.0/(k*(k+1)); k++ ; } printf(”s=%f\n\n”,s);
无锡润智图书有限公司制作
【问题4】有以下程序: # include <stdio.h> main() { int n=2,k=O; while(k++&&n++>2); printf(”%d%d\n”,k,n); ) 程序运行后的输出结果是____ D 。 A)0 2 B)1 3 C)5 7 D)1 2 【思路分析】本题考查逻辑运算,在进行逻辑与运算时, 若“&&”的左边运算结果已经为O,则“&&”右边的表达 式将不再进行计算,结果总为O。本题:在while语句的 表达式中由于k=0,所以只进行&&左边的运算,不进行 &&右边的运算,所以k的值为1,n的值仍为2。
无锡润智图书有限公司制作
【问题2】有以下程序: # include <stdio. h> main() { int s[12]={1,2,3,4,4,3,2,1,1,l,2,3),c[5]={O},i; for(i=O;i<12;i++) c[s[i]]++; for(i=l;i<5;i++) printf(“%d”,c[i]); printf(“\n"); ) C 。 程序的运行结果是____ A. 12 3 4 B.2344 C.4332 D.112 3 【思路分析】程序中定义了两个数组s和c,数组c中有5个元 素,每个元素的初始值为O;数组s中有12个元素,包含4个 “1”,3个“2”,3个“3”,2个“4”。第一个for语句中,用 s[i]作为c数组的下标,用于统计s[i]中相同数字的个数,同 时将统计的结果放在以该数字为下标的c数组中。第二个for 语句用于将c数组中a[1]~a[4]4个元义 for(i=0;i<6;i++,i++) for(k=l;k<4;k++); printf(“*”); 程序段的输出结果是______ D 。 A.****** B.**** C.** D.* 4、有以下程序: # include<stdio. h> main() { int f,fl,f2,i; fl=0;f2=1; printf(”%d%f,fl,f2); for(i=3;i<=5;i++) { f= fl+ f2; printf(“%r,f); f1=f2;f2=f; } printf(”\n"); } 01123 。 程序运行后的输出结果是__________
无锡润智图书有限公司制作
54321 。 【问题3】以下程序的输出结果是__________ # include<stdio.h> main() { int n=12345,d; while(n!=0) { d=n% 10; printf("%d",d); n/= 10; } }
【思路分析】本题考查的重点是while循环的理解与 运用。若n不为O,则n对10进行模运算,并打印出 n%10的值,之后再进行n/一10运算,直至n为O时 结束循环。因此,依次输出54321。
无锡润智图书有限公司制作
5、以下程序中函数f的功能是在数组x的n个数(假定n个数互不相同 )中找出最大、最小数,将其中的数与第一个数对换,把最大的数与 最后一个数对换。请填空。 # include <stdio.h> void f(int x[],int n) { int p0,pl,i,j,t,m; i=j=x[0l; p0= pl=0; for(m=0;m<n;m++) { if(X[m]>i){i=x[m];p0=m;) else if(x[m]<j){j=x[m]; pl=“;) } t= x[p0]; x[p0]= x[n -1];x[n -1]=t; X[0] t; t=x[p1];x[p1]= x[O] ; ______= } main() { int a[10],u; for(u=0;u<10;u++)scanf(”%cf,,&a[u]); f(a,10); for(u= O;u<10;u++) printf(“%f,a[u]); printf("\n"); 无锡润智图书有限公司制作 }
无锡润智图书有限公司制作
(二)巩固练习 1、有如下程序 main( ) { int x=23; do { printf("%d",x--);}while(!x);} 该程序的执行结果是( B ) A、321 B、23 C、不输出任何内容 D、陷入死循环
无锡润智图书有限公司制作
【问题2]以下程序运行后的输出结果是____ 5 。 # include <stdio. h> main() { int a=l,b=7; do { b= b/2; a+=b; } while (b>l); printf(”%d\n”,a); } 【思路分析】本题主要考查do-while语句,它先执行一 次指定的循环体语句,然后判别表达式,当表达式的值 为非零(“真”)时,返回重新执行循环体语句,如此 反 复,直到表达式的值等于O为止,此时循环结束。
无锡润智图书有限公司制作
第二节
用while语句构成的循环结构
课堂探析
无锡润智图书有限公司制作
【问题1】若有以下程序: main() { int y=10; while(y- -); printf(“y=%d\n”,y); } 程序运行后的输出结果是____ B 。 A) y=0 B) y= -1 C) y=l D) while构成无限循环 【思路分析】while语句一般形式为: while(表达式)语句; 其语句先判断表达式,后执行语句。 而表达式y- -先返回y的当前值,再 进行-1运算。
无锡润智图书有限公司制作
【问题2】有以下程序: # include <stdio. h> main() { int a=1,b=2; while(a<6) {b+=a;a+=2;b%=10;} printf(”%d,%d\n”,a,b); } B 。 程序运行后的输出结果是____ A) 5,11 B) 7,1 C) 7,11 D) 6,1 【思路分析】 第一次循环,a=l,b=b+a=3;a=a+2=3;b=b%10=3; 第二次循环,a=3,b=b+a=6;a=a+2=5; b=b%10=6; 第三次循环,a=5,b=b+a=ll; a=a+2=7.b=b%10=1; 结束循环;
无锡润智图书有限公司制作
【思路分析】do-while语句的特点是先执行循环体, 然后再判断循环条件是否成立,当循环条件的值为 O时循环结束。本题中执行switch语句,寻找与5匹 配的case 5分支,没有寻找到则执行default后的语 句,n-0,k的值变为4,继续执行switch语句,寻 找与4匹配的case 4分支,找到后开始执行其后的 语句“n+ =2;k--;”,n的值为2,k的值变为3, 遇到break语句跳出该switch语句体。执行print语 句输出2;此时n=2,k=3依旧满足do-while循环条 件,将用同样的方式再次执行switch语句,直到n5时不再满足do-while循环条件退出所有的循环。 答案:A
C语言
无锡润智图书有限公司
无锡润智图书有限公司制作
第四章
一、考试要求 理解
循环结构程序设计
掌握 for语句的执行过程 while语句的执行过程 Do while语句的执行 过程 循环嵌套的几种形式、 流程和功能
for语句的执行过程 while语句的执行过程 Do while语句的执行过程 循环嵌套结构的执行过程
无锡润智图书有限公司制作
第三节
用do-while语句构成的循环结构
课堂探析
无锡润智图书有限公司制作
(一)问题探析 【问题1】若变量已正确定义,有以下程序段: i=0: do printf(“%d” ,i); while(i++); printf(”%d\r,i); 其输出结果是_____ 。 B A)O,O B)O,1 C)1,1 D)程序进入无限循环 【思路分析】为本题考查的重点是do-while用法。do-while 循环是先执行循环体中的语句,然后再判断while中的条件 是否为真,如果为真(非零)则继续循环;如果为假,则终 止循环。因此,do-while循环至少要执行一次循环语句。
无锡润智图书有限公司制作
(二)巩固练习 B 1、对于for(表达式1;;表达式3)可理解为_______ A. for(表达式1;0;表达式3) B. for(表达式1;1;表达式3) C. for(表达式1;表达式1;表达式3) D. for(表达式1;表达式3;表达式3) 2、以下程序的输出结果是_________. D Main( ) { int x; for(x=3;x<6;x++) printf((x%2)?(“**%d”):(“##%d\n”),x); } A.**3 B.##3 C.##3 D.**3##4 ##4 **4 **4##5 **5 **5 ##5