实验4分支结构程序设计Word格式.docx

上传人:b****6 文档编号:18111344 上传时间:2022-12-13 格式:DOCX 页数:14 大小:84.64KB
下载 相关 举报
实验4分支结构程序设计Word格式.docx_第1页
第1页 / 共14页
实验4分支结构程序设计Word格式.docx_第2页
第2页 / 共14页
实验4分支结构程序设计Word格式.docx_第3页
第3页 / 共14页
实验4分支结构程序设计Word格式.docx_第4页
第4页 / 共14页
实验4分支结构程序设计Word格式.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

实验4分支结构程序设计Word格式.docx

《实验4分支结构程序设计Word格式.docx》由会员分享,可在线阅读,更多相关《实验4分支结构程序设计Word格式.docx(14页珍藏版)》请在冰豆网上搜索。

实验4分支结构程序设计Word格式.docx

&

c!

=EOF);

if(x<

0)

{

y=x+10;

printf("

x=%d,y=x+10=%d\n"

x,y);

}

elseif(x<

15)

y=3*x+5;

x=%d,y=3*x+5=%d\n"

else

y=2*x-10;

x=%d,y=2*x-10=%d\n"

}test();

}

voidtest()

{charc;

Testagain?

y/n\n"

if((c=getchar())=='

n'

||c=='

N'

)//只有当输入N或n时才终止程序

k=0;

运行结果截图:

思考题及问题:

判断x的值在0-15之间可否使用表达式“0<

=x<

15”?

为什么?

正确的表示方法是什么?

答案:

不可。

因为一个条件判断表达式中最多只能有一个运算符。

正确的表示方法是x>

=0&

x<

15.

2.练习题二

输入3个数字,判断他们是否能构成三角形,如果不能,输出提示信息;

否则判断它是直角、等边、等腰还是普通三角形。

voidmain()

{

while(k==1)

inta,b,c,d;

Inputa,b,c:

%d,%d,%d"

a,&

b,&

c);

while((d=getchar())!

//清空输入缓存区

if(!

(a>

0&

b>

c>

a+b>

c&

a+c>

b&

b+c>

a))

三条边无法构成三角形。

\n"

else

if(a*a+b*b==c*c||a*a==b*b+c*c||b*b==a*a+c*c)

这是一个直角三角形\n"

elseif(a==b&

b==c)

这是一个等边三角形\n"

elseif(a==b||b==c||a==c)

这是一个等腰三角形\n"

else

printf("

这是一个普通三角形\n"

test();

y/n:

判断三角形的类型时需要用到各种判断条件,入等边三角形的判断条件是3条边相等,该判断条件可否描述为“a=b=c”?

不能,“=”在C语言中是赋值符号,在条件判断式中是一个永真式,会引起语义错误。

1.练习题三

编写一个程序,输出给定的某年某月的天数。

要求:

采用switch语句实现。

程序代码:

intyear,mon,days,leap;

年.月:

%4d.%2d"

year,&

mon);

switch(mon)

case1:

case3:

case5:

case7:

case8:

case10:

case12:

days=31;

break;

case4:

case6:

case9:

case11:

days=30;

case2:

if(year%4==0&

year%100!

=0||year%400==0)

leap=1;

leap=0;

if(leap)

days=29;

days=28;

%d年%d月的天数为%d天\n"

year,mon,days);

1本程序所给代码中的switch语句没有default语句可以吗?

default语句应该在switch语句的什么位置?

可以。

Default语句可以在{}之间的任意位置。

2本程序所给代码中的最后一个case语句中,没有break正确吗?

请解释。

正确。

在switch语句中,当找到符合条件的case时,执行该case语句及之后的其他情况的语句,故C语言会在case语句和default语句后加break;

防止执行下面的语句。

而最后一个case语句后无其他语句,故没有break语句也正确。

1.自测练习一

编写程序,计算逻辑表达式的值。

假设inta=0,b=1,c=1,d=3;

(1)表达式a*b&

c-d、c-d&

a*b是多少?

inta=0,b=1,c=1,d=3;

%d,%d"

a*b&

c-d,c-d&

a*b);

运行结果截图及原因:

a*b=0,逻辑假,由于与运算的短路性,&

右边的表达式不进行,直接为0;

c-d=-2,逻辑真,为1,故第二个运算式为1&

0=0.

(2)表达式—a||++b&

--c的值是多少?

变量a、b、c的值分别是多少?

%d\n"

-a||++b&

--c);

a=%d,b=%d,c=%d"

a,b,c);

++b即b的值为2,是真值1,--c值即c的值为0,假值0。

-a即a的值为0,假值0.

故结果为0||1&

0=1&

0=0,

(3)表达式++b&

--c||--a的值是多少?

++b&

--c||--a=%d\n"

++b&

--c||--a);

--a即a的值为-1,真值1.

故结果为1&

0||1=1,

2.自测练习二

设整型变量a、b、c分别存放从键盘输入的3个整数。

编写C程序,按从大到小排列这3个数,使a成为最大值,c成为最小值,并且按序输出这3个数。

源程序代码:

inta[3]={0},t,j,i,k;

for(i=0;

i<

=2;

i++)

Input%c:

i+97);

scanf("

a[i]);

for(j=0;

j<

j++)//冒泡法

for(i=0;

=2-j;

if(a[i]<

a[i+1])

t=a[i],a[i]=a[i+1],a[i+1]=t;

a=%d,b=%d,c=%d\n"

a[0],a[1],a[2]);

3.自测练习三

从键盘输入一个小于六位的正整数,判断它是几位数,并按照相反的顺序输出各位上的数字,例如输入1234,输出为4321。

math.h>

inti=4,a[6]={0},k=0;

printf(“请输入一个小于六位的正整数:

a[5]);

while(a[5]<

(int)pow(10,i))//判断输入数据的位数

i--;

k=i+1;

它是%d位数"

k);

a[i+1]=a[5];

for(;

i>

=1;

i--)

a[i]=a[i+1]%(int)pow(10,i);

a[i+1]=a[i+1]/(int)pow(10,i);

for(i=1;

=k;

i++)//倒序输出

a[i]);

4.自测练习四

假设今天是星期日,编写一个程序,求n(n由键盘输入)天后是星期几。

intn,t;

假设今天是星期日,求n天后是星期几\n输入n="

n);

t=n%7;

switch(t)

case0:

printf("

n天后还是星期日\n"

n天后是星期一\n"

n天后是星期二\n"

n天后是星期三\n"

n天后是星期四\n"

n天后是星期五\n"

n天后是星期六\n"

5.自测练习五

假定向香港邮寄包裹的收费规则如下:

首先,包裹重量向上取整到最近的15g的倍数,然后按书上表格收费,编写一个程序根据用户输入的包裹的重量和里程计算邮费。

包裹邮费计算表

重量(g)

收费(元)

15

5

30

9

45

12

60

14(每足1000km加1元)

75及以上

15(每足1000km加2元)

intk=1,c=0;

//全局变量

intm,s;

请输入包裹重量(g)"

m);

请输入里程数(km)"

s);

while((c=getchar())!

if(m%15!

=0)m=(m/15+1)*15;

//取m为15的倍数

s/=1000;

收费:

if(m<

=15)printf("

5元"

elseif(m<

=30)printf("

9元"

elseif(m<

=45)printf("

12元"

elseif(m<

=60)printf("

%d元"

14+s);

elseprintf("

15+2*s);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 党团建设

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1