学林专升本C语言复习资料.docx

上传人:b****7 文档编号:16288624 上传时间:2023-07-12 格式:DOCX 页数:44 大小:45.79KB
下载 相关 举报
学林专升本C语言复习资料.docx_第1页
第1页 / 共44页
学林专升本C语言复习资料.docx_第2页
第2页 / 共44页
学林专升本C语言复习资料.docx_第3页
第3页 / 共44页
学林专升本C语言复习资料.docx_第4页
第4页 / 共44页
学林专升本C语言复习资料.docx_第5页
第5页 / 共44页
学林专升本C语言复习资料.docx_第6页
第6页 / 共44页
学林专升本C语言复习资料.docx_第7页
第7页 / 共44页
学林专升本C语言复习资料.docx_第8页
第8页 / 共44页
学林专升本C语言复习资料.docx_第9页
第9页 / 共44页
学林专升本C语言复习资料.docx_第10页
第10页 / 共44页
学林专升本C语言复习资料.docx_第11页
第11页 / 共44页
学林专升本C语言复习资料.docx_第12页
第12页 / 共44页
学林专升本C语言复习资料.docx_第13页
第13页 / 共44页
学林专升本C语言复习资料.docx_第14页
第14页 / 共44页
学林专升本C语言复习资料.docx_第15页
第15页 / 共44页
学林专升本C语言复习资料.docx_第16页
第16页 / 共44页
学林专升本C语言复习资料.docx_第17页
第17页 / 共44页
学林专升本C语言复习资料.docx_第18页
第18页 / 共44页
学林专升本C语言复习资料.docx_第19页
第19页 / 共44页
学林专升本C语言复习资料.docx_第20页
第20页 / 共44页
亲,该文档总共44页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

学林专升本C语言复习资料.docx

《学林专升本C语言复习资料.docx》由会员分享,可在线阅读,更多相关《学林专升本C语言复习资料.docx(44页珍藏版)》请在冰点文库上搜索。

学林专升本C语言复习资料.docx

学林专升本C语言复习资料

学林专升本C语言复习资料

一、C语言复习提纲

第1章概述

1、计算机语言分类(机器语言、低级语言、高级语言);

2、C语言的特点;

3、C语言上机步骤(编辑、编译、连接、运行)。

第2章算法

1、算法的两种表示方法;

(1)传统流程图;

(2)N-S流程图;

2、三种基本结构(顺序、选择、循环);

3、结构化程序设计方法。

第3章数据类型、运算符与表达式

1、常量与符号常量,变量及其命名规则;

2、整型常量(十进制、八进制和十六进制常量,长整型常量),整型变量的分类与定义;

3、实型常量(十进制形式、指数形式常量、单精度常量),实型变量的分类与定义;

4、字符常量(一般字符常量、转义字符常量)与字符串常量,字符变量的定义;

5、各类数值型数据间混合运算规则(类型转换规则);

6、算术运算符、算术表达式的书写、算术表达式的计算规则;

7、强制类型转换运算符、自增和自减运算符,自增和自减运算符在变量前与变量后的差别;

8、赋值运算符、复合赋值运算符、赋值表达式及计算规则;

9、逗号运算符、逗号表达式的值;

10、整型变量、长整型变量、单精度实型变量、双精度实型变量、字符变量占用内存大小

第4章简单C程序设计

1、C语句的分类(控制语言、函数调用语句、表达式语言、空语句、复合语句)

2、字符的输入函数getchar、输出函数putchar的使用规则

3、格式输入函数scanf、输出函数printf的使用规则

第5章选择结构程序设计

1、关系运算符(<、<=、>、>=、==,!

=,)、关系表达式及其值计算

2、逻辑运算符(&&、||、!

)、逻辑表达式及其值计算

3、if语句的三种形式、if语句嵌套

4、条件运算符、条件表达式及其值计算

5、switch语句、break的作用

 

第6章循环控制

1、goto语句与goto循环、while循环、for循环,循环执行规则,循环次数的计算,循环变量值的变化

2、循环嵌套、几种循环的比较

3、循环体中使用break语句、continue语句的区别

第7章数组函数

1、一维数组的定义方法、初始化方法、元素引用方法,一维数组的输入输出方法。

二维数组的定义方法、初始化方法、元素引用方法,二维数组的输入输出方法。

二维数组的转置、对角线元素的和、最大值。

2、了解函数的定义、掌握递归的用法。

二、基本算法

两个变量交换,素数判断,计算分段函数值,求数列或级数的和,求解二次方程,字母大小写转换,数组最大值、最小值、平均值计算,数组排序,矩阵转置,数组逆序排列,矩形法和梯形法计算定积分,最小公倍数和最大公约数计算,三角形面积计算等等。

三、基本算法举例

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;}

if(a>c)

{t=a;a=c;c=t;}

if(b>c)

{t=b;b=c;c=t;}

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;

}

printf("sum=%d\n",sum);

}

main()

{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整除。

main()

{

intn;

scanf("%d",&n);

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

printf("%dnengbei3he5zhengchu.",n);

else

printf("%dbunengbei3he5zhengchu.",n);

}

5、素数

#include"math.h"

main()

{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",n);

}

}

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

main()

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

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

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;/*最小公倍数*/

printf("%dhe%ddezuidagongyueshushi%d\n",m,n,yueshu);

printf("%dhe%ddezuixiaogongbeishushi%d\n",m,n,beishu);

}

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

#include

main()

{

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

scanf("%f%f%f",&a,&b,&c);

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

if(deta>0)

{

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

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

printf("fangchengdegenwei:

x1=%fx2=%f",x1,x2);

}

elseif(deta==0)

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

printf("fangchengdegenwei:

x1=x2=%f",x1);}

elseprintf("fangchengmeiyoushigen.");

}

8.符号函数。

main()

{floatx;

inty;

scanf(“%f”,&x);

if(x>=0)

if(x>0)y=1;

elsey=0;

elsey=–1;

printf(“%f”,y);

}

9、函数

输入x输出y。

main()

{

floatx,y;

scanf("%f",&x);

if(x<1)

y=x;

elseif(x>=1&&x<10)

y=2*x-1;

else

y=3*x-11;

printf("%f",y);

}

 

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

main()

{intselect,score;

chargrade;

printf("Pleaseinputthescore:

");

scanf("%d\n",&score);select=score/10;

switch(select)

{case1:

case2:

case3:

case4:

case5:

grade=’E’;break;

case6:

grade=’D’;break;

case7:

grade=’C’;break;

case8:

grade=’B’;break;

case9:

case10:

grade=’A’;break;

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

printf("grade=%c\n",grade);

}

11、求Fibonacci数列40个数

#include

main()

{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!

main()

{intn,i;

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

*/

printf("inputn:

\n");

scanf("%d",&n);

for(i=1;i<=n;i++)

t=t*i;

printf("sum=%d\n",f);

}

13、求1!

+2!

+3!

+…….20!

main()

{intn,i;

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

*/

printf("inputn:

\n");

scanf("%d",&n);

for(i=1;i<=n;i++)

{t=t*i;f=f+t;}

printf("sum=%d\n",f);

}

14、求和

main()

{

inti;

floatx,y,z,sum;

for(x=0,i=1;i<=100;i++)

x+=i;

for(y=0,i=1;i<=50;i++)

y+=i*i;

for(z=0,i=1;i<=10;i++)

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

sum=x+y+z;

printf("sanxiangdehewei%f",sum);

}

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

main()

{inti,a,b,c;

for(i=100;i<=999;i++)

{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+………..

main()

{intk;

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

for(k=1;k<=20;k++)

{

sum+=j/i;

t=j+i;

i=j;

j=t;

}

printf("qian20xianghewei:

%f",sum);

}

17、猴子吃桃问题。

main()

{intday=10,x1,x2=1;

do

{x1=2*x2+2;

x2=x1;

day--;

}while(day>0);

printf("sum=%d\n",x1);

}

}

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

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

#include

main()

{

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

scanf("%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>0)

printf("fangchenggaiqujianneiwushigen");

else

{

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);

printf("x=%f",x);

}

}

19、打印三角形和菱形。

三角形:

main()

{

intx,i,h;

printf("shuruhangshu:

");

scanf("%d",&h);

for(x=1;x<=h;x++)

{

for(i=1;i<=x;i++)

printf("*");

printf("\n");

}

菱形:

main()

{

intn,i,x,h;

printf("shuruhangshu:

");

scanf("%d",&h);

for(x=1;x<=h;x++)

{

for(i=1;i<=h-x;i++)

printf("");

for(n=1;n<=2*x-1;n++)

printf("*");

printf("\n");

}

for(x=h-1;x>=1;x--)

{

for(i=1;i<=h-x;i++)

printf("");

for(n=1;n<=2*x-1;n++)

printf("*");

printf("\n");

}

}

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

#include

main()

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

printf("Input10numbers:

\n");

for(i=1;i<11;i++)scanf("%d",&a[i]);

printf("\n");

for(i=1;i<10;i++)

{k=i;

for(j=i+1;j<=10;j++)

if(a[j])>a[k])k=j;

if(i!

=k){x=a[i];a[i]=a[k];a[k]=x;}

}

printf("Thesortednumbers:

\n");

for(i=1;i<11;i++)printf("%d",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

main()

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

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

for(i=0;i<=1;i++)

for(j=0;j<=2;j++)

b[j][i]=a[i][j];/*进行数组转置*/

for(i=0;i<=2;i++,printf(”\n”))/*按行输出*/

for(j=0;j<=1;j++)

printf("%d",b[i][j]);

}

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

main()

{

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

for(i=0;i<3;i++)

for(j=0;j<4;j++)

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

for(i=0;i<3;i++)

{

for(j=0;j<4;j++)

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

printf("\n");

}

max=a[0][0];

for(m=0,n=0,i=0;i<3;i++)

for(j=0;j<4;j++)

{

if(max

{m=i;n=j;max=a[i][j];}/*m和n分别存放最大值虽在的行号和列号*/

}

printf("max=a[%d][%d]=%5d\n",m,n,a[m][n]);

}

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

#include

main()

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

printf("Input10numbers:

\n");

for(i=1;i<11;i++)

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

printf("\n");

for(i=1;i<10;i++)

{k=i;

for(j=i+1;j<=10;j++)

if(a[j]

if(i!

=k){x=a[i];a[i]=a[k];a[k]=x;}

}

printf("Thesortednumbers:

\n");

for(i=1;i<11;i++)

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

}

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

#include

main()

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

/*说明数组a*/

for(i=0;i<=2;i++)

for(j=0;j<=2;j++)

scanf("%d",&a[i][j]);/*输入数组元素的值*/

for(i=0;i<=2;i++)/*按行输出*/

for(j=0;j<=2;j++)

if(i==j)

sum+=a[i][i];/*对角线元素求和*/

printf("%d",sum);

}

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

main()

{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;/*完成插入操作*/

for(i=0;i

}

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

main()

{

inti,j,t,a[5];

for(i=0;i<5;i++)

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

for(i=0;i<5;i++)

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

printf("\n");

for(i=0,j=4;i

{

t=a[i];a[i]=a[j];a[j]=t;

}

for(i=0;i<5;i++)

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

printf("\n");

}

29、杨辉三角形

main()

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

for(i=1;i<=10;i++)

{a[i][1]=1;a[i][i]=1;}

for(i=2;i<=10;i++)

for(j=2;j<=i-1;j++)

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

for(i=1;i<=10;i++)

{for(j=1;j<=i;j++)

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

printf("\n");

}

}

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

main()

{intyear,month,days;

scanf("%d%d",&year,&month);

switch(month)

{case1:

case3:

case5:

case7:

case8:

case10:

case12:

/*处理“大”月*/

days=31;break;

case4:

case6:

case9:

case11:

/*处理“小”月*/

days=30;break;

case2:

/*处理“平”月*/

if(year%4==0&&year%100!

=0||year%400==0)

days=29;/*如果是闰年*/

elsedays=28;/*不是闰年*/

break;

default:

/*月份错误*/

printf("Inputerror!

\n");

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。

答案:

#include

floatfact(int);

main()

{

intm,n;

floatval;

scanf(“%d%d”,&m,&n);

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

printf(“Value:

%f\n”,val);

}

floatfact(intn)

{

if(n<=0)return1;

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

}

floatfact(intn)

{inti;floatf=1;

for(i=1;i<=n;i++)

f=f*i;

returnf;}

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

exx>10

y=0x=10

3x+5x<10

答案:

#include"math.h"

main()

{floatx,y;

scanf("%f"

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

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2