C语言-第四章-控制结构作业解答(一)教学文案
- 格式:doc
- 大小:28.50 KB
- 文档页数:5
C语言程序设计第四版第四章答案谭浩强第四章什么是算术运算什么是关系运算什么是逻辑运算解:略。
C语言中如何表示“真”和“假”系统如何判断一个量的“真”和“假”解:设有一个逻辑表达式,若其结果为“真”,则以1表示;若其结果为“假”,则以0表示。
但是判断一个逻辑量的值时,以0代表“真”,以非0代表“假”。
例如3&&5的值为“真”,系统给出3&&5的值为1。
写出下面各逻辑表达式的值。
设a=3,b=4,c=5。
(1) a+b>c&&b==c(2) a||b+c&&b-c(3) !(a>b)&&!c||1(4) !(x=a)&&(y=b)&&0(5) !(a+b)+c-1&&b+c/2解:(1) 0(2) 1(3) 1(4) 0(5) 1有3个整数a、b、c,由键盘输入,输出其中最大的数。
解:方法一#include <>main(){ int a,b,c;printf("请输入3个整数:");scanf("%d,%d,%d",&a,&b,&c);if(a<b)< p="">if(b}有一函数:写一程序,输入x值,输出y值。
解:#include <>main(){int x,y;printf("输入x:");scanf("%d",&x);if(x<1) /* x<1 */{ y=x;printf("x=%3d, y=x=%d\n",x,y);}else if (x<10) /* 1≤x-10 */{ y=2*x-1;printf("x=%3d, y=2*x-1=%d\n",x,y);}else /* x≥10 */{ y=3*x-11;printf("x=%3d, y=3*x-11=%d\n",x,y);}}给一个百分制成绩,要求输出等级’A’、’B’、’C’、’D’、’E’。
第四章控制结构作业解答(一)
1、按“体指数”对肥胖程度进行划分:
体指数t = w / h2
(体重w单位为公斤,身高h单位为米)–当t < 18时,为低体重;
–当18 ≤ t < 25时,为正常体重;
–当25 < t < 27时,为超重体重;
–当t ≥ 27时,为肥胖。
编程从键盘输入你的身高h和体重w,根据给定公式计算体指数t,然后判断你的体重属于何种类型。
【程序】
#include <stdio.h>
V oid main()
{
float h, w, t;
printf("Please enter h,w:");
scanf("%f, %f", &h, &w);
t = w / (h * h);
if (t < 18)
{
printf("t=%f\tLower weight!\n", t);
}
if (t >= 18 && t < 25)
{
printf("t=%f\tStandard weight!\n", t);
}
if (t >= 25 && t < 27)
{
printf("t=%f\tHigher weight!\n", t);
}
if (t >= 27)
{
printf("t=%f\tToo fat!\n", t);
}
}//main
2、编程设计一个简单的计算器程序,要求根据用户从键盘输入如下形式的表达式:
操作数1 运算符op 操作数2
然后,计算并输出表达式的值
指定的运算符为
加(+)
减(-)
乘(*)
除(/)
【程序】
#include <stdio.h>
void main()
{
int data1, data2; /*定义两个操作符*/
char op; /*定义运算符*/
printf("Please enter the expression:");
scanf("%d%c%d", &data1, &op, &data2); /*输入运算表达式*/
switch (op)
{
case '+': /*处理加法*/
printf("%d + %d = %d\n", data1, data2, data1 + data2);
break;
case '-': /*处理减法*/
printf("%d - %d = %d\n", data1, data2, data1 - data2);
break;
case '*': /*处理乘法*/
printf("%d * %d = %d\n", data1, data2, data1 * data2);
break;
case '/': /*处理除法*/
if (0 == data2)
printf("Division by zero!\n");
else
printf("%d/%d = %d\n", data1, data2, data1/data2);
break;
default:
printf("Unknown operator! \n");
}
}
3、键盘输入任一年的公元年号year,编程判断该年是否是闰年。
判断某一年year是否闰年;闰年的条件符合下列二者之一
①能被4整除,但不能被100整除;
②能被100整除。
【程序】
# include <stdio.h>
void main()
{
int year,leap; //leap是1时,表示闰年;是0时,不是闰年
scanf(“%d”,&year);
if(year%4==0)
{
if(year%100==0)
{
if(year%400==0) leap=1;
else leap=0;
}
else leap=0;
}
else leap=0;
if (leap==1) printf(“%d is a leap year\n”,year); //是闰年
else printf(“%d is not a leap year\n”,year); //不是闰年
}//main
4、运输公司对用户计算运费。
距离(s)越远,每公理运费越低。
标准如下:
s<250km 没有折扣
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)
要求程序中输入p、w、s, 用switch语句完成该题。
【程序】
# include <stdio.h>
void main()
{
int c,s;
float p,w,d,f;
scanf(%f,%f,%d”,&p,&w,&s);
if(s>=3000)
c=12;
else c=int(s/250);
switch(c)
{
case 0:d=0;break;
case 1:d=2;break;
case 2:
case 3:d=5;break;
case 4:
case 5:
case 6:
case 7: d=8;break;
case 8:
case 9:
case 10:
case 11: d=10;break;
case 12: d=15;break;
}
f=p*w*s*(1-d/100.0);
printf(“总运费=%15.4f\n”,f);
}//main
5、教材3.1输入一串字符(按ENTER键结束),将字母转换成大写字母输出。
【程序】
/*************************************************
一个一个得到字符逐个处理,用函数getchar或getch
getchar()在stdio.h中预处理
getch()在conio.h中预处理
由习题2.6知道,函数getchar()得到回车键值为'\n'
**************************************************/
#include <stdio.h>
void main( )
{
char c;
while( (c=getchar()) != '\n' )
{
if( c>='a' && c<='z' ) c-=32;
putchar(c);
}
}
6、教材3.4计算阶乘15!。
【程序】
/* 用int类型和double类型分别求出两个结果
因为15!中有2和5的因子, 所以个位数肯定为0,
本题目主要理解数据类型的取值范围. */
#include <stdio.h>
#define N 15
void main( )
{
int i, s=1;
double S=1;
for(i=2; i<=N; i++)
{
s *= i;
S *= i;
}
printf("%d!=%d\n", N,s);
printf("%d!=%.0lf\n",N,S);
}
7、教材3.5求水仙花数。
【程序】
/* 函数IsNarcissus(int x)返回真(1)或者假(0): 判断整数x是否为水仙花数*/
#include <stdio.h>
int IsNarcissus(int x)
{
int a,b,c;
a = x%10; //取x的个位
b = x/10%10; //十位
c = x/100; //百位
if( a*a*a + b*b*b +c*c*c == x )
return 1;
return 0;
}
void main( )
{
int i;
puts("所有水仙花数:");
for(i=100; i<=999; i++)
if( IsNarcissus(i) )
printf("%5d\n",i);
}。