实验四答案Word文件下载.docx
- 文档编号:21575095
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:19
- 大小:24.38KB
实验四答案Word文件下载.docx
《实验四答案Word文件下载.docx》由会员分享,可在线阅读,更多相关《实验四答案Word文件下载.docx(19页珍藏版)》请在冰豆网上搜索。
(以if_else.c文件名保存)
if((x>
=-29.5)&
(x<
=29.5))
else
x=%lf\n"
x);
编程练习3:
if-elseif语句的用法
编写一个能够进行加减法运算的程序,要求:
从键盘任意输入两个实数,然后输入一个运算符,当运算符为“+”时对两个数进行加法运算,为“-”时对两个数进行减法运算,其它符号时,只显示输入的符号不进行运算。
(以if_else_if.c文件名保存)
(方法1:
else子句中嵌套if-else结构)
voidmain()
{doublex,y;
charch;
请输入任意两个实数和一个数学运算符(如:
34.5+63.9)\n"
%lf%c%lf"
x,&
ch,&
y);
if(ch!
='
+'
ch!
-'
)
输入的运算符为%c号,不进行运算\n"
ch);
if(ch=='
输入的运算符为%c号,运算结果是:
%lf+%lf=%lf\n"
ch,x,y,x+y);
else
%lf-%lf=%lf\n"
ch,x,y,x-y);
(方法2:
if子句中嵌套if-else结构)
||ch=='
(方法3:
使用switch语句,虽不符合练习要求,但对于此问题的确是一种好方法!
switch(ch)
{
case'
:
break;
default:
}
编程练习4:
实验教材:
(P7-11:
实验3选择结构程序设计)
二、实验容
第10题
(1)有以下函数:
y=
编程求x=0.5、5、50时y的值。
{doublex,y;
请输入分段函数自变量x的值(任意实数)\n"
if(x<
1)
y=x;
if(x<
10)/*或写成if(x>
=1&
10),两个表达式等价*/
y=3-x/5;
y=3*x-11;
自变量x=%lf,函数y=%lf\n"
x,y);
10)
y=x;
y=3-x/5;
y=3*x-11;
使用多分支的if-elseif结构)
1)
elseif(x<
y=f(%lf)=%lf\n"
注意:
方法1与方法3无本质上的区别。
(2)输入3个实数,编写程序判断能否以它们为边长构成三角形。
若能,则计算机三角形的面积,否则输出提示信息。
{doublea,b,c,p;
请任意输入三个实数:
\n"
%lf%lf%lf"
a,&
b,&
c);
if((a+b>
c)&
(a+c>
b)&
(b+c>
a))
{
以这三个实数为边长能构成三角形,"
p=(a+b+c)/2;
其面积为%.2lf\n"
sqrt(p*(p-a)*(p-b)*(p-c)));
以这三个实数为边长不能构成三角形\n"
(3)输入年、月、日,计算出该日是该年的第几天
(方法1)
#include"
stdio.h"
main()
{inty,m,d,days;
Pleaseinputdate(yyyy-mm-dd):
a1:
%d-%d-%d"
&
y,&
m,&
d);
if(y<
=0||y>
10000||m<
=0||m>
12||d<
=0||d>
31)
{printf("
dataerror!
pleaseinputagain:
gotoa1;
if(y%4==0&
y%100!
=0||y%400==0)
{if(m==1)days=d;
if(m==2)days=31+d;
if(m==3)days=31+29+d;
if(m==4)days=31+29+31+d;
if(m==5)days=31+29+31+30+d;
if(m==6)days=31+29+31+30+31+d;
if(m==7)days=31+29+31+30+31+30+d;
if(m==8)days=31+29+31+30+31+30+31+d;
if(m==9)days=31+29+31+30+31+30+31+31+d;
if(m==10)days=31+29+31+30+31+30+31+31+30+d;
if(m==11)days=31+29+31+30+31+30+31+31+30+31+d;
if(m==12)days=31+29+31+30+31+30+31+31+30+31+30+d;
if(m==3)days=31+28+d;
if(m==4)days=31+28+31+d;
if(m==5)days=31+28+31+30+d;
if(m==6)days=31+28+31+30+31+d;
if(m==7)days=31+28+31+30+31+30+d;
if(m==8)days=31+28+31+30+31+30+31+d;
if(m==9)days=31+28+31+30+31+30+31+31+d;
if(m==10)days=31+28+31+30+31+30+31+31+30+d;
if(m==11)days=31+28+31+30+31+30+31+31+30+31+d;
if(m==12)days=31+28+31+30+31+30+31+31+30+31+30+d;
\n%d-%d-%disNo.%d.\n"
y,m,d,days);
(方法2)
{
intday,month,year,sum,leap;
year,&
month,&
day);
if(year<
=0||year>
10000||month<
=0||month>
12||day<
=0||day>
switch(month)/*先计算某月以前月份的总天数*/
case1:
sum=0;
case2:
sum=31;
case3:
sum=59;
case4:
sum=90;
case5:
sum=120;
case6:
sum=151;
case7:
sum=181;
case8:
sum=212;
case9:
sum=243;
case10:
sum=273;
case11:
sum=304;
case12:
sum=334;
default:
dataerror"
sum=sum+day;
/*再加上某天的天数*/
if(year%400==0||(year%4==0&
year%100!
=0))/*判断是不是闰年*/
leap=1;
else
leap=0;
if(leap==1&
month>
2)/*如果是闰年且月份大于2,总天数应该加一天*/
sum++;
Itisthe%dthday.\n"
sum);
需要用到循环语句)
{inti,y,m,d,days;
0||y>
0||m>
0||d>
days=d;
for(i=1;
i<
m;
i++)
if(i==4||i==6||i==9||i==11)days=days+30;
elseif(i==2)days=days+29;
elsedays=days+31;
elseif(i==2)days=days+28;
(4)求解任意的一元二次方程ax2+bx+c=0的根,a,b,c的值由键盘输入(考虑解的各种情况)。
floata,b,c,p,x1,x2;
请输入一元二次方程的三个系数a,b,c的值:
scanf("
%f%f%f"
a,&
b,&
p=b*b-4*a*c;
if(p<
0)
此方程没有实根!
elseif(p==0)
此方程有两个相等的实根:
%f和%f\n"
-b/(2*a),-b/(2*a));
此方程有两个不等的实根:
%f和%f!
(-b+sqrt(p))/(2*a),(-b-sqrt(p))/(2*a));
(5)一个3位数,如果它的各位数字之的立方和等于该数本身,则称其为水仙花数。
intnum,a,b,c;
printf(“请任意输入一个三位正整数\n”);
scanf(“%d”,&
num);
a=num/100;
b=num/10%10;
c=num%10;
if(num==pow(a,3)+pow(b,3)+pow(c,3))
%d是水仙花数。
num);
else
%d不是水仙花数。
(1)三位的水仙花数有153、370、371、407
(2)学了循环以后如何编程呢
附加编程题
(1)给出一个不多于3位的正整数,编写程序:
①求出它是几位数。
②分别打印出每一位数字。
③按反序打印出每位数字。
例如:
原数是123,应输出321。
使用三个并列的if结构)
{intn;
请输入一个不多三位的正整数\n"
label:
%d"
n);
if(n<
=0||n>
999)
{printf("
数据错误!
请重新输入:
"
gotolabel;
if(n>
n<
=9)
\n此数是一位数,"
个位数字是%d"
n);
\n反序数字为%d\n"
if(10<
=n&
=99)
\n此数是两位数,"
十位数字是%d,"
n/10);
个位数字是%d。
n%10);
\n反序数字为%d%d\n"
n%10,n/10);
if(100<
=999)
\n此数是三位数,"
百位数字是%d,"
n/100);
十位数字是%d,"
n/10%10);
\n反序数字为%d%d%d\n"
n%10,n/10%10,n/100);
使用if-elseif结构)
elseif(n<
(2)编程解决与日历有关的问题:
①输入年、月,求该月的天数。
②给出年、月、日,计算出该日是该年的第几天。
如输入2000,3,1,则输出61。
③1990年元旦是星期一,问1900年7月1日是星期几。
①源程序:
{inty,m,d;
Pleaseinputyear-month:
%d-%d"
m);
12)
if(m==2)
=0||y%400==0)d=29;
elsed=28;
elseif(m==4||m==6||m==9||m==11)d=30;
elsed=31;
%d-%dis%ddays.\n"
y,m,d);
②
ca
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 答案
![提示](https://static.bdocx.com/images/bang_tan.gif)