实验4-分支结构程序的设计说明

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.练习题一

编写程序,计算练习一分段函数的值。

(1)用scanf函数输入x的值。

(2)运行程序时,分别按x的值小于0、x的值在0-15之间、x的值大于15三种情况输入数据,检查输出的y值是否正确。

运行结果截图:

思考题及问题:

判断x的值在0-15之间可否使用表达式“0<=x<15”?为什么?正确的表示方法是什么?

答案:

不可。因为一个条件判断表达式中最多只能有一个运算符。正确的表示方法是x>=0&&x<15.

2.练习题二

输入3个数字,判断他们是否能构成三角形,如果不能,输出提示信息;否则判断它是直角、等边、等腰还是普通三角形。

# include

int k=1;void test();

void main()

{

void test()

{ char c;

printf("Test again?y/n:");

if ((c=getchar())=='n'||c=='N')//只有当输入N或n时才终止程序

k=0;

}

运行结果截图:

思考题及问题:

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

答案:

1.练习题三

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

采用switch语句实现。

case 12:days=31;break;

case 4:

case 6:

case 9:

case 11:days=30;break;

case 2: if (year%4==0&&year%100!=0||year%400==0)

leap =1;

else

leap=0;

if (leap)

days=29;

else

days=28;

}

printf("%d年%d月的天数为%d天\n",year,mon,days); }

运行结果截图:

思考题及问题:

①本程序所给代码中的switch语句没有default语句可以吗?default语句应该在switch

语句的什么位置?

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

1.自测练习一

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

假设int a=0,b=1,c=1,d=3;

(1)表达式a*b&&c-d、c-d&&a*b是多少?为什么?

程序代码:

printf("%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的值分别是多少?为什么?

程序代码:

# include

void main()

{

int a=0,b=1,c=1,d=3;

printf("%d\n",-a||++b&&--c);

printf("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,

程序代码:

# include

void main()

{

int a=0,b=1,c=1,d=3;

printf("++b&&--c||--a=%d\n",++b&&--c||--a);

printf("a=%d,b=%d,c=%d",a,b,c);

}

运行结果截图及原因:

++b即b的值为2,是真值1,--c值即c的值为0,假值0。--a即a的值为-1,真值1. 故结果为1&&0||1=1,

2.自测练习二

设整型变量a、b、c分别存放从键盘输入的3个整数。编写C程序,按从大到小排列这3个数,使a成为最大值,c成为最小值,并且按序输出这3个数。

源程序代码:

运行结果截图:

3.自测练习三

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

源程序代码:

# include

# include

void main()

{

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

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

scanf("%d",&a[5]);

while (a[5]<(int)pow(10,i))//判断输入数据的位数

i--;

k=i+1;

printf("它是%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;i<=k;i++)//倒序输出

printf("%d",a[i]);

printf("\n");

}

运行结果截图:

4.自测练习四

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

# include

void main()

{

相关文档
最新文档