级电信C语言期末考前例题.docx

上传人:b****3 文档编号:5432418 上传时间:2022-12-16 格式:DOCX 页数:20 大小:28.35KB
下载 相关 举报
级电信C语言期末考前例题.docx_第1页
第1页 / 共20页
级电信C语言期末考前例题.docx_第2页
第2页 / 共20页
级电信C语言期末考前例题.docx_第3页
第3页 / 共20页
级电信C语言期末考前例题.docx_第4页
第4页 / 共20页
级电信C语言期末考前例题.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

级电信C语言期末考前例题.docx

《级电信C语言期末考前例题.docx》由会员分享,可在线阅读,更多相关《级电信C语言期末考前例题.docx(20页珍藏版)》请在冰豆网上搜索。

级电信C语言期末考前例题.docx

级电信C语言期末考前例题

***********************************************

P1124.6

***********************************************

根据函数写一程序,输入x值,输出y值。

解:

#include

main()

{

intx,y;

printf("输入x:

");

scanf("%d",&x);

if(x<1)

{

y=x;

printf("x=%3d,y=x=%d\n",x,y);

}

elseif(x<10)

{

y=2*x-1;

printf("x=%3d,y=2*x-1=%d\n",x,y);

}

else

{

y=3*x-11;

printf("x=%3d,y=3*x-11=%d\n",x,y);

}

}

***********************************************

P1134.8

***********************************************

给一个百分制成绩,要求输出等级’A’、’B’、’C’、’D’、’E’。

90分以上为’A’,80~90分为’B’,70~79分为’C’,60分以下为’D’。

#include

main()

{

floatscore;//记录百分制成绩

chargrade;//记录等级

printf("请输入学生成绩:

");

scanf("%f",&score);

while(score>100||score<0)

{//成绩不合法

printf("\n输入有误,请重新输入:

");

scanf("%f",&score);

}

if(score>=90)

grade='A';

elseif(score>=80)

grade='B';

elseif(score>=70)

grade='C';

elseif(score>=60)

grade='D';

elsegrade='E';

printf("成绩是%5.1f,相应的等级是%c\n",score,grade);

}

***********************************************

P1405.3

***********************************************

输入两个正整数m和n,求其最大公约数和最小公倍数。

#include

main()

{

intm,n,max,min;

scanf("%d%d",&m,&n);

//最大公约数从两个数中较小的一个开始寻找

if(m

elsemax=n;

while(m%max!

=0||n%max!

=0)

max--;

//最小公倍数从两个数中较大的一个开始寻找

if(m>n)min=m;

elsemin=n;

while(min%m!

=0||min%n!

=0)

min++;

printf("max=%d,min=%d\n",max,min);

}

***********************************************

P1405.8

***********************************************

打印出所有"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该本身。

例如:

153是一个水仙花数,因为153=13+53+33。

#include

main()

{

intx=100,a,b,c;

while(x>=100&&x<1000)//100~999

{

a=x%10;//个位

b=x/10%10;//十位

c=x/100;//百位

if(x==a*a*a+b*b*b+c*c*c)printf("%5d",x);

x++;

}

}

***********************************************

P1415.9

***********************************************

一个数如果恰好等于它的因子之和,这个数就称为"完数"。

例如,6的因子为1、2、3,而6=1+2+3,因此6是"完数"。

编程序找出1000之内的所有完数,并按下面格式输出其因子:

6itsfactorsare1、2、3

main()

{

intm,i,j,s;

for(m=6;m<1000;m++)//考虑1000以内的自然数

{

s=1;//s表示因子的和,1是所有自然数的因子

for(i=2;i

if(m%i==0)s=s+i;//如果i是因子

if(m==s)//m的因子和与m相等

{

printf("%5ditsfastorsare1",m);

for(j=2;j

if(m%j==0)

printf("%d",j);

printf("\n");

}

}

}

main()

{

intm,i,j,s;

for(m=6;m<1000;m++)

{

s=m-1;

for(i=2;i

if(m%i==0)//如果i是m的因子

s=s-i;//从s中减去该因子

if(s==0)//说明m与其因子和相等

{

printf("%5ditsfastorsare1",m);

for(j=2;j

if(m%j==0)

printf("%d",j);

printf("\n");

}

}

}

***********************************************

P1415-13

***********************************************

用迭代法求平方根

迭代公式为:

xn=xn-1-f(xn-1)/f'(xn-1)

#include

#include

main()

{

floatx0,x1,a;

scanf("%f",&a);//求a的平方根

x1=a/2;//迭代的初始值,可以给任意值

do

{

x0=x1;//记录前一个近似值

x1=(x0+a/x0)/2;//根据迭代公式计算新的近似值

}while(fabs(x0-x1)>=1e-5);//比较前后两个近拟值

printf("%.3f\n",x1);

}

***********************************************

P1415-14

***********************************************

用迭代法求方程的根

迭代公式为:

xn=xn-1-f(xn-1)/f'(xn-1)

#include

#include

main()

{

doublex0,x1,y;

x1=1.5;//给定一个初始近似值

do

{

x0=x1;//记录前一个近似值

y=2*x0*x0*x0-4*x0*x0+3*x0-6;//f(x0)

x1=x0-y/(6*x0*x0-8*x0+3);//计算新的近似值

}while(fabs(x1-x0)>1e-6);//比较前后两个值

printf("x=%.3f\n",x1);

}

***********************************************

P1415-15

***********************************************

用二分法求方程的根。

#include

#include

main()

{

doublem,a,b,fm,fa,fb;

a=-10;b=10;/*[-10,10]之间有一个根*/

while(fabs(b-a)>1e-3)

{

m=(a+b)/2;/*中点*/

fa=2*a*a*a-4*a*a+3*a-6;

fb=2*b*b*b-4*b*b+3*b-6;

fm=2*m*m*m-4*m*m+3*m-6;

if(fm*fa>0)/*f(m)与f(a)同号*/

a=m;

else

b=m;

}

printf("x=%.3f\n",(a+b)/2);

}

***********************************************

例题

***********************************************

编程计算级数

的近似值

#include

#include

main()

{

intn;

floatex,x,item;

x=1;//近似计算e1

ex=1;

item=1;

n=1;

while

(1)

{

item*=x/n++;//计算一项

ex+=item;//累加

if(fabs(item)<1e-6)

break;

}

printf("%f\n",ex);

}

*********************************************

例题

***********************************************

编程近似计算定积分

#include

#include

main()

{

floata,b;//定积分的上下限

floatx,dx,sfx;

a=0;

b=3.14;

dx=1e-3;//区间长度

for(x=a,sfx=0;x<=b;x+=dx)

sfx+=dx*sin(x);

printf("%f\n",sfx);

}

***********************************************

P1686-2

***********************************************

选择排序

#include

#defineN10

main()

{

inta[N],t,i,j,min;

printf("Input:

");

for(i=0;i

scanf("%d",&a[i]);//输入数据

for(i=0;i

{

min=i;//记录下标

for(j=i+1;j

if(a[j]

min=j;

t=a[min];//交换

a[min]=a[i];

a[i]=t;

}

for(i=0;i

printf("%d",a[i]);

}

 

***********************************************

蒙特卡洛近似计算

***********************************************

//近似计算定积分

#include

#include

#include

#include

#defineN50000

#definePI3.1415926

main()

{

doublex,y;

unsignednum,j;

srand((unsigned)time(NULL));

num=0;

for(j=0;j

{

x=(double)rand()/RAND_MAX*PI;

y=(double)rand()/RAND_MAX;

if(y

num++;

}

printf("%lf\n",(double)num/N*PI);

}

 

//近似计算球体体积

#include

#include

#include

#defineN50000

main()

{

doublex,y,z;

unsignednum,j;

srand((unsigned)time(NULL));

num=0;

for(j=0;j

{

x=(double)rand()/RAND_MAX;

y=(double)rand()/RAND_MAX;

z=(double)rand()/RAND_MAX;

if(x*x+y*y+z*z<1)

num++;

}

printf("%lf\n",(double)num/N*8);

}

***********************************************

P2187-1

***********************************************

公约数公倍数

intminmult(intm,intn)

{

intj;

if(m>n)j=m;elsej=n;

while(j%m!

=0||j%n!

=0)

j++;

returnj;

}

intmaxdivisor(intm,intn)

{

intj;

if(m

while(m%j!

=0||n%j!

=0)

j--;

returnj;

}

main()

{

inta,b;

printf("Inputa&b:

");

scanf("%d%d",&a,&b);

printf("%d%d\n",minmult(a,b),maxdivisor(a,b));

}

***********************************************

P2187-2

***********************************************

一元二次方程求根

方法一:

#include

#include

voidgetroot(floata,floatb,floatc);//函数声明

voidmain()

{

floata,b,c;

printf("Inuta,b,c:

");

scanf("%f%f%f",&a,&b,&c);//输入系数

getroot(a,b,c);//调用函数计算方程根

}

voidgetroot(floata,floatb,floatc)

{

floatd,x1,x2;

d=b*b-4*a*c;

x1=(-b+sqrt(d))/2/a;

x2=(-b+sqrt(d))/2/a;

printf("x1=%.1fx2=%.1f\n",x1,x2);

}

方法二:

#include

#include

voidgetroot(floata,floatb,floatc,floatx[3]);//函数声明

voidmain()

{

floata,b,c,x[3];

printf("Inuta,b,c:

");

scanf("%f%f%f",&a,&b,&c);//输入系数

getroot(a,b,c,x);//调用函数计算方程根

printf("x1=%.1fx2=%.1f\n",x[1],x[2]);

}

voidgetroot(floata,floatb,floatc,floatx[3])

{

floatd;

d=b*b-4*a*c;

x[1]=(-b+sqrt(d))/2/a;

x[2]=(-b+sqrt(d))/2/a;

}

方法三:

#include

#include

voidgetroot(floata,floatb,floatc,float*px1,float*px2)

{

floatd;

d=b*b-4*a*c;

*px1=(-b+sqrt(d))/2/a;

*px2=(-b+sqrt(d))/2/a;

}

voidmain()

{

floata,b,c,x1,x2;

printf("Inuta,b,c:

");

scanf("%f%f%f",&a,&b,&c);//输入系数

getroot(a,b,c,&x1,&x2);//调用函数计算方程根

printf("x1=%.1fx2=%.1f\n",x1,x2);

}

***********************************************

P2187-3

***********************************************

质数

 intprime(int);//函数声明

voidmain()

intx;

 printf("输入一个正整数\n\n");

 scanf("%d",&x);

 if(prime(x))printf("\n\n此数为素数\n\n");

 elseprintf("\n\n此数不是素数\n\n"); 

}

intprime(intn)

{

 intk;

 for(k=2;k

  if(n%k==0)//余数为0

return0;

 return1;/*是质数,返回1*/

}

 

***********************************************

***********************************************

排序,用函数实现

***********************************************

#include

#defineN10

//选择排序

voidselectsort(inta[],intn)

{

inti,j,k,t;

for(i=0;i

{

k=i;//假设

for(j=i+1;j

if(a[j]

k=j;//用k记录其下标

t=a[k];a[k]=a[i];a[i]=t;

}

}

//起泡排序

voidbubblesort(inta[],intn)

{

intj,i,t;

for(j=0;j

for(i=0;i

if(a[i]>a[i+1])

{

t=a[i];a[i]=a[i+1];a[i+1]=t;

}

}

main()

{

inta[N],i;

printf("Input:

");

for(i=0;i

scanf("%d",&a[i]);

bubblesort(a,N);//函数调用

for(i=0;i

printf("%d",a[i]);

}

***********************************************

P2197-13

***********************************************

勒德让多项式

voidmain()

{

 floatp(int,float);

 intn;

 floatx;

 printf("输入n和x\n\n");

 scanf("%d%f",&n,&x);

 printf("\n\n%d阶勒德让多项式的值为:

%f\n\n",n,p(n,x));

}

floatp(intn,floatx)

{

 if(n==0)return1;

 elseif(n==1)returnx;

 elsereturn((2*n-1)*x-p(n-1,x)-(n-1)*p(n-2,x))/

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1