应用题.docx
- 文档编号:7910190
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:16
- 大小:18.87KB
应用题.docx
《应用题.docx》由会员分享,可在线阅读,更多相关《应用题.docx(16页珍藏版)》请在冰豆网上搜索。
应用题
应用题
条件选择题
1、将大写字母换成小写字母。
Main()
{charc;
scanf("%C",&c);
if('A'<=c&&c<='Z')c=c+32;
printf("%c",c);}
2、输入一个字符数,如果是字母a换成b,b---c,z---a.
Main()
{
Charch;
Scanf(“%c”,&ch);
if(ch>=’a’&&ch<’z’)
ch=ch+1;
elseif(ch==’z’)
ch=’a’;}
printf(“%c”,ch);
}
一重循环类
一、数列题
1、求PI/4=1-1/3+1/5-1/7+……,求PI的近似值,直到最后一项的绝对值小于10-7为止。
分析:
这类题,主要是分析数列的每项规律。
本题中,数列项的分子是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;t=1;q=k;
while(q>1e-7)
{pi=pi+t*q;
k=k+2;
q=1.0/k;
t=-t;}
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;
scanf("%f",&x);
xi=1;xn=1;t=1;k=1;sinx=0;q=x;
while(q>1e-7)
{xi=1;xn=1;
for(i=1;i<=k;i++)
{xn=xn*x;计算分子xn和分母子x!
.
xi=xi*i;}
q=xn/xi;
sinx=sinx+t*qi;
t=-t;
k=k+2;}
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项之和。
main()
{intf0,f1,f2,xn,n,i;
scanf("%d",&n);
f0=2;f1=3;
xn=f0+f1;
for(i=2;i {f2=f0+f1; xn=xn+f2; f0=f1; f1=f2;} printf("\nf2=%d,xn=%d",f2,xn); } 统计字母、数字个数。 1、从键盘输入一串字符,直到输入一个“*”号为止,统计其中的字母和数字个数。 例: s[]=”2e5t6gui9”.字母=5,数字=4。 main() {charch; intshu=0,zim=0; scanf("%c",&ch); while(ch! ='*') { if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z') zim++; if(ch>='0'&&ch<='9') shu++; scanf("%c",&ch);} printf("\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; } main() {intk,x,cnt=0; for(k=100;k<=500;k++) { 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;k<=n;k++) s=s*x; Returns;} 3、编一个计算了X的N阶乘的子程序 X=n! longFa(intn) {intk;longy; y=1; For(k=1;k<=n;k++) 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) {intr; r=a>b? b: a; while(a%r! =0||b%r! =0)r--; returnr;} 二重循环 一、图形类 1、打印上三角图案: * *** ***** ******* ********* 算法: 分析: 要求打5行. 每行打若干的空格,然后打”*” 换行. 细分: 要求打n行. 每行打n-i的空格,然后2i-1”*” 换行. Main() {intI,j,k; For(i=1;i<=5;i++) {for(k=1;k<=5-I;k++) Printf(““); For(j=1;j<=2*i-1;j++) Printf(“*”); Printf(“\n”);} } 2、打印下三角图案: ******* ***** *** * 算法: 分析: 要求打n行. 每行打若干的空格,然后打”*” 换行. 细分: 要求打n行. 每行打i+1的空格,然后2*(5-i)-1个”*”. 换行. Main() {intI,j; For(i=1;i<=4;i++) {for(j=1;j<=I+1;j++) Printf(““); For(j=1;j<=2*(4-i)+1;j++) Printf(“*”); Printf(“\n”);} } } 3、打印实心棱形: * *** ***** ******* ********* ******* ***** *** * 先打上三角,后打下三角。 main() {inti,j,n; scanf("%d",&n); for(i=1;i<=n;i++) {for(j=1;j<=n-i;j++) printf(""); for(j=1;j<=2*i-1;j++)上三角 printf("*"); printf("\n"); } for(i=1;i<=n-1;i++) {for(j=1;j<=i;j++) printf("");下三角 for(j=1;j<=2*(n-i)-1;j++) printf("*"); printf("\n"); } 4、打印空心棱形: * ** ** ** ** ** ** ** * 提示: 选按实心上三角与下三角打好棱型。 然后在打“*”号时,如果是第一个(j=1)与最后一个,打“*”,否则打空格。 main() {inti,j,n; scanf("%d",&n); for(i=1;i<=n;i++) {for(j=1;j<=n-i;j++) printf(""); for(j=1;j<=2*i-1;j++) if(j==1||j==2*i-1) printf("*"); elseprintf(""); printf("\n"); } for(i=1;i<=n-1;i++) {for(j=1;j<=i;j++) printf(""); for(j=1;j<=2*(n-i)-1;j++) if(j==1||j==2*(n-i)-1) printf("*"); elseprintf(""); printf("\n"); } } 5、数字棱形。 1 123 12345 1234567 11111 222 3 main() {inti,j,n; scanf("%d",&n); for(i=1;i<=n;i++) {for(j=1;j<=n-i;j++) printf(""); for(j=1;j<=2*i-1;j++) printf("%2d",j);将printf(“*”)改成本语句 printf("\n"); } for(i=1;i<=n-1;i++) {for(j=1;j<=i;j++) printf(""); for(j=1;j<=2*(n-i)-1;j++) printf("%2d",i);将printf(“*”)改成本语句 printf("\n"); } 6、打印实心六边形: ***** ******* ********* *********** ************* *********** ********* ******* ***** 提示: 先打上梯型,后打下下梯型。 按打上(下)三角型的方法,把第一行“*“的个数从1开始改成从N开始。 main() {inti,j,n; scanf("%d",&n); for(i=1;i<=n;i++) {for(j=1;j<=n-i;j++) printf(""); for(j=1;j<=2*i+n-2;j++) printf("*"); printf("\n"); } for(i=1;i<=n-1;i++) {for(j=1;j<=i;j++) printf(""); for(j=1;j<=2*(n-i)+n-2;j++) printf("*"); printf("\n"); } 7、打印空心六边形: ***** ** ** ** ** ** ** ** ***** 提示: 选按实心打好六边型。 然后在打“*”号时,如果是第一个(j=1)与最后一个,打“*”,否则打空格。 main() {inti,j,n; scanf("%d",&n); for(i=1;i<=n;i++) {for(j=1;j<=n-i;j++) printf(""); for(j=1;j<=2*i+n-2;j++) if(i==1) printf("*");打印最后一行“*“ elseif(j==1||j==2*i+n-2)printf("*"); elseprintf(""); printf("\n"); } for(i=1;i<=n-1;i++) {for(j=1;j<=i;j++) printf(""); for(j=1;j<=2*(n-i)+n-2;j++) if(i==n-1)printf("*");打印最后一行“*“ elseif(j==1||j==2*(n-i)+n-2) printf("*"); elseprintf(""); printf("\n"); } } 二、数组类型 1、 已知一组字符数组a[11]=“a5Bc3bWj9k”;一组字符数组b[10];编一程序,请将字符数组a[]中的小写字母放入数组b[]中,并对数组b[]按从大到小顺序排序,(数组b[]中没有值的元素不排)最后打印字符数组b[]。 (20分) main() {charb[10],x; chara[11]="a5Bc3bwj9k"; inti,j,cnt=0; for(i=0;i<=9;i++) if(a[i]>='a'&&a[i]<='z') b[cnt++]=a[i]; for(i=0;i for(j=i+1;j if(b[i] {x=b[i];b[i]=b[j];b[j]=x;} for(i=0;i printf("%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[]。 (20分) main() {intb[10],x; inta[10]={11,12,9,3,6,8,23,24,33,34}; inti,j,cnt=0; for(i=0;i<=9;i++) if(a[i]%2==0) b[cnt++]=a[i]; for(i=0;i for(j=i+1;j if(b[i]>b[j]) {x=b[i];b[i]=b[j];b[j]=x;} for(i=0;i printf("%d",b[i]); } 结果: 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. #include"stdio.h" main() {floaty1,y2,x; scanf("%f",&x); y1=x/2; y2=(y1+x/y1)/2; while(fabs(y2-y1)>1e-4) {y1=y2; y2=(y2+x/y2)/2;} printf("\nx=%5.2f,y=%5.2f",x,y2); } 2、用二分法求方程2*x*x*x*x-4*x*x+3*x=0在(-10,10)附近的根。 #include"stdio.h"/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;} main() {floatx,f(floatx); floata,b; a=-10;b=10; while((b-a)/2>1e-7) {if(f((a+b)/2)==0){x=(a+b)/2;break;} if(f(a)*f((a+b)/2)>0)a=(a+b)/2; elseb=(a+b)/2; x=(a+b)/2; } printf("\nx=%5.2f,r=%5.2f",x,f(x)); } 四、九九乘法口诀表 123456789 123456789 4681012141618 9121518212427 16。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 36 。 。 。 。 。 。 。 81 main() {inti,j,k; for(i=1;i<=9;i++) {for(k=1;k<=i;k++) printf(""); for(j=i;j<=9;j++) printf("%3d",i*j); printf("\n"); } } 表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 Main() {intI,j; For(i=1;i<=9;i++) {For(j=1;j<=I;j++) Printf(“%d*%d=%d”,I,j,i*j); Printf(“\n”);} } 五、求解三角面积 1、输入3个实数,编程判断能否构成三角形,若能,说明是何种三角形(等边、等腰、直角、一般)并计算其面积。 利用公式area=sqrt(s(s-a)(s-b)(s-c)),s=(a+b+c)/2). #include"math.h" Main() {floata,b,c,area,s; scanf("%f,%f,%f",&a,&b,&c); 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&&a! =b)printf("等腰"); else if(a*a+b*b==c*c||a*a+c*c==b*b||)c*c+b*b==a*aprintf("直角"); elseprintf("一般"); s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c)); printf("\n%f",area);} else printf("no");}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 应用题