《C语言程序设计》(江宝钏著)实验三答案

更新时间:2023-03-08 18:01:22 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

3.5 实验三 选择结构程序设计

一、实验目的与要求

1. 理解C语言表示逻辑量的方法,学会正确使用逻辑运算符和逻辑表达式。 2. 掌握利用if结构实现选择结构的方法。 3. 掌握利用switch结构实现多分支选择结构。 4. 结合程序掌握一些简单的算法,学习调试程序 5. 实验4学时

二、实验内容

1.程序改错题

改正下面程序中的错误。输入实数x,计算并输出下列分段函数f(x)的值(保留1位小数)。

1x(x?100)

y?f(x)? x(x?100)

输入输出示例1(改正后程序的运行结果)

Enter x:100 f(100.00)= 0.1

输入输出示例2(改正后程序的运行结果)

Enter x:23 f(23.00)= 23.0

源程序(有错误的程序)

#include #include void main(void) {

double x;

printf(\ x: \\n\ scanf(\ if (x = 100) { y = 1/sqrt(x) }

else (x != 100) { y = x; }

printf(\}

答:

#include #include void main(void) {

double x,y;

printf(\ x:\\n\ scanf(\ if (x=100) y = 1/sqrt(x); else y= x;

printf(\ }

2.一般编程题

编程题1

输入任意三个整数a,b,c,求3个数中的最大值和最小值。

答:

#include void main() {

int a,b,c;

printf(\请输入三个整数:\ scanf(\ if (a>=b) t=a,a=b,b=t; if (a>=c) t=a,a=c,c=t; if (b>=c) t=b,b=c,c=t;

printf(\最小值为:%d\\n\ printf(\最大值为:%d\\n\}

编程题2

输入x,计算并输出下面分段函数f(x)的值(保留2位小数)。请调用sqrt函数求平方根,调用pow函数求幂。

2 (x?1)?2x?1x(x?0)

f(x)?

x(x?0)

输入输出示例(共运行3次)

Enter x:10 f(10.00) = 3.16 Enter x:-0.5 f(-0.50) = -2.75 Enter x:0 f(0.00) = 0.00 成本 答:

#include #include void main() { 编程题3

double x,y;

printf(\ x:\\n\scanf(\if (x<0)

y=pow(1+x,2)+2*x+1/x; else y=sqrt(x);

printf(\

}

有一函数:

x (-5

y= x-1 (x=0) x+1 (0

编写程序,要求用scanf函数输入x的值,输出y的值。 具体要求如下:

(1)用if语句实现分支,自变量和函数值均用实数类型。 (2)自变量用scanf函数输入,给一些输入提示。

(3)运行程序,输入x的值(分别为-5

#include #include void main() { double x,y; printf(\ x:\\n\

scanf(\ if (x>0&&x<10) y=x+1; else if (x==0) y=x-1;

else if (x>-5&&x<0) y=x;

printf(\}

编程题4

某服装店经营成套服装的买卖,同时也允许单件销售。若一次购买不少于70套,则每套90元;若不足70套,则每套110元;只买上衣每件70元;只买裤子每条60元。请编写程序假设用户买入x件上衣和y条裤子,请编写程序计算相应的应付款是多少?

答:

#include #include void main() { double x,y,z; printf(\输入上衣x件,裤子y件:\\n\ scanf(\ if (x>=y&&y>=70) z=90*y+70*(x-y); else if (y>=x&&x>=70) z=90*x+60*(y-x); else if (x>y&&y<70) z=110*y+70*(x-y); else if (y>x&&x<70) z=110*x+60*y-x; printf(\应付:%.3f(元)\\n\ }

编程题5

编写程序实现:输入一个整数,判断它能否被3 、5 、7整除,同时输出如下信息。 (1) 能同时被3 、5 、7整除; (2) 能同时被其中的哪二个数整除; (3) 能被其中的哪一个数整除;

(4) 不能被3 、5 、7任一个数整除。 答:

#include void main() { int x,a,b,c,d; scanf(\ a=x%3;

}

a=a/a*100; b=x%5; b=b/b*10; c=x%7; d=a+b+c; switch(d) {

case 100:printf(\能被5,7整除\\n\case 10 :printf(\能被3,7整除\\n\case 1 :printf(\能被3,5整除\\n\case 110:printf(\能被7整除\\n\case 101:printf(\能被5整除\\n\case 11 :printf(\能被3整除\\n\

case 111:printf(\不能被3,5,7整除\\n\case 0 :printf(\能被3,5,7整除\\n\}

3.较难编程题

编程题1

请用switch语句编程计算员工每月的薪水。(exph3_1.cpp)

已知某公司员工的保底薪水为500,某月所接工程的利润profit(整数)与提成的关系如下(计量单位:元): profit≤1000 没有提成; 1000<profit≤2000 提成10%; 2000<profit≤5000 提成15%; 5000<profit≤10000 提成20%; 10000<profit 提成25%。 分析:为使用switch语句,必须将利润profit与提成的关系,转换成某些整数与提成的关系。分析本题可知,提成的变化点都是1000的整数倍(1000、2000、5000、……),如果将利润profit整除1000,则相邻两个区间的重叠。为解决相邻两个区间的重叠问题,最简单的方法就是:利润profit先减1(最小增量),然后再整除1000即可: profit≤1000 对应0 1000<profit≤2000 对应1 2000<profit≤5000 对应2、3、4 5000<profit≤10000 对应5、6、7、8、9 10000<profit 对应10、11、12、…… 答:

#include void main() {

double p,m,t,q;

int n;

printf(\某月所接工程利润为:\printf(\scanf(\m=p-1;

n=(int)m/1000; switch (n) {

case 0 : printf(\薪水为:500\\n\

case 1 :q=500+p*0.1 ;printf(\薪水为:%.2lf\\n\case 2 : case 3 :

case 4 :q=500+p*0.15;printf(\薪水为:%.2lf\\n\case 5 : case 6 : case 7 : case 8 :

case 9 :q=500+p*0.2 ;printf(\薪水为:%.2lf\\n\ default:q=500+p*0.25;printf(\薪水为:%.2lf\\n\ } }

编程题2

编写程序实现如下功能:输入二个运算数(exp1,exp2)和一个运算符(op),计算表达式exp1 op exp2的值,其中OP可以为+、-、*、/、%五个符号中的任一种(提示:用switch语句实现)。

答:

#include void main() {

float exp1,exp2,x; char op;

printf(\输入:\

scanf(\switch (op) {

case '+':x=exp1+exp2;break; case '-':x=exp1-exp2;break; case '*':x=exp1*exp2;break; case '/':x=exp1/exp2;break; }

printf(\ }

+

本文来源:https://www.bwwdw.com/article/xij6.html

Top