大连理工程序设计 第二次上机作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1
题目描述:4个数排序
从键盘任意输入4个整数,将其按从小到大顺序排序后输出。
题目分析:定义a,b,c,d,t.为a,b,c,d赋上四个值。用if语句,借用t,将a,b,c,d通过多次调换数值使得a,b,c,d对应的数值大小依次减小。再倒序输出。
流程图:
程序代码:
#include
main()
{
int a,b,c,d,t;
printf("please enter four number");
scanf("%d%d%d%d",&a,&b,&c,&d);
if(b>a)
{t=a;a=b;b=t;}
if(c>a)
{t=a;a=c;c=t;}
if(d>a)
{t=a;a=d;d=t;}
if(c>b)
{t=b;b=c;c=t;}
if(d>b)
{t=b;b=d;d=t;}
if(d>c)
{t=c;c=d;d=t;}
printf("After ascending sorting:%d %d %d %d\n",d,c,b,a);
}
2.
题目描述:求1 + 1/2! +....+ 1/n!
题目分析:定义i,n,t,s。运用循环语句,让t的值为n!,同时s累计求和。因为最后要输出原式,所以要将公式的部分包含在循环语句中。
流程图:
#include
main()
{
int i,n;
float s,t;
i=1;
s=0;
t=1;
printf("please enter a number");
scanf("%d",&n);
printf("1");
while(i<=n)
{t=t*i;
s+=1/t;
if(i!=1)
printf("+1/%d!",i);
i++;}
printf("=%.4f\n",s);
}
程序截屏:
3.
题目描述:编程计算表达式:data1 op data2 的值。(op 为+ - * / %,data1,data2为整数)
题目分析:定义date1,date2,op。用switch语句,依据op的不同符号,分别列出不同表达式求解。
流程图:
程序代码:
#include
main()
{
int date1,date2;
char op;
scanf("%d%c%d",&date1,&op,&date2);
switch(op)
{
case'+':printf("%d%c%d=%d\n",date1,op,date2,date1+date2);
break;
case'-':printf("%d%c%d=%d\n",date1,op,date2,date1-date2);
break;
case'*':printf("%d%c%d=%d\n",date1,op,date2,date1*date2);
break;
case'/':printf("%d%c%d=%d\n",date1,op,date2,date1/date2);
break;
case'%':printf("%d%c%d=%d\n",date1,op,date2,date1%date2);
break;
default:printf("data error!\n");
break;
}
}
程序截屏:
4.
题目描述:用二分法求方程2x3-4x2+3x-6=0在(a,b)之间的根。
题目分析:确定区间(a, b),使得f(a)和f(b) 异号,则f(x)在[a, b]上至少有一个根
取x为a, b的中点,若f(a)和f(x)异号,则根在[a, x]中,去掉[x, b]。令b=x,得新的区间[a, b];若f(b)和f(x)异号,则根在(x, b)中,令a=x,得新的区间。反之,令b=x。
重复以上操作,直到f(x)<ε。这样得到的x即为方程的根
流程图:
程序代码:
#include
#include
void main()
{
float a,b,fx,x,fa,fb;
printf("Please input the lower and upper boundaries:");
scanf("%f%f",&a,&b);
fa=2*a*a*a-4*a*a+3*a-6;
fb=2*b*b*b-4*b*b+3*b-6;
if(fa*fb<0)
{
while(1)
{x=(a+b)/2;
fa=2*a*a*a-4*a*a+3*a-6;
fx=2*x*x*x-4*x*x+3*x-6;
if(fabs(fx)<=1e-5)
{
printf("The root is %.2f\n",x);
break;}
else
{
if (fa*fx<0)
b=x;
else a=x;
}
}
}
else
printf("No root in this boundary!\n");
}