应用题Word文档下载推荐.docx
《应用题Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《应用题Word文档下载推荐.docx(16页珍藏版)》请在冰豆网上搜索。
本题中,数列项的分子是1,分母是奇数数列。
每一项的符号交互改变。
由于不知道计算到哪一项为止,不能用FOR()循环。
可以用While()循环。
算法:
(1)定义一个实数PI,数列项变量q;
(2)定义一个控制变量K,一个符号变量t.
(3)PI=0;
K=1;
t=1;
q=1;
(4)当(q>
1e-7)
{pi=pi+t*q;
k=k+2;
q=1.0/k;
t=-t;
编程:
Main()
{floatpi,q;
Intk,t;
pi=0;
k=1;
q=k;
while(q>
pi=pi*4;
printf(“\npi=%10.8f”,pi);
2、计算sinx=x-x3/3!
+x5/5!
-x7/7!
..........,求sin(x)的近似值,直到最后一项的绝对值小于10-7为止。
X从键盘输入。
算法与前例类似。
只不过要先算分子xn和分母子x!
.
#include"
stdio.h"
main()
{floatx,sinx,xn,xi,q;
inti,k,t;
%f"
x);
xi=1;
xn=1;
t=1;
sinx=0;
q=x;
while(q>
{xi=1;
for(i=1;
i<
=k;
i++)
{xn=xn*x;
计算分子xn和分母子x!
xi=xi*i;
q=xn/xi;
sinx=sinx+t*qi;
printf("
\nx=%5.2f,sinx=%5.2f"
x,sinx);
_
3、计算裴波那契分数序列前n项之和。
N从键盘输入。
裴波那契分数序列的规律性是:
F0=1;
f1=1;
f2=f1+f0;
例如:
对项数列2,3,5,8,13,21……………….
计算前n项之和。
{intf0,f1,f2,xn,n,i;
%d"
n);
f0=2;
f1=3;
xn=f0+f1;
for(i=2;
n;
{f2=f0+f1;
xn=xn+f2;
f0=f1;
f1=f2;
\nf2=%d,xn=%d"
f2,xn);
统计字母、数字个数。
1、从键盘输入一串字符,直到输入一个“*”号为止,统计其中的字母和数字个数。
例:
s[]=”2e5t6gui9”.字母=5,数字=4。
{charch;
intshu=0,zim=0;
while(ch!
*'
)
{
if(ch>
a'
z'
||ch>
zim++;
0'
9'
shu++;
\nshu=%d,zim=%d"
shu,zim);
}_
求素数
1、求出100—500内所有的素数,并按5个一排打印出来。
Prim(intn)
{intk,fg;
for(k=2;
k<
=n/2;
k++)
if(n%k==0)
{fg=0;
break;
elsefg=1;
returnfg;
{intk,x,cnt=0;
for(k=100;
=500;
if(prim(k))
printf(“%d”,k);
cnt++;
if(cnt%5==0)
printf(“\n”);
}}
2、编一个计算了X的N次方的子程序
Pow(intx,intn)
{intk,s;
s=1;
For(k=1;
=n;
s=s*x;
Returns;
3、编一个计算了X的N阶乘的子程序
X=n!
longFa(intn)
{intk;
longy;
y=1;
y=y*k;
Returny;
}
公倍数与公约数
1、编写求最小公倍数的子程序
a,brr%a=0r%b=0
方法1、
intmin(inta,intb)
{intr;
r=a>
b?
a:
b;
while(r%a!
=0||r%b!
=0)
r++;
returnr;
2、编写求最大公约数的子程序
intmax(inta,intb)
b?
b:
a;
while(a%r!
=0||b%r!
=0)r--;
二重循环
一、图形类
1、打印上三角图案:
*
***
*****
*******
*********
算法:
分析:
要求打5行.
每行打若干的空格,然后打”*”
换行.
细分:
要求打n行.
每行打n-i的空格,然后2i-1”*”
{intI,j,k;
For(i=1;
=5;
{for(k=1;
=5-I;
Printf(““);
For(j=1;
j<
=2*i-1;
j++)
Printf(“*”);
Printf(“\n”);
2、打印下三角图案:
每行打i+1的空格,然后2*(5-i)-1个”*”.
{intI,j;
=4;
{for(j=1;
=I+1;
=2*(4-i)+1;
3、打印实心棱形:
*
先打上三角,后打下三角。
{inti,j,n;
scanf("
for(i=1;
{for(j=1;
=n-i;
"
);
for(j=1;
j++)上三角
*"
\n"
=n-1;
=i;
下三角
=2*(n-i)-1;
4、打印空心棱形:
**
提示:
选按实心上三角与下三角打好棱型。
然后在打“*”号时,如果是第一个(j=1)与最后一个,打“*”,否则打空格。
if(j==1||j==2*i-1)
elseprintf("
if(j==1||j==2*(n-i)-1)
5、数字棱形。
1
123
12345
1234567
11111
222
3
%2d"
j);
将printf(“*”)改成本语句
i);
6、打印实心六边形:
***********
*************
*********
先打上梯型,后打下下梯型。
按打上(下)三角型的方法,把第一行“*“的个数从1开始改成从N开始。
=2*i+n-2;
=2*(n-i)+n-2;
7、打印空心六边形:
**
选按实心打好六边型。
if(i==1)
打印最后一行“*“
elseif(j==1||j==2*i+n-2)printf("
if(i==n-1)printf("
elseif(j==1||j==2*(n-i)+n-2)
二、数组类型
1、
已知一组字符数组a[11]=“a5Bc3bWj9k”;
一组字符数组b[10];
编一程序,请将字符数组a[]中的小写字母放入数组b[]中,并对数组b[]按从大到小顺序排序,(数组b[]中没有值的元素不排)最后打印字符数组b[]。
(20分)
{charb[10],x;
chara[11]="
a5Bc3bwj9k"
;
inti,j,cnt=0;
for(i=0;
=9;
if(a[i]>
a[i]<
b[cnt++]=a[i];
cnt-1;
for(j=i+1;
cnt;
if(b[i]<
b[j])
{x=b[i];
b[i]=b[j];
b[j]=x;
%c,"
b[i]);
结果:
w,k,j,c,b,a
2、已知一组数组a[10]={11,12,9,3,6,8,23,24,33,34};
一组数组b[10];
编一程序,请将数组a[]中的偶数放入数组b[]中,并对数组b[]按从小到大顺序排序,(数组b[]中没有值的不排)最后打印数组b[]。
{intb[10],x;
inta[10]={11,12,9,3,6,8,23,24,33,34};
if(a[i]%2==0)
if(b[i]>
%d"
6,8,12,24,34
三、方程求解类
1、用迭代法求X的平方根Y,X由键盘输入,利用下列迭代公式计算:
初值Y0=X/2,精确到、|yn+1-yn|<
10-7.。
Yn+1=(yn+x/yn)/2
提示:
迭代法是反复代入法,把Yn代入迭代公式的右端,可以算出yn+1,然后把yn+1作为新的yn代入迭代公式,又可以得到新的yn+1.
{floaty1,y2,x;
y1=x/2;
y2=(y1+x/y1)/2;
while(fabs(y2-y1)>
1e-4)
{y1=y2;
y2=(y2+x/y2)/2;
\nx=%5.2f,y=%5.2f"
x,y2);
2、用二分法求方程2*x*x*x*x-4*x*x+3*x=0在(-10,10)附近的根。
#include"
/2*x*x*x-4*x*x*x+3*x=0/
floatf(floatx)
{floatr;
r=2*x*x*x-4*x*x+3*x;
returnr;
{floatx,f(floatx);
floata,b;
a=-10;
b=10;
while((b-a)/2>
{if(f((a+b)/2)==0){x=(a+b)/2;
if(f(a)*f((a+b)/2)>
0)a=(a+b)/2;
elseb=(a+b)/2;
x=(a+b)/2;
\nx=%5.2f,r=%5.2f"
x,f(x));
四、九九乘法口诀表
123456789
4681012141618
9121518212427
16。
。
36
。
81
{inti,j,k;
for(j=i;
%3d"
i*j);
表2
1*1=1
2*1=22*2=4
3*1=33*2=63*3=9
4*1=4…………………4*4=16
……………………
9*1=92*9=18……………..9*9=81
For(i=1;
{For(j=1;
=I;
Printf(“%d*%d=%d”,I,j,i*j);
五、求解三角面积
1、输入3个实数,编程判断能否构成三角形,若能,说明是何种三角形(等边、等腰、直角、一般)并计算其面积。
利用公式area=sqrt(s(s-a)(s-b)(s-c)),s=(a+b+c)/2).
math.h"
{floata,b,c,area,s;
%f,%f,%f"
a,&
b,&
if(a+b>
c&
a+c>
b&
b+c>
a)
{if(a==b&
b==c)printf("
等边"
elseif(a==b&
b!
=c||a==c&
a!
=b||b==c&
=b)printf("
等腰"
else
if(a*a+b*b==c*c||a*a+c*c==b*b||)c*c+b*b==a*aprintf("
直角"
一般"
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
\n%f"
area);
no"
}