学林专升本C语言复习资料Word文档下载推荐.docx

上传人:b****6 文档编号:22024657 上传时间:2023-02-02 格式:DOCX 页数:37 大小:43.95KB
下载 相关 举报
学林专升本C语言复习资料Word文档下载推荐.docx_第1页
第1页 / 共37页
学林专升本C语言复习资料Word文档下载推荐.docx_第2页
第2页 / 共37页
学林专升本C语言复习资料Word文档下载推荐.docx_第3页
第3页 / 共37页
学林专升本C语言复习资料Word文档下载推荐.docx_第4页
第4页 / 共37页
学林专升本C语言复习资料Word文档下载推荐.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

学林专升本C语言复习资料Word文档下载推荐.docx

《学林专升本C语言复习资料Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《学林专升本C语言复习资料Word文档下载推荐.docx(37页珍藏版)》请在冰豆网上搜索。

学林专升本C语言复习资料Word文档下载推荐.docx

三、基本算法举例

1、输入三个数a,b,c,按大小顺序输出

main()

{floata,b,c,t;

scanf("

%f,%f,%f"

&

a,&

b,&

c);

if(a>

b)

{t=a;

a=b;

b=t;

}

c)

a=c;

c=t;

}

if(b>

{t=b;

b=c;

printf("

%5.2f,%5.2f,%5.2f"

a,b,c);

2、求1到100的和。

main()

{

inti,sum=0;

i=1;

while(i<

=100)

{sum=sum+i;

i=i+1;

}

sum=%d\n"

sum);

}

{inttotal=0,i=1;

while(i<

=100)

{total=total+i;

i++;

printf(”Total=%d\n"

total);

3、求pi

main()

{

inti=1,j=-1;

floatpi=0,k=-1,x;

while((x=1.0/(2.0*i-1))>

0.000001)

/*整数除以整数还是商为整数因此(x=1.0/(2.0*i-1))*/

{k=k*j;

pi=pi+k*x;

i++;

printf("

pidezhiwei%f"

4*pi);

4、判断一个数能否同时被3和5整除。

intn;

scanf("

%d"

&

n);

if(n%3==0&

n%5==0)/*注意关系表达式的写法*/

%dnengbei3he5zhengchu."

n);

else

%dbunengbei3he5zhengchu."

5、素数

#include"

math.h"

{intn,k,flag;

for(n=100;

n<

200;

n++)

{flag=1;

for(k=2;

k<

=sqrt(n);

k++)

if(n%k==0)/*注意相等关系的表示*/

{flag=0;

break;

if(flag==1)printf("

%d"

}

6、求m和n的最大公约数和最小公倍数。

main()

{intm,t,n,i=2,yueshu,beishu;

%d%d"

m,&

if(m<

=n)

{t=m;

m=n;

m=t;

}/*m存放大数,n存放小数*/

for(i=n;

i>

1;

i--)/*最大公约数*/

{if(m%i==0&

n%i==0)

{yueshu=i;

break;

beishu=n*m/yueshu;

/*最小公倍数*/

%dhe%ddezuidagongyueshushi%d\n"

m,n,yueshu);

%dhe%ddezuixiaogongbeishushi%d\n"

m,n,beishu);

7、求二元一次方程的根。

#include<

math.h>

floata,b,c,x1,x2,deta;

%f%f%f"

a,&

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

if(deta>

0)

{

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

x2=(-b-sqrt(deta))/(2*a);

fangchengdegenwei:

x1=%fx2=%f"

x1,x2);

elseif(deta==0)

{x1=x2=-b/(2*a);

x1=x2=%f"

x1);

elseprintf("

fangchengmeiyoushigen."

);

8.符号函数。

{floatx;

inty;

scanf(“%f”,&

x);

if(x>

=0)

if(x>

0)y=1;

elsey=0;

elsey=–1;

printf(“%f”,y);

9、函数

输入x输出y。

floatx,y;

%f"

if(x<

1)

y=x;

elseif(x>

=1&

x<

10)

y=2*x-1;

y=3*x-11;

y);

10、给出一个百分制成绩,要求输出成绩等级ABCADE,90分以上为A,80—89分为B,70—79分为C,60—69分为D,60分以下为E。

{intselect,score;

chargrade;

Pleaseinputthescore:

"

);

%d\n"

score);

select=score/10;

switch(select)

{case1:

case2:

case3:

case4:

case5:

grade=’E’;

case6:

grade=’D’;

case7:

grade=’C’;

case8:

grade=’B’;

case9:

case10:

grade=’A’;

}/*注意使用break语句*/

grade=%c\n"

grade);

11、求Fibonacci数列40个数

stdio.h>

{intn,i,un1,un2,un;

un=un2=1;

/*设置递推初始值*/

for(i=3;

i<

=40;

i++)/*用递推法计算第N项的值*/

{un1=un2;

un2=un;

un=un1+un2;

printf("

No.%dis%d\n"

n,un);

12、n!

{intn,i;

floatt=1,f=0;

/*注意阶乘及其和不能定义为整数,此时会溢出,应为长整数或实数。

*/

inputn:

\n"

for(i=1;

i<

=n;

i++)

t=t*i;

f);

13、求1!

+2!

+3!

+…….20!

{t=t*i;

f=f+t;

14、求和

inti;

floatx,y,z,sum;

for(x=0,i=1;

=100;

x+=i;

for(y=0,i=1;

=50;

y+=i*i;

for(z=0,i=1;

=10;

z=z+1.0/i;

/*注意1.0/i的表示,不能写为1/I*/

sum=x+y+z;

sanxiangdehewei%f"

}

15、打印出所有的水仙花数。

{inti,a,b,c;

for(i=100;

=999;

{a=i/100;

/*取百位*/

b=(i-a*100)/10;

/*取十位*/

c=i%10;

/*取个位*/

if(a*a*a+b*b*b+c*c*c==i)

printf("

\nThenumber%disflower\n"

i);

16、求分数序列前20项和。

2/1+3/2+5/3+8/5+13/8+21/13+………..

{intk;

floati=1,j=2,sum=0,t;

for(k=1;

=20;

sum+=j/i;

t=j+i;

i=j;

j=t;

qian20xianghewei:

17、猴子吃桃问题。

{intday=10,x1,x2=1;

do

{x1=2*x2+2;

x2=x1;

day--;

}while(day>

0);

18、用二分法求下面方程在(-10,10)之间的根。

2x3-4x2+3x-6=0

floatx1,x2,x,f,f1,f2;

%f%f"

x1,&

x2);

f1=2*pow(x1,3)-4*x1*x1+3*x1-6;

f2=2*pow(x2,3)-4*x2*x2+3*x2-6;

if(f1*f2>

fangchenggaiqujianneiwushigen"

do{

x=(x1+x2)/2;

f=2*pow(x,3)-4*x*x+3*x-6;

if(f1*f>

0){x1=x;

f1=f;

elseif(f2*f>

0){x2=x;

f2=f;

}while(fabs(f)>

=0.00001);

x=%f"

x);

19、打印三角形和菱形。

三角形:

intx,i,h;

shuruhangshu:

h);

for(x=1;

x<

=h;

x++)

=x;

*"

菱形:

intn,i,x,h;

=h-x;

"

for(n=1;

=2*x-1;

for(x=h-1;

x>

=1;

x--)

20、冒泡排序(从大到小)

{inta[11],i,j,k,x;

Input10numbers:

11;

i++)scanf("

a[i]);

10;

{k=i;

for(j=i+1;

j<

j++)

if(a[j])>

a[k])k=j;

if(i!

=k){x=a[i];

a[i]=a[k];

a[k]=x;

Thesortednumbers:

i++)printf("

a[i]);

21、22、求矩阵A(2×

3)的转置矩阵B(3×

2)。

┏123┓  ┏14┓

A=┃┃B=┃25┃

┗456┛┗36┛

矩阵转置算法:

在原来矩阵A中的元素a[i][j],应是转置后矩阵B中的元素b[j][i]。

#include<

{inti,j,b[3][2],a[2][3]={{1,2,3},{4,5,6}};

/*说明初始化数组a*/

for(i=0;

i++)

for(j=0;

j<

=2;

j++)

b[j][i]=a[i][j];

/*进行数组转置*/

i++,printf(”\n”))/*按行输出*/

printf("

b[i][j]);

23、有一个3X4的矩阵,要求编程求出其中值最大的那个元素,以及其所在的行号和列号。

inti,j,m,n,max,a[3][4];

for(i=0;

3;

for(j=0;

4;

a[i][j]);

%5d"

a[i][j]);

max=a[0][0];

for(m=0,n=0,i=0;

if(max<

a[i][j])

{m=i;

n=j;

max=a[i][j];

}/*m和n分别存放最大值虽在的行号和列号*/

max=a[%d][%d]=%5d\n"

m,n,a[m][n]);

25、用选择法对10个整数排序

if(a[j]<

26、求一个3X3矩阵对角线元素之和

{inti,j,sum=0,a[3][3];

/*说明数组a*/

scanf("

/*输入数组元素的值*/

i++)/*按行输出*/

if(i==j)

sum+=a[i][i];

/*对角线元素求和*/

sum);

27、有一个已排好序的数组,今有一个数,要求按原来排序的规律将它插入数组(从小到大排列)中。

{inti,k,x,a[5]={1,3,5,7};

scanf(“%d”,x);

for(k=4;

k>

0;

k--)/*从后向前比较*/

if(a[k-1]>

x)

a[k]=a[k-1];

/*将大数向后移动*/

elsebreak;

/*找到插入的位置,退出*/

a[k]=x;

/*完成插入操作*/

N;

i++)printf(“%d”,a[i]);

28、将一个数组按逆序重新排放。

inti,j,t,a[5];

5;

for(i=0,j=4;

j;

i++,j--)

t=a[i];

a[i]=a[j];

a[j]=t;

29、杨辉三角形

{inti,j,a[11][11];

{a[i][1]=1;

a[i][i]=1;

for(i=2;

for(j=2;

=i-1;

a[i][j]=a[i-1][j-1]+a[i-1][j];

{for(j=1;

=i;

}

30、编写一个程序,当用户输入年份和月份,电脑会自动输出当月天数。

main()

{intyear,month,days;

year,&

month);

switch(month)

{case1:

case12:

/*处理“大”月*/

days=31;

case6:

case11:

/*处理“小”月*/

days=30;

/*处理“平”月*/

if(year%4==0&

year%100!

=0||year%400==0)

days=29;

/*如果是闰年*/

elsedays=28;

/*不是闰年*/

default:

/*月份错误*/

Inputerror!

days=0;

if(days!

=0)printf(”%d,%dis%ddays\n"

year,month,days);

三、编程题评分标准

评分标准:

结构完整2分(主函数或子函数);

变量声明恰当、控制符对应正确2分;

输入(或初始化)2分;

加工处理(顺序、选择或循环)2分;

输出(结果)2分

四、典型例题分析

1、输入m和n(m≥n≥0)后,计算下列表达式的值并输出。

m!

n!

*(m-n)!

要求将计算阶乘的运算写成函数fact(n),函数返回值的类型为float。

答案:

floatfact(int);

intm,n;

floatval;

scanf(“%d%d”,&

m,&

val=fact(m)/(fact(n)*fact(m-n));

printf(“Value:

%f\n”,val);

floatfact(intn)

if(n<

=0)return1;

return(fact(n-1)*n);

{inti;

floatf=1;

f=f*i;

returnf;

2、对任意输入的x,用下式计算并打印出y的值。

exx>

10

y=0x=10

3x+5x<

{floatx,y;

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

当前位置:首页 > 人文社科 > 哲学历史

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

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