大连理工程序设计 第二次上机作业

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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");

}

相关文档
最新文档