西北师范大学期末考试c语言复习笔记代码部分Word文件下载.docx
《西北师范大学期末考试c语言复习笔记代码部分Word文件下载.docx》由会员分享,可在线阅读,更多相关《西北师范大学期末考试c语言复习笔记代码部分Word文件下载.docx(15页珍藏版)》请在冰豆网上搜索。
&
year%100!
=0)||year%400==0)
%d年是闰年.\n"
year);
3、画出各种三角形图案。
(这是用循环嵌套完成的,也可以用二维数组来输出更加直接简单,但是耗费系统资源较多。
)
{inti,j;
for(i=1;
6;
for(j=1;
30-i;
"
=2*i-1;
*"
4、多项式求和问题
12+22+222+…+2…2
#include<
ints,sum,n,i;
请输入n的值:
n);
sum=0;
s=0;
for(i=1;
=n;
{
s=s+2;
sum=sum+s;
}
sum=%d\n"
sum);
②求1!
+2!
+…+n!
intjc(intn)
inti,s=1;
s=s*i;
return(s);
s=1;
sum=sum+jc(i);
5、猴子摘桃
inti,sum=1;
10;
sum=(sum+1)*2;
5、百钱百鸡
intx,y,z,j=0;
Folleingarepossibleplanstobuy100fowlswith100Yuan.\n"
for(x=0;
x<
=20;
x++)/*外层循环控制鸡翁数*/
for(y=0;
y<
=33;
y++)/*内层循环控制鸡母数y在0~33变化*/
z=100-x-y;
/*内外层循环控制下,鸡雏数z的值受x,y的值的制约*/
if(z%3==0&
5*x+3*y+z/3==100)
/*验证取z值的合理性及得到一组解的合理性*/
%2d:
cock=%2dhen=%2dchicken=%2d\n"
++j,x,y,z);
6、打渔晒网
intmain()
inta[12]={0,31,28,31,30,31,30,31,31,30,31,30},d,m,i,n=0,c,b;
请输入月、日:
%d,%d"
m,&
d);
switch(m)
case1:
case3:
case5:
case7:
case8:
case10:
if(d>
31)
return(0);
case2:
28)
case4:
case6:
case9:
case11:
30)
=m;
n=n+a[i-1];
c=(n+d-1)%5;
b=(n+d-1)%7;
if(c<
=2)
打鱼\n"
else
晒网\n"
switch(b)
case0:
星期日\n"
break;
星期一\n"
星期二\n"
星期三\n"
星期四\n"
星期五\n"
星期六\n"
return(0);
7、利用面积法和随机数概率近似求出圆周率π。
time.h>
stdlib.h>
inti,m,n;
floatx,y,pi;
m=0;
n=0;
srand(time(0));
for(i=0;
=32767;
x=rand()/32767.0;
y=rand()/32767.0;
n++;
if(x*x+y*y<
=1)
m++;
pi=4.0*m/n;
%f\n"
pi);
8、解方程
1迭代法
迭代法开平方:
求平方根的迭代公式:
x1=1/2*(x0+a/x0)
#include<
voidmain()
{
doublea,x0,x1;
printf("
Inputa:
scanf("
%lf"
a);
//为什么在VC6.0中不能写成“scanf("
%f"
a);
”?
if(a<
0)
Error!
else
x0=a/2;
x1=(x0+a/x0)/2;
do
x0=x1;
}while(fabs(x0-x1)>
=1e-6);
}
Result:
sqrt(%g)=%g\n"
a,x1);
9、解方程
牛顿迭代法求方程的根2x^5+4x^2+3x-6=0在1附近的根
floatx1,x,f1,d1;
x1=1;
do
f1=2*pow(x1,5)+4*x1*x1+3*x1-6;
d1=10*pow(x1,4)+8*x1+3;
x=x1-f1/d1;
x1=x;
while(fabs(f1)>
1e-6);
x=%f\n"
x);
用二分法求方程2x^5+4x^2+3x-6=0在(0,1)上的根
floatx1,x2,x,y1,y;
x1=0;
x2=1;
y1=2*pow(x1,5)+4*x1*x1+3*x1-6;
x=(x1+x2)/2;
y=2*pow(x,5)+4*x*x+3*x-6;
if(y*y1<
x2=x;
else
{x1=x;
y1=y;
while(fabs(y)>
弦截法
9、排序
冒泡排序法(随即产生10个正整数,并按照从大到小的顺序排序)
inta[10],i,j;
srand(time(0));
原序列为:
for(i=0;
a[i]=rand()%100;
a[i]);
putchar('
\n'
8;
for(j=0;
9-i;
if(a[j]<
a[j+1])
a[j]+=a[j+1];
a[j+1]=a[j]-a[j+1];
a[j]=a[j]-a[j+1];
printf(“排序后的数列为:
\n”);
选择排序法
注意体会这两种排序法的区别(结合指针中的地址的概念)
inta[10],i,j,p;
排序前:
p=i;
for(j=1+i;
if(a[j]>
a[p])
p=j;
if(p!
=i)
a[i]+=a[p];
a[p]=a[i]-a[p];
a[i]-=a[p];
排序后\n"
10、魔方数
#include<
voidmain()
inta[15][15],i,j,k,n;
请输入一个正整数:
n;
i++)
j++)
a[i][j]=0;
j=n/2;
a[0][j]=1;
for(k=2;
k<
=n*n;
k++)
{i=i-1;
j=j+1;
if((i<
0)&
(j>
n-1))
i=i+2;
j=j-1;
}
{if(i<
i=n-1;
if(j>
n-1)
j=0;
if(a[i][j]==0)
a[i][j]=k;
else
{i=i+2;
}
{for(j=0;
%5d"
a[i][j]);
\n\n"
11、打擂台算法
选猴王
inta[30],i,s,n;
30;
a[i]=1;
i=0;
n=30;
while(n>
1)
s+=a[i];
if(s%3==0&
a[i]==1)
a[i]=0;
n--;
i++;
if(i==30)
if(a[i]==1)
猴王是:
%d\n"
12、关于字符串的统计问题(统计出一行字符串中包含多少大写字母、小写字母、数字、空格等。
voidmain()
charstring[20],i;
inta,b,c,d,j;
gets(string);
a=0;
b=0;
c=0;
d=0;
(i=string[j])!
='
\0'
;
if(i>
a'
z'
a++;
A'
Z'
b++;
0'
9'
c++;
if(i=='
'
d++;
小写字母的个数为:
a);
大写字母的个数为:
b);
数字的个数为:
c);
空格的个数为:
d);
13、汉诺塔问题
voidhanoi(intn,chara,charb,charc)
if(n==1)
%c-->
%c\n"
a,c);
hanoi(n-1,a,c,b);
hanoi(n-1,b,a,c);
hanoi(3,'
'
B'
C'
14、用梯形法求定积分s=dx
doublef(doublex)
doubley;
y=exp(-x*x);
return(y);
doubletxf(doublea,doubleb,intn)
doubleh,s,p=0,x;
inti;
h=(b-a)/n;
s=h*(f(a)+f(b))/2;
x=a+i*h;
p=p+f(x);
s=s+p*h;
returns;
voidmain()
doublea=0,b=1,s;
intn;
s=txf(a,b,1000);
s=%lf\n"
s);
15、递归输出三角形
voidfac(intn)
想想这个打出来的是一个什么样的三角形,如果要将这个三角形倒立输出,则应该怎么改最简单?
if(n>
fac(n-1);
请输入n:
fac(n);