编程题练习.docx
- 文档编号:8376559
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:41
- 大小:24.04KB
编程题练习.docx
《编程题练习.docx》由会员分享,可在线阅读,更多相关《编程题练习.docx(41页珍藏版)》请在冰豆网上搜索。
编程题练习
1、主函数中通过键盘输入年份,调用函数fun判断该年是否为闰年。
#include
fun(intyear)
{intflag;
/**********Program**********/
/**********End**********/
}
main()
{intyear,np;
printf("Pleaeinputayear:
");scanf("%d",&year);
np=fun(year);
if(!
np)
printf("%disnotaleapyear\n",year);
else
printf("%disaleapyear\n",year);
}
答案
if(year%400==0)flag=1;
elseif(year%4!
=0)flag=0;
elseif(year%100!
=0)flag=1;
elseflag=0;
return(flag);
2、编写函数fun其功能是:
根据整型参数n,计算如下公式a1=1,a2=1/(1+a1),a3=1/(1+a2),……an=1/(1+a(n-1))数列的第n项。
#include"stdio.h"
#include"conio.h"
floatfun(intn)
{/**********Program**********/
/**********End**********/
}
main()
{intm;
printf("Enterm:
");
scanf("%d",&m);
printf("\nTheresultis%f\n",fun(m));
}
答案
floata=1;inti;
for(i=1;i a=1.0/(1+a); returna; 3、求表达式的前20项之和。 程序的运行结果为1.950000。 111 S=1+——+——+......+———— 1*22*3n*(n+1) #include floatfun(intn) {inti; floats,t; /**********Program**********/ /**********End**********/ return(s); } main() {floats; s=fun(20); printf("%f\n",s); } 答案 s=0; t=1; for(i=1;i<=n;i++) {s=s+t; t=1.0/(i*(i+1)); } 4、编写函数fun,函数的功能是: 求一个四位数的各位数字的立方和。 #include"stdio.h" intfun(intn) {/**********Program**********/ /**********End**********/ } main() {intk; k=fun(1234); printf("k=%d\n",k); } 答案: intd,k,s=0; while(n>0) {d=n%10; s+=d*d*d; n/=10; } returns; 5、编写函数fun,功能是: 用下面的和式求圆周率的近似值。 直到最后一项的绝对值小于等于eps。 π111 —=1-—+—-—+... 4357 运行结果: pi=3.141397 #include"math.h" #include"stdio.h" floatfun(floateps) {inti=1; floats=0,t=1,p=1; /**********Program**********/ /**********End**********/ } main() {printf("pi=%f\n",fun(0.0001)); } 答案: while(fabs(t)>eps) {s=s+t; p=-p; i=i+2; t=p/i; } returns*4; 6、编写函数fun,功能是求如下表达式: 111 S=1+——+———+......+——————— 1+21+2+31+2+3+......+n 如: n=5运行结果: 1.666667 #include"stdio.h" floatfun(intn) {inti,j; floatt,s=0; /**********Program**********/ /**********End**********/ } main() {intn; printf("Pleaseinputanumber: "); scanf("%d",&n); printf("%10.6f\n",fun(n)); } -------------------------------------------------- 答案 for(i=1;i<=n;i++) {t=0; for(j=1;j<=i;j++) t=t+j; s=s+1/t; } returns; 7、编写函数fun,函数的功能是: 求一分数序列2/1,3/2,5/3,8/5,13/8,21/13…的前n项之和。 每一分数的分母是前两项的分母之和 每一分数的分子是前两项的分子之和 例如: 求前20项之和的值为32.660259。 #include"stdio.h" floatfun(intn) {/**********Program**********/ /**********End**********/ } main() {floaty; y=fun(20); printf("y=%f\n",y); } 答案: inti; floatf1=1,f2=1,f3,s=0; for(i=1;i<=n;i++) {f3=f1+f2; f1=f2; f2=f3; s=s+f2/f1; } returns; 8、编写函数fun求sum=d+dd+ddd+……+dd...d(n个d),其中d为1-9的数字。 例如3+33+333+3333+33333(此时d=3,n=5),d和n在主函数中输入。 #include"stdio.h" main() {intd,n; longsum,fun(); printf("d="); scanf("%d",&d); printf("n="); scanf("%d",&n); sum=fun(d,n); printf("sum=%ld\n",sum); } longintfun(intd,intn) {/**********Program**********/ /**********End**********/ } 答案: longints=0,t=0; inti; for(i=1;i<=n;i++) {t=t+d; s=s+t; d=d*10; } returns; 9、编写函数fun,函数的功能是: 求1到100之间的偶数之积。 #include"stdio.h" doublefun(intm) {/**********Program**********/ /**********End**********/ } main() {printf("ji=%f\n",fun(100)); } 答案 doubley=1; inti; for(i=1;i<=m;i++) if(i%2==0)y*=i; returny; 10、编写函数fun求1! +2! +3! +……+n! 的和,在main函数中由键盘输入n值,并输出运算结果。 例如: 若n值为20,则结果为268040729。 #include floatfun(intn) {/**********Program**********/ /**********End**********/ } main() {inti,n; longintresult; scanf("%d",&n); result=fun(n); printf("%ld\n",result); } 答案 inti; floatf=1,s=0; for(i=1;i<=n;i++) {f=f*i; s=s+f;} returns; 11、调用函数fun判断一个三位数是否是"水仙花数"。 在main函数中从键盘输入一个三位数,并输出判断结果。 请编写fun函数。 所谓"水仙花数"是指一个3位数,其各位数字立方和等于该数本身。 例如,153是一个水仙花数,因为153等于1的立方加上5的立方加上3的立方之和。 #include"stdio.h" intfun(intn) {/**********Program**********/ /**********End**********/ } main() {intn,flag; scanf("%d",&n); flag=fun(n); if(flag) printf("%d是水仙花数\n",n); else printf("%d不是水仙花数\n",n); } 答案 intbw,sw,gw; bw=n/100;sw=(n-bw*100)/10;gw=n%10; if(n==bw*bw*bw+sw*sw*sw+gw*gw*gw)return1; elsereturn0; 12、编写函数fun其功能是: 判断一个整数w的各位数字平方之和能否被5整除,可以被5整除则返回1,否则返回0。 #include"stdio.h" #include"conio.h" intfun(intw) {/**********Program**********/ /**********End**********/ } main() {intm; printf("Enterm: "); scanf("%d",&m); printf("\nTheresultis%d\n",fun(m)); } 答案 intk,s=0; do {s=s+(w%10)*(w%10); w=w/10; }while(w! =0); if(s%5==0)k=1; elsek=0; return(k); 13、编写函数fun其功能是: 计算出k以内最大的10个能被13或17整除的自然数之和。 (k〈3000)。 #include"stdio.h" #include"conio.h" intfun(intk) {/**********Program**********/ /**********End**********/ } main() {intm; printf("Enterm: "); scanf("%d",&m); printf("\nTheresultis%d\n",fun(m)); } 答案 inta=0,b=0,j; while((k>=2)&&(b<10)) {k--; if((k%13==0)||(k%17==0)) {a=a+k;b++;} } returna; {t=a[j];a[j]=a[j+1];a[j+1]=t;} 14、编写函数fun其功能是: 根据整型形参m,计算如下公式的值: y=1/2! +1/4! +...+1/m! (m是偶数) #include"stdio.h" doublefun(intm) {/**********Program**********/ /**********End**********/ } main() {intn; clrscr(); printf("Entern: "); scanf("%d",&n); printf("\nTheresultis%1f\n",fun(n)); } 答案 doubley=0.0; inti,j; doubles=1; for(i=2;i<=m;i+=2) {for(j=i-1;j<=i;j++) s=s*j; y=y+1.0/s; } returny; 15、从键盘输入一个大于3的整数,调用函数fun判断其是否素数,然后在main函数中输出相应的结论信息。 例如: 7是素数,8不是素数。 请编写fun函数。 素数是仅能被1和自身整除的数 #include"stdio.h" main() {intm,flag; printf("inputaninteger: "); scanf("%d",&m); flag=fun(m); if(flag) printf("%disaprime.\n",m); else printf("%disnotaprime.\n",m); } intfun(intn) {/**********Program**********/ /**********End**********/ } 答案 inti; intj; j=1; if(i<0)j=0; for(i=2;i {if(n%i==0)j=0; } returnj; 16、请编写函数fun,它的功能是: 判断m是否为素数。 主函数的功能是: 求出100到200之间的素数的个数。 #include"stdio.h" main() {intm,k=0; for(m=100;m<200;m++) if(fun(m)) {printf("%4d",m); k++; if(k%5==0)printf("\n"); } printf("k=%d\n",k); } intfun(intm) {/**********Program**********/ /**********End**********/ } 答案 inti,k=1; if(m<=1)k=0; for(i=2;i if(m%i==0)k=0; returnk; 17、编写函数fun其功能是: 求给定正整数n以内的素数之积。 (n<28) #include"stdio.h" #include"conio.h" longfun(intn) {/**********Program**********/ /**********End**********/ } main() {intm; printf("Enterm: "); scanf("%d",&m); printf("\nTheresultis%ld\n",fun(m)); } 答案 longi,k; longs=1; for(i=2;i<=n;i++) {for(k=2;k if(i%k==0)break; if(k==i)s=s*i; } returns; 18、编写函数fun,函数的功能是: 计算n门课程的平均值,计算结果作为函数值返回。 例如,若有5门课程的成绩是: 92,76,69,58,88,则函数的值为72.599998。 #include"stdio.h" floatfun(inta[],intn) {/**********Program**********/ /**********End**********/ } main() {inta[]={92,76,69,58,88}; printf("y=%f\n",fun(a,5)); } 答案 inti; floaty=0; for(i=0;i y+=a[i]; y=y/n; returny; 19、求一批数中小于平均值的数的个数。 #include intaverage_num(inta[],intn) {/**********Program**********/ /**********End**********/ } main() {intn,a[100],i,num; clrscr(); scanf("%d",&n); for(i=0;i scanf("%d",&a[i]); num=average_num(a,n); printf("thenumis: %d\n",num); } 答案 inti,sum=0,k=0; floataverage; for(i=0;i sum=sum+a[i]; average=sum*1.0/n; for(i=0;i if(average>a[i])k++; return(k); 20、从键盘为一维整型数组输入10个整数,调用fun函数找出其中最小的数,并在main函数中输出。 请编写fun函数。 #include"stdio.h" intfun(intx[],intn) {/**********Program**********/ /**********End**********/ } main() {inta[10],i,min; for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<10;i++) printf("%3d",a[i]); printf("\n"); min=fun(a,10); printf("%d\n",min); } 答案 intmin,i; min=x[0]; for(i=1;i {if(x[i] returnmin; 21、编写函数fun,函数的功能是: 找出一批正整数中的最大的偶数。 #include"stdio.h" intfun(inta[],intn) {/**********Program**********/ /**********End**********/ } main() {inta[]={1,2,9,24,35,18},k; k=fun(a,6); printf("max=%d\n",k); } 答案 inti,amax=-1; for(i=0;i if(a[i]%2==0)if(a[i]>amax)amax=a[i]; returnamax; 22、程序的功能是: 把20个随机数存入一个数组,然后输出该数组中的最大值。 其中确定最大值的下标的操作在fun函数中实现,请给出该函数的定义。 #include"stdio.h" #defineVSIZE20 intvector[VSIZE]; intfun(intlist[],intsize) {/**********Program**********/ /**********End**********/ } main() {inti; clrscr(); for(i=0;i {vector[i]=rand(); printf("Vector[%d]=%6d\n",i,vector[i]); } i=fun(vector,VSIZE); printf("\nMaxnum: Vector[%d]=%6d\n",i,vector[i]); } 答案 inti,max=0; for(i=1;i if(list[max] max=i; returnmax; 23、求一批数中最大值和最小值的差。 intmax_min(inta[],intn) {/**********Program**********/ /**********End**********/ } #defineN30 #include"stdlib.h" #include"stdio.h" main() {inta[N],i,k; clrscr(); for(i=0;i a[i]=random(51)+10; for(i=0;i {printf("%5d",a[i]); if((i+1)%5==0)printf("\n"); } k=max_min(a,N); printf("theresultis: %d\n",k); } 答案 inti,max,min; max=min=a[0]; for(i=1;i if(a[i]>max)max=a[i]; elseif(a[i] return(max-min); 24、给定n个数据,求最大值出现的位置(如果最大值出现多次,求出第一次出现的位置即可)。 #include intstation(ints[],intn) {/**********Program**********/ /**********End**********/ } main() {inta[100],n,i,t; clrscr(); scanf("%d",&n); for(i=0;i scanf("%d",&a[i]); t=station(a,n); printf("themax_valuepositionis: %d\n",t); } 答案 inti,k; k=0; for(i=1;i<=n;i++) if(s[i]>s[k])k=i; return(k+1); 25、从键盘为一维整型数组输入10个整数,调用fun函数找出其中最小的数,并在main函数中输出。 请编写fun函数。 #include"stdio.h" intfun(intx[],intn) {/**********Program**********/ /**********End**********/ } main() {inta[10],i,min; for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<10;i++) printf("%3d",a[i]
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编程 练习