实验3选择结构参考答案

实验三 选择结构程序设计
二、程序调试方法实验
上机题目:编程实现求分段函数的值。

找出并改正以下源程序中错误,得出正确的运行结果。
#include
void main()
{ float x,y;
printf("请输入x:");
scanf("%f",&x);
 if(1<=x<10)
 {
y=x*x-2*x+1;
printf("y=%f\nx=%f,1<=x<10\n",y,x);
}
else
{
y=0;
if(x<1);
printf("y=%f\nx=%f,x<1\n",y,x);
else
printf("y=%f\nx=%f,x>=10\n",y,x);
}
}
三、编写程序
1、编写程序。从键盘输入一个整数x,如果x是偶数,输出“x是个偶数”的提示;否则,输出“x是个奇数”的提示信息。
提示:偶数的判断方法x%2 == 0

#include
void main()
{
int x;

printf("请输入一个整数:");
scanf("%d",&x);
if (x%2 == 0)
printf("%d是一个偶数\n",x);
else
printf("%d是一个奇数\n",x);
}
2、为鼓励居民节约用水,自来水公司采用按月用水量分段计费的办法,居民应交水费y元与月用水量x吨的函数关系式如下(设x?0)。

编写程序,输入用户的月用水量x吨,计算并输出该用户应支付的水费y元(保留两位小数)。
#include
void main()
{
float x,y;

printf("请输入用户的月用水量(吨):");
scanf("%f",&x);
if (x < 0)
printf("输入数据非法\n");
else
{
if (x > 15)
y= 2.5*x-10.5;
else
y=4*x/3;
printf("该用户应支付的水费为%.2f元\n",y);
}
}

3、编写程序。从键盘输入字符ch,判断它是哪一类字符(英文字母、数字、其他字符)。
【例3-8】
#include "stdio.h"
void main(void)
{
char ch;
printf("请输入一个字符:");
ch=getchar();
if(ch>='0'&&ch<='9')
printf("%c是数字\n",ch);
else if(ch>='A'&&ch<='Z' || ch>='a'&&ch<='z')
printf("%c是字母\n",ch);
else
printf("%c是其他字符\n",ch);
}





4、从键盘随机输入三个英文字母,要求从小到大的顺序输出这3个字母。【例3-7】
#include
void main(void)
{
char a, b, c, t;
printf("输入三个英文字符: ");
scanf("%c%c%c", &a, &b, &c);
if(b{ t=a; a=b; b=t; }
if(c{ t=a; a=c; c=t; }
if(c{ t=b; b=c; c=t; }
printf("%c,%c,%c\n", a, b, c);
}

5、判断输入的3个数是否能构成三角形,如果能构成三角形,则判断其是哪一种三角形(等边、等腰、直角或者一般)
#include
#include
main( )
{
float a,b,c;
int flag=0;

printf("输入三角形的三条边: ");
scanf("%f%f%f",&a,&b,&c);
i

f(a+b>c&&abs(a-b) {
if(fabs(a-b)<=1e-6 && fabs(b-c)<=1e-6)
{
printf("等边三角形\n");
flag=1;
}
if(fabs(a-b)<=1e-6 || fabs(b-c)<=1e-6 || fabs(a-c)<=1e-6)
{
printf("等腰三角形\n ");
flag=1;
}
if(fabs(a*a+b*b-c*c)<=1e-6 || fabs(a*a+c*c-b*b) <=1e-6 ||
fabs(c*c+b*b-a*a) <=1e-6 )
{
printf("直角三角形\n");
flag=1;
}
if(!flag)
printf("普通三角形\n ");
}
else
printf("不能构成三角形");
}


6、从键盘上输入直角坐标系上一个点的坐标(x,y),编程实现判断该点属于第几象限。

#include "stdio.h"
#include "math.h"
void main()
{
float x,y;

printf("请输入坐标x,y\n");
scanf("%f,%f",&x,&y);

if(fabs(x)<1e-6 || fabs(y)<1e-6)
printf("坐标轴\n");
else if(x > 0 && y > 0)
printf("第一象限\n");
else if(x < 0 && y > 0)
printf("第二象限\n");
else if(x < 0 && y < 0)
printf("第三象限\n");
else if(x > 0 && y < 0)
printf("第四象限\n");
}

7、输入年、月,根据输入的年月,判断该月有多少天。
1,3,5,7,8,10,12月:31天
4,6,9,11月 :30天
2月:28/29天
提示:判断闰年的条件,年份能被4整除但不能被100整除,或者能被400整除。

#include "stdio.h"
void main()
{
int year, month;

printf("请输入年月(yyyydd)");
scanf("%4d%2d", &year, &month);

switch(month)
{
case 2:
if (year%4==0 && year%100 !=0 || year%400==0)
printf("%d年%d月有29天\n", year, month);
else
printf("%d年%d月有28天\n", year, month);
break ;
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
printf("%d年%d月有31天\n", year, month);
break;
case 4:
case 6:
case 9:
case 11:
printf("%d年%d月有30天\n", year, month);
break ;
default:
printf("输入的月份%d有误\n", month);
break;
}
}


8、编程实现:输入一个不多于5位的正整数,要求:(1)输出它是几位数,(2)按逆序输出各位数字,如原数为321,则应输出123。
#include "stdio.h"
void main()
{
int number;
int bits = 0;
int bit;

printf("请输入一个不超过5位的正整数:");
scanf("%d",&number);

if(number>=100000 || number < 0)
printf("输入的数字非法\n");
else
{
if(number >= 10000)
bits = 5;
else if(number >= 1000)
bits = 4;
else if(number >= 100)
bits = 3;
else if(number >= 10)
bits = 2;
else
bits = 1;

printf(

"%d位数\n",bits);

switch(bits)
{
case 5:
bit = number % 10;
number = number/10;
printf("%d",bit);
case 4:
bit = number %10;
number = number/10;
printf("%d",bit);
case 3:
bit = number %10;
number = number/10;
printf("%d",bit);
case 2:
bit = number %10;
number = number/10;
printf("%d",bit);
case 1:
bit = number;
printf("%d\n",bit);
}
}
}


相关文档
最新文档