学林专升本C语言复习资料Word下载.docx
- 文档编号:21837517
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:38
- 大小:42.43KB
学林专升本C语言复习资料Word下载.docx
《学林专升本C语言复习资料Word下载.docx》由会员分享,可在线阅读,更多相关《学林专升本C语言复习资料Word下载.docx(38页珍藏版)》请在冰豆网上搜索。
三、基本算法举例
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”))/*按行输出*/
for(j=0;
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;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学林专升 语言 复习资料