当前位置:文档之家› chap3分支结构

chap3分支结构

chap3分支结构
chap3分支结构

§3分支结构

一、引入:

1、输入两个时间,每个时间分别输入小时和分钟的值,然后输出两个时间之间的差,也用几小时几分表示。(提示:转化为分钟,做整数除法和取余运算)

int hour1,minute1;

int hour2,minute2;

scanf(“%d%d”,&hour1,&minute1);

scanf(“%d%d”,&hour2,&minute2);

int t1=hour1*60+minute1;

int t2=hour2*60+minute1;

int t=t2-t1;

printf(“时间差是%d小时%d分钟”,t/60,t%60);如果不转化为分钟,而用直接减的算法,出现借位怎么办?——条件判断

int hour1,minute1;

int hour2,minute2;

scanf(“%d%d”,&hour1,&minute1);

scanf(“%d%d”,&hour2,&minute2);

int ih=hour2-hour1;

int im=minute2-minute1;

if(im<0)//出现了借位的情况

{

im=60+im;

ih--;

}

printf(“时间差是%d小时%d分钟\n”,ih,im);(dev c++调试,if(im<0)设断点查看运行机制)2、输入两个实数,按由小到大的顺序输出这两个数。

#include

int main()

{

float a,b,t;

scanf("%f,%f",&a,&b);

if(a>b)

{ //将a和b的值互换

t=a;

a=b;

b=t;

}

printf("%5.2f,%5.2f\n",a,b);

return 0;

}

二、判断的条件——关系运算,计算两个值之间

的关系

?用关系运算符将两个数值或数值表达式连接起来的式子,称为关系表达式。

?关系表达式的值是一个逻辑值,即“真”或“假”。

?在C的逻辑运算中,以“1”代表“真”,以“0”代表“假”。

六种关系运算符:

<(小于)

<= (小于等于)

> (大于)

>= (大于等于)

== (等于)

!= (不等于)

?前4种关系运算符的优先级别相同,判断是否相等的==和!=比其他的低!

?关系运算符的优先级低于算术运算符。

?关系运算符的优先级高于赋值运算符。

?连续的关系运算是从左到右进行的!

例:printf(“%d\n”,5==3);

printf(“%d\n”,5>3);

printf(“%d\n”,5<=3);

printf(“%d\n”,7>=3+4);

int r=a>0;

三、if语句的一般形式

if (表达式) 语句1

[ else 语句2 ]

说明:“表达式”可以是关系表达式、逻辑表达式,甚至是数值表达式;方括号内的部分(即else子句)为可选的,既可以有,也可以没有

语句1和语句2可以是一个简单的语句,也可以是一个复合语句,还可以是另一个if语句

1、形式1 没有else子句部分

if(表达式) 语句1;

例:完善第一章中的找零计算器,票面不够怎么办?

自行画出流程图。

int amout;

int price=0,change;

printf(“请输入商品金额(元):”);//输入提示

scanf(“%d“,&price);

printf(“请输入收款票面(元):”);//输入提示

scanf(“%d“,&amount);

if (amount >=price)

{

change=amount-price;

1

printf(“找您%d元\n”,change);

}

2、形式2 有else子句部分

if (表达式)

语句1 ;

else

语句2;

a、上例中,票面不够怎么办?

if (amount >=price)

{

change=amount-price;

printf(“找您%d元\n”,change);

}

else

{

printf(“你的钱不够!!!”);

}

b、改正程序:比较两个数的大小

printf(“请输入两个整数”);

scanf(“%d%d”,&a,&b );

int max=0;

if (a>b)

{max=a;}

printf(“大的那个是%d\n”,max);

c、对比程序,哪个逻辑性更强?

max =b; int max=0;

if(a>b) if (a>b)

{max=a; {max=a;

} }

else

{max=b;

}

d、思考:若if()语句后不加{},其后有多句语句,在执行的时候,执行哪一句?

e、思考:若写成if(条件);{语句;},则在条件为真时花括号内的语句还能执行吗?

f、补全程序:每周工作标准时间为40小时,每小时工资为22.50元,超过40小时之外的时间按1.5倍工资支付。现在通过键盘输入工作时间,程序计算应支付的周薪水。

#include

int main()

{

double rate=22.5;//小时工资常量

int standard=40;//定义周标准时间 pay=0;//声明周薪水变量

int hours;

print(“请输入你的周工作时间”);

scanf(“%”,&hours);

if (hours>standard)

{

pay= ;

}

else

pay=hours*rate;

printf(“应支付的周工资为%f\n”,pay);

return 0;

}

g、输出三个整数中的最大者,分析if else的配对

关系。

int a,b,c;

scanf(“%d %d %d”,&a,&b,&c);

int max=0;

if (a>b)

{

if (a>c)

{

max=a;

}

else

{

max=c;

}

}

else

{

if (b>c)

{

max=b;

}

else

{

max=c;

}

}

printf(“The max is %d\n”,max);

●一般情况下,else总是和最近的那个if匹配,

但是有时候会受{}的影响,结论有不同。

●缩进格式不能暗示else的匹配。

h、如果a的值是7,b的值是6,则程序的输出是?

int a=7,b=6;

if ( a == 6 )

if ( b == 7 )

printf("A");

else

printf("B");

答案:

若程序修改为:

2

int a=7,b=6;

if ( a == 6 )

{

if ( b == 7 )

printf("A");

}

else

printf("B");

答案:

3、形式3else部分又嵌套了多层的if语句(级联)if(表达式1) 语句1;

else if(表达式2) 语句2;

else if(表达式3) 语句3;

else if(表达式m) 语句m;

else 语句m+1;

例1、分段函数f(x)=-1;(x<0)

0;(x=0)

2x;(x>0)

if (x<0)

{

f=-1;

}

else if(x==0)

{

f=0;

}

else

{

f=2*x;

}

例2、利用级联if-else自行书写闰年判断的程序int year;

int leap=0;//是否为闰年的逻辑变量指示

scanf(“%d”,&year);

例3、依据考试成绩划分等级,输入一个成绩,若

大于90分,输出优秀;大于80分,输出良好;大于70分,输出中等;大于60分,输出及格;小于60分,输出不及格。

int score;

scanf(“%d”,&score);

if (score <60) if (score>=90) printf(“不及格!”);printf(“优秀”);

else if ( ) else if ( )

例4、分段函数

#include

#include

int main()

{

float x,y;

scanf(“%f”,&x);

if (x>4.6)

y=1;

else if (fabs(x-4.6)<1e-6)

y=0;

else

y=-1;

printf(“x=%f,y=%f”,x,y);

return 0;

}

注意:

1)判断两个实数是否相等的条件是|a-b|<10-6

2)fabs为求实数的绝对值函数,abs为求整数的绝对值函数,记得加上math.h的头文件。

4、if-else的常见错误:

●没有{}

●if()后面多了;

●==错用为=;

例、对于下面的代码:

int a=5,b=6;

3

if ( a=b );

printf("%d\n", a);

运行的输出是:

提示:if只要求()里面表达式的值是零或非零!

四、逻辑表达式

1、用逻辑运算符将关系表达式或其他逻辑量连接起来的式子就是逻辑表达式。

?“&&”和“‖”是双目运算符,要求有两个运算对象(操作数);“!”是单目运算符,只要有一个运算对象

?优先次序:!(非)→&&(与)→‖(或),即“!”为三者中最高的;逻辑运算符中的“&&”和“‖”低于关系运算符,“!”高于算术运算符

逻辑运算结果不是0就是1,不可能是其他数值。而在逻辑表达式中作为参加逻辑运算的运算对象可以是0(“假”)或任何非0的数值(按“真”对待)

2、a && b && c,只有a为真(非0)时,才

需要判别b的值。只有当a和b都为真时才

需要判别c的值。

3、a ‖ b ‖ c。只要a为真(非0),就不

必判断b和c。只有a为假,才判别b。a

和b都为假才判别c。

例1、判别用year表示的某一年是否闰年,可以用一个逻辑表达式来表示。闰年的条件是符合下面二者之一: ①能被4整除,但不能被100整除,如2008。

②能被400整除,如2000。

故判断闰年的条件可以用如下一句语句:

if((year % 4 == 0 && year % 100 != 0) ‖ year % 400 ==0)

例2、写出输出结果:

#include

int main()

{

int i=1,j=2,k=3;

if(i++==1&&(++j==3||k++==3))

printf("i=%d,j=%d,k=%d\n",i,j,k);

return 0;

}

若条件改为,if(i++==2&&(++j==3||k++==3)),情况怎样?

继续改为if(i++==1&&(++j==2||k++==3))呢?

说明:

1)a && b && c。只有a为真(非0)时,才需要

判别b的值。只有当a和b都为真时才需要判

别c的值;a ‖ b ‖ c。只要a为真(非0),

就不必判断b和c。只有a为假,才判别b。a

和b都为假才判别c。

2)短路原则是与(&&)或(||)才有。

5、条件运算符和条件表达式

if (a>b)

max=a; 等价于max=(a>b) ? a : b;

else 或a>b ? (max=a) : (max=b);

max=b;

说明:条件运算符由两个符号(?和:)组成,必须

一起使用。要求有3个操作对象,称为三目(元)运算符,它是C语言中唯一的一个三目运算符。

条件运算符的执行顺序: 先求解表达式1,若为非0(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值。若表达式1的值为0(假),

式的值。

例、输入一个字符,判别它是否为大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。

#include

int main()

{

char ch;

scanf("%c",&ch);

ch=(ch>='A'&&ch<='Z')?(ch+32):ch;

printf("%c\n",ch);

return 0;

}

注:根据优先级可写成ch=ch>='A'&&ch<='Z'?ch+32:ch; 6、用switch语句实现多分支选择结构

switch(表达式)

{

case 常量1 : 语句1

case 常量2 : 语句2

4

case 常量n : 语句n

default : 语句n+1

}

(1) 括号内的“表达式”,其值的类型应为整数类型(包括字符型)。

(2) 花括号内是一个复合语句,内包含多个以关键字case开头的语句行和最多一个以default 开头的行。case后面跟一个常量(或常量表达式),它们和default都是起标号作用,用来标志一个位置。执行switch语句时,先计算switch后面的“表达式”的值,然后将它与各case标号比较,如果与某一个case标号中的常量相同,流程就转到此case标号后面的语句。如果没有与switch表达式相匹配的case常量,流程转去执行default标号后面的语句。

(3) 可以没有default标号,此时如果没有与switch表达式相匹配的case常量,则不执行任何语句。

(4) 各个case标号出现次序不影响执行结果。

(5) 每一个case常量必须互不相同;否则就会出现互相矛盾的现象。

(6) case标号只起标记的作用。在执行switch 语句时,根据switch表达式的值找到匹配的入口标号,在执行完一个case标号后面的语句后,就从此标号开始执行下去,不再进行判断。因此,一般情况下,在执行一个case子句后,应当用break 语句使流程跳出switch结构。最后一个case子句(今为default子句)中可不加break语句。

(7) 在case子句中虽然包含了一个以上执行语句,但可以不必用花括号括起来,会自动顺序执行本case标号后面所有的语句。当然加上花括号也可以。

(8) 多个case标号可以共用一组执行语句。

例1、要求按照考试成绩的等级输出百分制分数段,A等为85分以上,B等为70~84分,C等为60~69分,D等为 60分以下。成绩的等级由键盘输入。

#include

int main()

{

char grade;

scanf("%c",&grade);

printf("Your score:");

switch(grade)

{

case 'A': printf("85~100\n");break;

case 'B': printf("70~84\n");break;

case 'C': printf("60~69\n");break;

case 'D': printf("<60\n");break;

default: printf("enter data error!\n");

}

return 0;

}

说明

等级grade定义为字符变量,从键盘输入一个大写字母,赋给变量grade,switch得到grade的值并把它和各case中给定的值(′A′,′B′,′C′,′D′之一)相比较,如果和其中之一相同(称为匹配),则执行该case后面的语句(即printf语句)。

如果输入的字符与′A′,′B′,′C′,′D′都不相同,就执行default后面的语句,

注意在每个case后面后的语句中,最后都有一个break语句,它的作用是使流程转到switch语句的末尾(即右花括号处)。

例2、运输公司对用户计算运输费用。路程越远,运费越低。标准如下:

s<250没有折扣

250≤s< 500 2%折扣

500≤s< 1000 5%折扣

1000≤s< 2000 8%折扣

2000≤s< 3000 10%折扣

3000≤s 15%折扣

(提示:p:每吨每千米货物的基本运费

w:货物重量

s:运输距离

d:折扣

f:总运费f=p*w*s*(1-d) )

#include

int main()

{ int c,s;

float p,w,d,f;

//提示输入

printf("Enter price,weight,discount:");

scanf("%f,%f,%d",&p,&w,&s);//单价、重量、距离

if(s>=3000) c=12; //3000km上为同一折扣

else c=s/250;//3000km以下各段折扣不同,

switch(c)

{ case 0: d=0;break; //c=0,代表250km 以下,折扣d=0

case 1: d=2;break; //c=1,代表250~

5

500km以下,折扣d=2%

case 2:

case 3: d=5;break; //c=2和3,代表500~1000km,折扣d=5%

case 4:

case 5:

case 6:

case 7: d=8;break; //c=4~7,代表1000~2000km,折扣d=8%

case 8:

case 9:

case 10:

case 11: d=10;break; //c=8~11,代表2000~3000km,折扣d=10%

case 12: d=15;break; //c12,代表3000km 以上,折扣d=15%

}

f=p*w*s*(1-d/100); //计算总运费

printf("freight=%10.2f\n",f); //输出总运费,取两位小数

return 0;

}

例3、思考分段函数()

如何用

switch结构实现?

6

chap7习题答案

第七章习题答案 7.1 ARM处理器有几种运行模式,处理器如何区别各种不同的运行模式? ARM处理器有7中运行模式: ●用户模式(user):ARM处理器正常的程序执行状态 ●快速中断模式(fiq):处理高速中断,用于高速数据传输或通道处理 ●外部中断模式(irq):用于普通的中断处理 ●管理模式(supervisor):操作系统使用的保护模式,系统复位后的默认模式 ●中止模式(abort):数据或指令预取中止时进入该模式 ●未定义模式(undefined):处理未定义指令,用于支持硬件协处理器的软件仿真 ●系统模式(system):运行特权级的操作系统任务 处理器使用CPSR寄存器中的M4~M0位来指示不同的运行模式。 7.2 通用寄存器中PC、CPSR和SPSR的作用各是什么? PC:程序计数器,用于保存处理器要取的下一条指令的地址。 CPSR:当前程序状态寄存器,CPSR保存条件标志位、中断禁止位、当前处理器模式标志,以及其他一些相关的控制和状态位。 SPSR:备份程序状态寄存器,当异常发生时,SPSR用于保存CPSR的当前值,当从异常退出时,可用SPSR来恢复CPSR。 7.3 从编程的角度讲,ARM处理器的工作状态有哪两种?这两种状态之间如何转换? 从编程角度讲,ARM处理器的两种工作状态为: ●ARM状态(复位状态):处理器执行32位的字对齐的ARM指令

●Thumb状态:处理器执行16位的半字对齐的Thumb指令 ARM指令集和Thumb指令集均有切换处理器状态的指令,并可在两种工作状态之间切换: ●进入Thumb状态:当操作数寄存器的状态位(最低位)为1时,执行BX指令就 可以进入Thumb状态。如果处理器在Thumb状态时发生异常(异常处理要在ARM状态下执行),则当异常处理返回时自动切换到Thumb状态 ●进入ARM状态:当操作数寄存器的状态位(最低位)位0时,执行BX指令就可 以进入ARM状态。处理器进行异常处理时,把PC的值放入异常模式链接寄存器中,从异常向量地址开始执行程序,系统自动进入ARM状态 7.4 作业情况:同学们答的为:ARM支持Thumb和ARM双指令集,内核小,流水线结构;而RISC用寄存器窗口处理异常,延迟转移,单指令周期执行 7.5 哪些特征是ARM和其他RISC体系结构所共有的? ARM和其他RISC体系结构共有的三个相同特征: ●Load/Store体系结构:也称为寄存器/寄存器体系结构或RR系统结构。在这类机 器中,操作数和运算结果不能直接从主寄存器中存取,而是必须借用大量的标量或矢量寄存器来进行中转。采用这一结构的处理器必然要使用更多的通用寄存器存储操作数和运算结果,由于寄存器与运算器之间的数据传输速度远高于主存与运算器之间的数据传输速度,采用这一结构有助于提高计算机整体的运行速度 ●采用固定长度精简指令集:这样使得机器译码变得容易,可以通过硬件直接译码 的方式完成对指令的解析。虽然由于与复杂指令集相比,采用精简指令集需要更多指令来完成相同的任务,但采用硬件直接译码的速度却高于采用微码方式译码。通过采用高速缓存等提高寄存器存储速度的技术,采用固定长度精简指令集的机器可以获得更高性能 ●三地址指令格式:除了除法指令外,ARM的大部分数据处理指令采用三地址指 令。即在指令中包含了目的操作数、源操作数和第二源操作数

第三章。运算符和表达式2、分支结构

Top 1.运算符和表达式-2 2.分支结构 1. 运算符和表达式-2 1.1. 赋值运算 1.1.1. 使用“=”进行赋值运算 “=”称为赋值运算符,用于对变量赋值。关于赋值运算符,除了将右边的表达式计算出来赋给左边以外还具备如下特点:赋值表达式本身也有值,其本身之值即为所赋之值。示例代码如下所示: 1.int num =18, index; 2.System.out.println(index = num %5);// 结果为:3,赋值表达式本身也有值 3.System.out.println(index);// 结果为:3 4.int a, b, c; 5. a = b = c =100; 6.// c=100 整个表达式的值为100,将其赋值给b,同样b=(c=100)整个表达式 的值也为100,然后有将这个值赋给了a,所以a 的值也是100。 1.1. 2. 使用扩展赋值表达式 在赋值运算符”= ”前加上其它运算符,即为扩展赋值运算符,其效率高于赋值运算符,推荐使用,扩展赋值运算符如下图- 5所示:

图- 5 1.2. 字符连接运算 1.2.1. 使用“+”进行字符串连接 “+”除了可以进行算术运算以外,还可以实现字符串的连接,同时可以实现字符串与其他数据类型的“相连”。 当+ 号作用于两个数字类型变量时,是在进行算术运算。 当+ 号两边的变量有一个是字符串类型,即””括起来的时候,则其进行的是字符串的连接,连接后的结果为字符串类型。示例代码如下所示: 1.int a =100; 2.String msg ="a="+ a; 3.System.out.println(msg);//a=100,字符串拼接 4.msg =""+100+200; 5.System.out.println(msg);//结果为: 100200,””+100,为字符串100再拼 上200为100200 6.msg =100+200+""; 7.System.out.println(msg);//结果为:300,100+200为算术运算结果为300, 再加上””为300 1.3. 条件(三目)运算 1.3.1. 使用条件(三目)运算符

maple_chap3

60 复合数据类型 第 三 章 本章将介绍Maple 软件中常用的复合数据类型,这些复合数据类型是进一步学习和灵活掌握Maple 的基础,也是学习用Maple 进行程序设计的必要知识。 本章具体包括以下内容: Maple 中的序列 Maple 中的集合 Maple 中的有序表 Maple 中的数组 复合数据类型的定义和结构 复合数据类型的基本运算 复合数据类型的相互转换

。61. 通过前面几章的学习,读者朋友一定已经初步地掌握了在Maple 中对单个数据元素的运算;同时,您也一定早已发觉,要灵活的应用Maple 进行符号演算,光靠数据元素是不够的。在数学中,我们也有着各种各样的抽象复合数据类型,比如矩阵、集合等等。为了能更好地理解Maple 中的复合数据类型,我们在开始新的内容之前,有必要先花一点时间系统地介绍一下Maple 中常用的复合数据类型。 元素级的数据类型,我们已经接触过许多种,如多项式(polynom )、有理式(ratpoly )等;复合数据类型是若干个元素级数据类型按照一定规则的组合,例如序列(sequence )、集合(set )、有序表(list )、数组(array )等,它们的作用是把这些元素作为整体进行运算或者相关的操作。 3.1 序列 在前面,我们曾经不止一次地见到过表达式组成的序列。实际上,表达式序列(expseq )作为一种表观数据类型,就是我们所最常见的序列。例如,取元素函数op( )的结果就往往是一个序列——什么是序列,我们有了一个直观印象——一组用逗号相互隔开的对象。 我们还在什么地方看到过用逗号相互隔开的对象?对了,多参数的函数调用的括弧中,每个参数之间都用逗号隔开——是的, 函数的参数也构成了一个序列。序列这种数据形式在Maple 中是如此地常见。在下面的例子中,解方程函数solve( )的参数和结果都是序列。 需要注意的是,每一个序列本身都是一个完整的对象:它们在系统内部都是由一个数据 向量来表示的。 其中“↑表达式1”,“↑表达式2”,……,分别表示指向存储各个表达式的数据结构的指针。一个序列中的各个元素并不一定具有相同的数据类型,两个不同类型的序列完全可以合并成一个序列——只要你觉得有必要。连接两个序列的操作十分简单,只需要把两个序列

13.循环结构

循环结构 LabVIEW中的循环结构有for 循环和while 循环。其功能与文本语言的循环结构的功能类似类似,可以控制循环体内的代码执行多次。 一、for 循环 但是LabVIEW 中的for 循环的限制更多一些。 1.For 循环的迭代器只能从0 开始,并且每次只能增加1。 2.For 循环不能中途中断退出。C 语言里有break 语句,但在LabVIEW 中不要试图中间停止for 循环。 外部数据进入循环体是通过隧道进入的,有几种方式: 图1:For 循环结构上的隧道 图1 所示的For 循环结构演示了三种隧道结构,就是在For 循环结构左右边框上用于数据输入输出的节点。这三种隧道从上至下分别是:索引隧道、移位寄存器(shift register)、一般隧道。 一般隧道,就是把数据传入传出循环结构。数据的类型和值在传入传出循环结构前后不发生变化。 索引隧道是LabVIEW 的一种独特功能。一个循环外的数组通过索引隧道连接到循环结构上,隧道在循环内一侧会自动取出数组的元素,依顺序每次循环取出一个元素。用索引隧道传出数据,可以自动把循环内的数据组织成数组。 通过移位寄存器传入传出数据,也是数据的类型和值都不会发生变化。移位寄存器的特殊之处在于在循环结构两端的接线端是强制使用同一内存的。因此,上一次迭代执行产生的某一值,传给移位寄存器右侧的接线端,如果下一次迭代运行需要用到这个数据,从移位寄存器左侧的接线端引出就可以了。 C 语言程序员初学LabVIEW,在使用循环结构时,常常为创建一个中间变量烦恼。为循环中的变量创建一个Local Variable 不是好的方法。我们应当时刻记得LabVIEW 与一般文本语言不同,LabVIEW 的数据不是保存在显示的变量里,而是在连线上流动的。LabVIEW 是通过移位寄存器把数据从一次循环传递到下一次的。

C语言程序分支结构题目及答案

C语言程序分支结构题目 及答案 This model paper was revised by the Standardization Office on December 10, 2020

01. 从键盘输入一个字符,如果是大写字母,就转换成小写;如果是小写字母,就转换成大写,如果是其他字符原样保持并将结果输出。 #include <> void main() { char c; scanf("%c",&c); if(c>='A'&&c<='Z') c=c+32; else if(c>='a'&&c<='z') c=c-32; printf("%c",c); } 02. 从键盘输入一个数,判断其是否是5的倍数而不是7的倍数。如果是,输出Yes,否则输出No。 #include <> void main() { int a; scanf("%d",&a); if(a%5==0&&a%7!=0) printf("yes"); else printf("no"); } 03. 从键盘输入一个4位正整数,求其逆序数,并输出。例如:若输入1234,则输出应该是4321。

#include <> void main() { int n,g,s,b,q,m; scanf("%d",&n); q=n/1000; b=n/100%10; s=n/10%10; g=n%10; m=g*1000+s*100+b*10+q; printf("%d\n",m); } 01. 从键盘输入一个字符,如果是字母,就输出其对应的ASCII码;如果是数字字符,就转换成对应整数并输出。 #include <> void main() { char c; scanf("%c",&c); if(c>='a'&&c<='z'||c>='A'&&c<='Z') printf("ASCII:%d",c); else if(c>='0'&&c<='9') printf("数字:%d",c-'0'); } 02. 从键盘输入一个数,判断其是否能同时被3和5整除。如果是,输出Yes,否则输出No。 #include <>

C语言程序设计(第3版)何钦铭 颜 晖 第3章 分支结构

第3章分支结构 【练习 3-1】例 3-4 中使用 else-if 语句求解多分段函数,为了检查 else-if 语句的三个分支是否正确,已经设计了三组测试用例,请问还需要增加测试用例吗?为什么?如果要增加,请给出具体的测试用例并运行程序。 解答: 最好再增加两组测试用例,因为尚未对分段函数参数的边界值进行测试。可再给出 x=0和 x=15 时的两种情况。 【练习 3-2】计算符号函数的值:输入一个整数 x,计算并输出下列分段函数sign(x)的值。 -1 x<0 y=sign(x)= 0 x=0 1 x>0 解答: #include int main(void) { int x, y; printf("Enter x: " ); scanf("%d",&x); if(x>0) y=1; else if (x==0) y=0; else y=-1; printf("sign( %d ) = %d\n",x,y); return 0; } 【练习 3-3】统计学生平均成绩与及格人数:输入一个正整数 n,再输入 n 个学生的成绩,计算平均成绩,并统计所有及格学生的人数。试编写相应程序。解答: # include int main(void) { int count, i, n; double grade, total; printf("Enter n: "); scanf("%d", &n); total = 0; count = 0;

for(i = 1; i <= n; i++){ printf("Enter grade #%d: ", i); scanf ("%lf", &grade); total = total + grade; if(grade >= 60) count++; } printf("Grade average = %.2f\n", total / n); printf("Number of pass = %d\n", count); return 0; } 【练习 3-4】统计字符:输入 10 个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数。试编写相应程序。 解答: #include int main(void) { int i; int blank, digit, letter, other; char c; blank = digit = letter = other = 0; for(i=1;i<=15;i++){ c = getchar(); if(c>='a' && c <= 'z' || c>='A' && c <= 'Z') letter++; else if(c>='0' && c <= '9') digit++; else if(c==' '||c=='\n') blank++; else other++;} printf("letter=%d,blank=%d,digit=%d,other=%d\n", letter, blan k, digit, other); return 0; } 【练习3-5】输出闰年:输出21世纪中截至某个年份之前的所有闰年年份。判断闰年的条件是:能被4整除但不能被100整除,或者能被400整除。试编写相应程序。 解答: # include int main(void) {

第四课 简单的分支结构程序设计

第四课简单的分支结构程序设计 在现实生活中,我们每天都要进行根据实际情况进行选择。例如,原打算明天去公园,但如果明天天气不好,将留在家里看电视。所以人也会根据条件进行行为的选择。计算机也会根据不同情况作出各种逻辑判断,进行一定的选择。在这课与下一课中,我们将会发现,我们是通过选择结构语句来实现程序的逻辑判断功能。 一、PASCAL中的布尔(逻辑)类型 在前面,我们学习了整型(integer)与实型(real)。其中integer型数据取值范围为-32768到32767之间所有整数。而real型数据取值范围为其绝对值在10-38到1038之间的所有实数。它们都是数值型的(即值都为数)。布尔型(Boolean)是一种数据的类型,这种类型只有两种值,即"真"与"假"。 1、布尔常量 在Pascal语言中"真"用ture表示,"假"用False表示。所以布尔类型只有TRUE 与FALSE两个常量。 2、布尔变量(BOOLEAN) 如果我们将某些变量说明成布尔型,那么这些变量就是布尔变量,它们只能用于存放布尔值(ture或false)。 例如,VAR A,B:BOOLEAN; 3、布尔类型是顺序类型 由于这种类型只有两个常量,Pascal语言中规定ture的序号为1,false的序号为0。若某种类型的常量是有限的,那么这种类型的常量通常都有一个序号,我们称这种类型为顺序类型。如前面我们学过的整型(integer),以及后面要学到的字符型(char)都是顺序类型。 4、布尔类型的输入与输出 a)输出 VAR A,B:BOOLEAN; BEGIN A:=TRUE;B:=FALSE; WRITELN(A,B);

Chap03_图像分析的数据结构

第三章 图像分析的数据结构 王志明 wangzhiming@https://www.doczj.com/doc/8f9620865.html,

2010-9-16wangzhiming@https://www.doczj.com/doc/8f9620865.html, 2 本章内容 1.图像数据表示的层次 2.传统图像数据结构 3.分层数据结构

2010-9-16 wangzhiming@https://www.doczj.com/doc/8f9620865.html, 3§3.1 图像表示的层次感知图像内容经过多个层次,图像信息逐渐浓缩,语义知识越来越多。? 图标图像(Iconic Image):最底层,原始数据,图像亮度数据矩阵;? 分割图像(Segmented Image):图像被分割成可能属于同一物体的区域,领域知识很有帮助;? 几何表示(Geometric Representation):2D 或3D 的形状知识,形状的量化表示非常困难;?关系模型(Relational Model):更高层次抽象处理数据,需要领域先验知识、人工智能技术等。

2010-9-16 wangzhiming@https://www.doczj.com/doc/8f9620865.html, 4§3.2 传统图像数据结构§3.2.1 矩阵 图像数据的完整表示,与内容无关,隐含着图像组成部分之间的空间关系; 灰度图像(Gray Image):非负整数矩阵; 彩色图像(Color Image):3个矩阵分别表示RGB ; 二值图像(Binary Image):值为0或1的矩阵; 多光谱图像(Multispectral Image):多个矩阵对应于不同频带的图像; 分层图像数据结构(Hierarchical Image Data Structure):用不同矩阵表示不同分辨率的图像。

Chap1热力学基础1

Chap1:熱力學基礎 1 §1-1基本觀念與熱力性質 1.熱力名詞: 系統, 性質, 狀態, 過程, 循環, 熱力平衡 2.熱力系統(system ): 控制質量(control mass C.M ),或稱密閉系統(closed system):無質量 進出 控制容積(control volume C.V),或稱開放系統(open system):有質量進出 open system 可分為: (1)Steady state steady flow process 穩態過程(S.S.S.F ) 應用於:壓縮機、泵、渦輪機、熱交換器(冷凝器、蒸汽發生器)噴 嘴、節流閥等設備的分析 (2)Uniform steady Uniform flow process 暫態過程(U.S.U.F ) 應用於:氣瓶的充填的分析 S.S.S.F system ── C.V(系統)需滿足下列條件: (1)C.V 內之任一點性質不隨時間改變 (2)流進(出)C.S 之質量流率與性質不隨時間改變 (3)進入C.S 之質量流率=離開C.S 之質量流率 i e m m ?= (4)系統與外界之能量傳遞率維持恆定速率 U.S.U.F system------- C.V(系統)需滿足下列條件: ( 1 ) C.V 內之質量與性質隨時間改變,但在任何時間內C.V .之狀態為均勻 ( 2 ) 流經C.S.之質量流率隨時間改變,但性質不隨時間改變 3.物質之熱力性質 內涵性質:壓力(P )、溫度(T ) 外延性質:容積(V )、儲能(E )、內能(U )、焓(H )、熵(S ) 比性質= 系統質量 外延性質 以小寫字母表示 V v m =(比容) , E m =e =u +2 2V + gz(比儲能) U m = u(比內能),H m = h(比焓) , S m = s(比熵)

C语言实验报告(简单分支结构)

实验名称:C语言的三种程序结构-简单分支结构 【实验目的】 1.理解简单分支结构。 2.掌握简单的关系运算。 3.熟练使用if-else语句进行简单分支结构程序设计。 【实验环境】 1. Windows XP操作系统 2. Microsoft visual C++ 【实验内容】 1.输出两个整数,求出其中的较小值并输出。 2.输入x的值,计算分段函数y的值。 y=f(x)= x*x+2x x<2 =2x-1 x.>=2 3.输入两个整数并判断两数是否相等,输出相应结论。 4.输入一个证书,若为负数,求出它的平方;若为正数,求出它的立方,并输出结果。 5.输入三个数,用if-else结构求出其中的最大值。提示,首先求出两个数中较大值放在一个变量里,然后用这个变量和第三个数在进行一次比较。 【程序清单】 1.程序代码: #include<> void main() { int a,b,min; printf("Input a,b:"); scanf("%d %d",&a,&b); if (a int main(void) { double x,y; printf("input x:"); scanf("%lf",&x); if (x<2) y=x*x+2*x; else y=2*x-1; printf("y=f(%lf)=%f\n",x,y);

return 0; } int max(int x,int y) { int max; max=x>yx:y; return max; } 3.程序代码: #include<> void main() { int a,b; printf("Input a,b:"); scanf("%d %d",&a,&b); if(a==b) printf("a等于b\n"); else printf("a不等于b\n"); } 4.程序代码: #include<> void main() { int a,s; printf("Input a:"); scanf("%d",&a); if(a<=0) { if (a<0) { s=a*a; printf("a*a=%d\n",s); } } else { s=a*a*a; printf("a*a*a=%d\n",s); } } 5.程序代码: #include<> void main() { int a,b,c,max; printf("Input a,b,c:"); scanf("%d %d %d",&a,&b,&c); if(a>b) { if(a>=c) printf("max=%d\n",a);

分支结构的程序设计教学设计

分支结构的程序设计》教学设计 一、概述 分支结构的程序设计》是信息技术佛山版九年级第二单元第4 课的内容,它主要包括:程序的结构,IF 语句的基本格式(常用的一种)。 它的重点与难点:1、用户登录程序2 、IF 语句的格式3 、IF 语句的拓展形式。 二、教学目标分析 1)知识与技能 1.了解程序3 种基本的结构(顺利结构、分支结构和循环结构), 2.掌握IF 语句的基本格式: IF 条件THEN 语句组1 ELSE 语句组2 ENDIF 3.掌握用户登录程序的编写,能够应用IF 语句来设计及编写 书中的用户登录程序 2)过程与方法 通过任务驱动,屏幕演示、实例练习、小组、协作学习等方法, 使学生设计界面,编写代码,让学生在课堂中掌握用户登录程序的编写,使学生初步形成结合实际进行思考的方法。 3)情感态度与价值观 通过本课的学习,让学生建立一种团队精神。培养学生保护知识 产权,让学生懂得保护软件版权,引导学生践行社会主义价值观。 三、学习者特征分析

九年级学生,已了解VB的程序界面,能够用VB设计图2-15的界面,以及各控件的使用,同时,他们的思维也比以前有了进一步的提高,会析问题,询求解决问题的方法,但由于我校的学生生整体素质一般,所以一节课的内容不能太多。 四、教学策略选择 运用主导策略,在教师指导下,学生小组协作进行学习。 五、教学环境及资源 1 .多媒体网络教室 2 .教学资源:(1 、课件2 、学习资源)六、教学过程 1.导入:我们上QQ或上网购物时,要输入用户名和密码才能 进入,那么这个程序,我们也可以用VB设计一个类似的登录窗口。 设计意图:激发学生的学习兴趣。 教师:运行一个已经写好的用户登录程序。 设计意图:把神秘的编程化做我们平时的生活,使编程这个问题,简单化,同时告诉学生;谁学了VB语言,都可以编写的。 2.编登录程序之前,教师让学生说出程序的答案然后讲解、分析 程序的结构 1 )顺序结构:程序一般是从上到下一句一句地顺序执行,即 如: X=4

《明解C语言》第3章 分支结构程序练习题答案

【个人观点】 练习3-1 #include int main(void) { int vx,vy; printf("请输入两个数vx、vy:"); scanf("%d%d",&vx,&vy); if(vx % vy) puts("vy不是vx的约数\n"); else puts("vy是vx的约数\n"); return (0); } 练习3-2 #include int main(void) { int vx,vy; puts("请输入两个整数:"); printf("整数:");scanf("%d",&vx); printf("整数:");scanf("%d",&vy); if(vx == vy) printf("它们相等"); else printf("它们不相等"); printf("\n"); return (0); } #include

int main(void) { int vx,vy; puts("请输入两个整数:"); printf("整数:");scanf("%d",&vx); printf("整数:");scanf("%d",&vy); if(vx > vy) printf("前者大于后者"); else printf("前者不大于后者"); printf("\n"); return (0); } 练习3-3 #include #include int main(void) { int vx,vy; puts("请输入一个整数:\n"); printf("整数:");scanf("%d",&vx); vy = fabs(vx); printf("它的绝对值是%d",vy); printf("\n"); return (0); } 【注】:用数学函数时,加上头文件#include 练习3-4 #include #include int main(void) { int vx,vy;

计算机系统结构课后答案chap2-answer

第二章计算机指令集结构设计 2.1 名词解释 1.堆栈型机器——CPU中存储操作数的单元是堆栈的机器。 2.累加型机器——CPU中存储操作数的单元是累加器的机 器。 3.通用寄存器型机器——CPU中存储操作数的单元是通用 寄存器的机器。 4.CISC——复杂指令集计算机。 5.RISC——精简指令集计算机。 2.2堆栈型机器、累加器型机器和通用寄存器型机器各有什么 优缺点? 2.3常见的三种通用寄存器型机器的优缺点各有哪些?

2.4 指令集结构设计所涉及的内容有哪些? (1)指令集功能设计:主要有RISC和CISC两种技术发展 方向; (2)寻址方式的设计:设置寻址方式可以通过对基准程序 进行测试统计,察看各种寻址方式的使用频度,根据适用频度设置相应必要的寻址方式;

(3)操作数表示和操作数类型:主要的操作数类型和操作数 表示的选择有,浮点数据类型(可以采用IEEE 754标 准)、整型数据类型(8位、16位、32位的表示方法)、字符型(8位)、十进制数据类型(压缩十进制和非压缩 十进制数据表示)等等。 (4)寻址方式的表示:可以将寻址方式编码与操作码中,也 可将寻址方式作为一个单独的域来表示。 (5)指令集格式的设计:有固定长度编码方式、可变长编码 方式和混合编码方式三种选择。 2.5 简述CISC计算机结构指令集功能设计的主要目标。从当前的计算机技术观点来看,CISC 结构有什么缺点? CISC结构追求的目标是强化指令功能,减少程序的指令条数,以达到提高性能的目的。从目前的计算机技术观点来看,CISC结构存在以下几个缺点: (1)在CISC结构的指令系统中,各种指令的使用频率相 差悬殊。 (2)CISC结构的指令系统的复杂性带来了计算机体系结 构的复杂性,这不仅增加了研制时间和成本,而且还 容易造成设计错误。 (3)CISC结构的指令系统的复杂性给VLSI设计带来了 很大负担,不利于单片集成。 (4)CISC结构的指令系统中,许多复杂指令需要很复杂 的操作,因而运行速度慢。 (5)在结构的指令系统中,由于各条指令的功能不均衡

chap3分支结构

§3分支结构 一、引入: 1、输入两个时间,每个时间分别输入小时和分钟的值,然后输出两个时间之间的差,也用几小时几分表示。(提示:转化为分钟,做整数除法和取余运算) int hour1,minute1; int hour2,minute2; scanf(“%d%d”,&hour1,&minute1); scanf(“%d%d”,&hour2,&minute2); int t1=hour1*60+minute1; int t2=hour2*60+minute1; int t=t2-t1; printf(“时间差是%d小时%d分钟”,t/60,t%60);如果不转化为分钟,而用直接减的算法,出现借位怎么办?——条件判断 int hour1,minute1; int hour2,minute2; scanf(“%d%d”,&hour1,&minute1); scanf(“%d%d”,&hour2,&minute2); int ih=hour2-hour1; int im=minute2-minute1; if(im<0)//出现了借位的情况 { im=60+im; ih--; } printf(“时间差是%d小时%d分钟\n”,ih,im);(dev c++调试,if(im<0)设断点查看运行机制)2、输入两个实数,按由小到大的顺序输出这两个数。 #include int main() { float a,b,t; scanf("%f,%f",&a,&b); if(a>b) { //将a和b的值互换 t=a; a=b; b=t; } printf("%5.2f,%5.2f\n",a,b); return 0; } 二、判断的条件——关系运算,计算两个值之间 的关系 ?用关系运算符将两个数值或数值表达式连接起来的式子,称为关系表达式。 ?关系表达式的值是一个逻辑值,即“真”或“假”。 ?在C的逻辑运算中,以“1”代表“真”,以“0”代表“假”。 六种关系运算符: <(小于) <= (小于等于) > (大于) >= (大于等于) == (等于) != (不等于) ?前4种关系运算符的优先级别相同,判断是否相等的==和!=比其他的低! ?关系运算符的优先级低于算术运算符。 ?关系运算符的优先级高于赋值运算符。 ?连续的关系运算是从左到右进行的! 例:printf(“%d\n”,5==3); printf(“%d\n”,5>3); printf(“%d\n”,5<=3); printf(“%d\n”,7>=3+4); int r=a>0; 三、if语句的一般形式 if (表达式) 语句1 [ else 语句2 ] 说明:“表达式”可以是关系表达式、逻辑表达式,甚至是数值表达式;方括号内的部分(即else子句)为可选的,既可以有,也可以没有 语句1和语句2可以是一个简单的语句,也可以是一个复合语句,还可以是另一个if语句 1、形式1 没有else子句部分 if(表达式) 语句1; 例:完善第一章中的找零计算器,票面不够怎么办? 自行画出流程图。 int amout; int price=0,change; printf(“请输入商品金额(元):”);//输入提示 scanf(“%d“,&price); printf(“请输入收款票面(元):”);//输入提示 scanf(“%d“,&amount); if (amount >=price) { change=amount-price; 1

计算机系统结构教程答案chap1

第一章计算机体系结构的基本概念 1.1名词解释: 1.层次结构——计算机系统可以按语言的功能划分为多级层次结构,每一层以不同的语 2.翻译——(基于层次结构)先把N+1级程序全部变换成N级程序之后,再去执行N 级程序,在执行过程中,N+1级程序不再被访问。 3.解释——每当一条N+1级指令被译码后,就直接去执行一串等效的N级指令,然后 再去取下一条N+1级指令,依此重复执行。 4.体系结构——程序员所看到的计算机的属性,即概念性结构与功能特性。 5.透明性——在计算机技术中,对本来存在的事物或属性,从某一角度来看又好像不存 在的概念称为透明性。 6.系列机——在一个厂家生产的具有相同的体系结构,但具有不同的组成和实现的一系 列不同型号的机器。 7.软件兼容——同一个软件可以不加修改地运行于体系结构相同的各档机器上,而且它 们所获得的结果一样,差别只在于运行的时间不同。 8.兼容机——不同厂家生产的、具有相同体系结构的计算机。 9.计算机组成——计算机体系结构的逻辑实现。 10.计算机实现——计算机组成的物理实现。 11.存储程序计算机(冯·诺依曼结构)——采用存储程序原理,将程序和数据存放在同 一存储器中。指令在存储器中按其执行顺序存储,由指令计数器指明每条指令所在的单元地址。 12.并行性——在同一时刻或同一时间间隔内完成两种或两种以上性质相同或不同的工 作。 13.时间重叠——在并行性中引入时间因素,即多个处理过程在时间上相互错开,轮流重 叠地使用同一套硬件设备的各个部分,以加快硬件周转而赢得速度。 14.资源重复——在并行性中引入时间因素,是根据“以数量取胜”的原则,通过重复设

分支结构教学设计说明

学会分支,也学会选择 《分支结构》教学设计 一、教材容分析 1、本节的主要容及在本章中的地位 分支结构是程序设计结构中的一个重要模化。既是顺序结构的延续,又是程序编写的一个基础。对以后编程影响重大。通过本课的学习,可以促进学生对问题解决方法和思想的理解与掌握,从而提升学生的问题解决能力,让学生在按照一定的流程解决问题的过程中,去体会和理解程序设计的思想,而且也为高中时学习多分支选择结构打下基础。 2、课时安排:一课时 二、学习者分析 本节是在学习了程序的基本要素和顺序结构的基础上学习的,大部分学生对程序的编写和结构有了一种认识,所以在这个基础上学习,学生可以再上一个台阶。但仍有部分学生对程序的要素和顺序结构认识不够、掌握不好,不能顺利地编写好程序;这部分学生仍需老师的辅导、鼓励和同学的帮助。 三、教学目标 1.知识与技能 (1)了解分支程序的结构,流程以及作用。 (2)熟悉掌握分支语句的作用格式。 (3)掌握分支选择结构实现条件判断控制。 (4)能够运用分支选择结构设计编制程序解决问题。 情感目标: 1、在思维分析中,体验学习带来的自信与成功感,激发学生学习的兴趣。 2、通过趣味性的教学容,使同学们保持高涨的学习兴趣,在操作的同时获得成功的喜悦。 3、培养学生的逻辑思维能力,促进学生对问题解决方法的理解。 2.过程与方法 (1)通过简单游戏程序的运行和流程思考,培养学生的思考逻辑分析能力。(2)通过运行程序、分析程序、编写程序提高学生自主学习的能力。 (3)通过分层教学和辅导,学生能力得到提高。 (4)通过小组学习,提高学生的学习兴趣和团结合作精神。 3.情感态度价值观 通过体验程序,分析程序,修改程序和编写程序,提高学生学习兴趣,克服畏惧心理,培养学生的团结合作精神和拓展学生的能力,使每个学生的能力都有提高。 四、教学重点及难点 重点:分支语句的流程图,分支语句的实现过程以及分支语句的格式。 难点:分支语句的应用以及分支语句的格式,。 五、教学策略 本节是本章的一个重点、难点,故采用情景设置,游戏导入,讲练结合,任务驱动,分层辅导,分层练习,小组学习等多种立体方式呈现。以教师为主导,

电子科大-微机原理习题解答-chap3

“微处理器系统原理与嵌入式系统设计”第三章习题解答 3.1处理器有哪些功能?说明实现这些功能各需要哪些部件,并画出处理器的基本结构图。 处理器的基本功能包括数据的存储、数据的运算和控制等功能。其有5个主要功能:①指令控制②操作控制③时间控制④数据加工⑤中断处理。其中,数据加工由ALU、移位器和寄存器等数据通路部件完成,其他功能由控制器实现。处理器的基本结构图如下: 3.2处理器内部有哪些基本操作?这些基本操作各包含哪些微操作? 处理器内部的基本操作有:取指、间接、执行和中断。其中必须包含取指和执行。 取指包含微操作有:经过多路器把程序计数器的值选送到存储器,然后存储器回送所期望的指令并将其写入指令寄存器,与此同时程序计数器值加1,并将新值回写入程序计数器。 间接有4个CPU周期,包含微操作有:第1周期把指令寄存器中地址部分的形式地址转到地址寄存器中;第2周期完成从内存取出操作数地址,并放入地址寄存器;第3周期中累加器内容传送到缓冲寄存器,然后再存入所选定的存储单元。 执行包含微操作有:在寄存器中选定一个地址寄存器,并通过多路器将值送到存储器;来自于存储器的数据作为ALU的一个原操作数,另一个原操作数则来自于寄存器组中的数据寄存器,它们将一同被送往ALU的输入;ALU的结果被写入寄存器组。 中断包含微操作有:保护断点及现场,查找中断向量表以确定中断程序入口地址,修 改程序指针,执行完毕后恢复现场及断点。 3.3什么是冯·诺伊曼计算机结构的主要技术瓶颈?如何克服?

冯·诺伊曼计算机结构的主要技术瓶颈是数据传输和指令串行执行。可以通过以下方案克服:采用哈佛体系结构、存储器分层结构、高速缓存和虚拟存储器、指令流水线、超标量等方法。 3.5指令系统的设计会影响计算机系统的哪些性能? 指令系统是指一台计算机所能执行的全部指令的集合,其决定了一台计算机硬件主要性能和基本功能。指令系统一般都包括以下几大类指令。:1)数据传送类指令。(2)运算类指令 包括算术运算指令和逻辑运算指令。(3)程序控制类指令 主要用于控制程序的流向。 (4)输入/输出类指令 简称I/O 指令,这类指令用于主机与外设之间交换信息。 因而,其设计会影响到计算机系统如下性能: 数据传送、算术运算和逻辑运算、程序控制、输入/输出。另外,其还会影响到运算速度以及兼容等。 3.9某时钟速率为2.5GHz 的流水式处理器执行一个有150万条指令的程序。流水线有5段,并以每时钟周期1条的速率发射指令。不考虑分支指令和乱序执行带来的性能损失。 a)同样执行这个程序,该处理器比非流水式处理器可能加速多少? b)此流水式处理器是吞吐量是多少(以MIPS 为单位)? a.=51 p T nm S T m n 串流水=?+-速度几乎是非流水线结构的5倍。 b.2500MIPS p n T T 流水=? ,2.5G 个指令/秒 3.10一个时钟频率为2.5 GHz 的非流水式处理器,其平均CPI 是4。此处理器的升级版本引入了5级流水。然而,由于如锁存延迟这样的流水线内部延迟,使新版处理器的时钟频率必须降低到2 GHz 。 (1) 对一典型程序,新版所实现的加速比是多少? (2) 新、旧两版处理器的MIPS 各是多少? (1)对于一个有N 条指令的程序来说: 非流水式处理器的总执行时间s N N T 990106.1)105.2/()4( = = 5级流水处理器的总执行时间991(51)/(210) 0.5*(4)10T N N s -=+-?+? 加速比=01 3.24 T N T N n ,N 很大时加速比≈ 3.2

第3章分支结构程序设计

第三章习题 C) if(i void main() { int a; printf("输入一个正整数:\n"); scanf("%d",&a); if(a%3==0&&a%5==0) printf("yes\n"); else printf("no\n"); } 2. 编写程序,输入三角形的三条边长,求其面积。注意:三角形的任意两边之长必须大于第三条,对于不合理的边长输入,要求给出错误提示。 #include #include void main() { float a,b,c; double p,s; printf("请输入三角形的三条边长:\n"); scanf("%f%f%f",&a,&b,&c); if(a+b>c&&a+c>b&&b+c>a) { p=(1.0/2)*(a+b+c); s=sqrt(p*(p-a)*(p-b)*(p-c)); printf("这个三角形的面积是:%f\n",s); }

else printf("这三边不能构成三角形\n"); } 3. 根据以下分段函数编写程序,输入一个x 值,输出相应的y 值。 ???????<<+=<<--= )(10 )80(1 )0()05(1otherwise x x x x x x y #include void main() { float x; printf("请输入x=?:\n"); scanf("%f",&x); if(x==0) printf("y=%f\n",x); else { if(x>0) { if(x<8) printf("y=%f\n",x+1); else printf("y=10\n"); } else { if(x>-5) printf("y=%f\n",x-1); else printf("y=10\n"); } } }

相关主题
文本预览
相关文档 最新文档