C语言程序设计试题及答案(二)_第1页
C语言程序设计试题及答案(二)_第2页
C语言程序设计试题及答案(二)_第3页
C语言程序设计试题及答案(二)_第4页
C语言程序设计试题及答案(二)_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《C语言程序设计》复习题库1、计算下面公式的值。T=l/l!+l/2!+l/3!+……+1!当m=5时的结果(按四舍五入保留3位小数)。(注:所有变量用float数据类型定义!)答案:1.7172、程序填空:用*号输出字母C的图案。#iiicludeHstdio.hM#include"conio.h”main()prmtf(nF');getchQ;}3、8232和9678,它们的个、十、百、千各位数字之和是15的倍数,8+2+3+2=15,9+6+7+8=30。编写程序,求四位数的所有奇数中,这样的数(各位数字之和是15的倍数)的总和。(注:所有变量用long数据类型定义!)答案:15334594、/*下面程序的功能是:计算并输出7以内的最大的10个能被13或者17整除的自然数之和。请改正程序中的错误,并运行,最后给出程序运行的正确结果。(注:只有一处错误!)*/答案:6591#iiiclude<stdio.h>voidmain(){mttotal=0,mc=l,k=7;hitpm[10],count=0;wliile((k>=2)&&mc<=10){if((k%13=0)||(k%17=0)){pm[mc]=k;mc++;}k--;)fbr(k=l;k<=10;k++)total+=pm[k-l];printf(M%d\n”,total);}5、求x=1+1/5+1/7+1/9+…的近似值,直到最后一项的绝对值小于IO。为止。6、计算如下公式的A20值。Al=l,A2=1/(1+A1),A3=l/(1+A2),A4=l/(1+A3),(按四舍五入保留10位小数)。答案:0.61803398507、求E10,16]之间能被7整除的奇数之和。答案:909658、函数mystilen(char*s)的功能是求字符串s的长度。请填空。hitmystiien(chai*s){mtnum=O;whileCJ(;)return(_;}9、[1,5]之间同时满足除以7余5,除以5余3,除以3余1的整数之和。答案:104210、求[1,999]之间所有的素数的个数。答案:14311、编写程序,求满足下列条件的所有四位数ABCD的个数,该四位数是8的倍数,且A+B=B+C,即第1位数加上第2位数等于第2位数加上第3位数。答案:11012、/*数列1,2,1,4,7,12,23…具有这样的特征,从第四项(也就是4)开始,每一项是前三项之和,4=1+2+1,7=2+1+4,12=1+4+7-.o下列程序的功能是求出该数列前10项的和。请改正程序中的错误,并运行修改后的程序,给出程序结果。(注:只有一处错误!)*/答案:311^include<stdio.h>voidmain(){longsum=0,a[30]={1,2,1);mtkj;foi(k=3;k<10;k-H-)a[k]=a[k-l]+a[k-2]+a[k-3];foi(j=lj<=10;j++)sum+=a|j];pnntf("%ld^n",sum);}13、/*求1到20之间的双胞胎数的对数。双胞胎数:两素数差为2称为双胞胎数。例如227和229是一对双胞胎数,它们都是素数旦差为2。*/答案:61#iiiclude<stdio.h>mtprime(intx){mtk;fbr(k=2;k<x;k++)iff)break;if(k==x)return1;elseretuin0;}voidmain()(inta,b,n=0;mtpiiine(mtx);fbr(a=2;a<=1998;a++)(if(prime(a)==l){b=a+2;iR)n++;}}%d\n”,n);}14、编写程序,统计2~4之间的所有满足三个数字之积为42,三个数字之和为12的数的个数。答案:415、有30个学生一起买小吃,共花钱50元,其中每个大学生花3元,每个中学生花2元,每个小学生花1元,问大、中、小学生的人数分配共有多少种不同的解(去掉某类学生数为0的解)?答案:916、爱因斯坦走台阶:有一台阶,如果每次走两阶,最后剩一阶;如果每次走三阶,最后剩两阶;如果每次走四阶,最后剩三阶;如果每次走五阶,最后剩四阶;如果每次走六阶,最后剩五阶;如果每次走七阶,刚好走完.求满足上述条件的最小台阶数是多少?答案:11917、/*求10以内最大的10个素数的和。*/答案:9664#iiiclude<stdio.h>hitprime(longn){longk;foi(k=2;k<=n-l;k++)if()return0;return1;}voidmain(){longtjotal=0,num=0;mtprmie(longn);fbr(t=10;t>=2;t-)()(total=total+t;num++;}if(num==10)break;}printf("\n%ld”,total);}_18、/*求l!+2!+3!+…+7!,7!表示7的阶乘。*/答案:5913#iiiclude<stdio.h>longjc(longx){longk.fac=l;fbr(k=1;;k++)fac*=k;voidmain()longn,sum=0;longjc(longx);foi(n=l;n<=7;n-H-)pnntf(,'\n%ld",sum);}19、求1以内所有完数之和,”完数”是指:一个数如果刚好与它所有的真因子(不包括该数本身)之和相等,如:6=1+2+3,则6就是一个完数。(注:所有变量用int数据类型定义!)答案:865820、/*数列1,2,1,4,7,12,23…具有这样的特征,从第四项(也就是4)开始,每一项是前三项之和,4=1+2+1,7=2+1+4,12=1+4+7-.oT列程序先给出数列的第一项(1)、第二项(2)、第三项(1),再逐步计算其它项并保存在数组a中,最后求出该数列的第25项。请改正程序中的错误,并运行修改后的程序,给出程序结果。(注:只有一处错误!)*/答案:1323525#iiiclude<como.h>^include<stdio.h>^defineN30voidmain(){longa[N];mtk;cliscrQ;a[0]=l;a[l]=2;a[2]=l;for(k=3;kv=20;k++)a[k]=a[k-l]+a[k-2]+a[k-3];pnntf(M%ld\n”,a[k-l]);}21、/*求区间[2,30]中所有回文数的和,回文数是正读与反读都是一样的数,如525,1551。*/答案:87970#iiiclude<stdio.h>mthws(longn){longx=n,t=0,k;wlule(x>0){k=x%10;t=t*10+k;x=x/10;)if()return1;elseretuin0;}voidmain()longk.s=O;mthws(longn);fbr(k=2;k<=20;k++)】f()s=s+k;pnntf(”\n%ld”,s);}22、/*下面的程序是求表达式的值:s=l+l/3+(l*2)/(3*5)+(l*2*3)/(3*5*7)+…+(l*2*3*..・*n)/(3*5*7*...(2*n+l))请将程序补充完整,并给出当n=25时,程序的运行结果(按四舍五入保留10位小数)。*/答案:1.5707963267^include<stdio.h>doublefun(mtn){doubles=L0,t=1.0;mtk;doublertn=1.0;fbr(k=1;kv=n;k++){t=t*k;s=s*(2*k+l);}returnrtn;}voidmain(){doublesum;}23、己知:Sn=2/l+3/2+4/3+・"+(n+l)/n,求Sn不超过50的最大值(按四舍五入的方式精确到小数点后第三位)。答案:49.39524、计算Y=X/l!-X"3/3!+X“5/5!-X"7/7!+……前20项的值(己知:X=2)。要求:按四舍五入的方式精确到小数点后第二位。答案:0.9125、若某正整数平方等于某两个正整数平方之和,称该正整数为弦数。例:3涉+厂2=5“2,则5为弦数,求[131,2]之间最小的弦数。答案:13526、己知X,Y,Z为三个正整数,旦X"2+Y"2+Z"2=25"2,求X+Y+Z的最大值。答案:4327、猴吃桃:有一天小猴子摘下了若干个桃子,当即吃掉一半,还觉得不过瘾,又多吃了一个。第二天接着吃了剩下的桃子中的一半,仍不过瘾,又多吃了一个。以后每天都是吃尚存桃子的一半零一个。到第10天早上小猴子再去吃桃子时,看到只剩下一个桃子了。问小猴子第一天共摘下了多少个桃子。答案:153428、求[1,50]之间的所有整数能构成直角三角形的三边的组数。例如:3*3+4*仁5*5,它们构成直角三角形,所以{3,4,5}作为一组,但{4,3,5}视为跟{3,4,5}相同的一组。答案:2029、15元钱换成1元、2元、5元的票面,问有多少种不同的兑换方法?输出所有的兑换方法。答案:18种30、用迭代法求x等于a开平方的正数值。迭代公式为:xP.-1=l/(2*(xr+a/xn)),要求直到前后两次求出的x的差的绝对值小于10“为止。A的值从键盘输入。31、求最大的水仙花数,所谓水仙花数,指的是一个三位数,其各个数字的立方之和等于该数。答案:40732、一球从1米的高度自由落下,每次落地后反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?答案:299.6093750.09765633、编写程序,完成如下功能,输入8个float类型的实数,分别求最大值和最小值,保留三位小数输出最大值和最小值。34、编写程序输出如下字符图形:@@@@@@@@@@@@@@@@@@@@@•••@@@35、计算:s=f(-30)+f(-29)++f(T)+f(0)+f(l)++f(30)的值。其中函数定义如下:f(x)=(x+1)/(x-2)如果x>l;f(x)=0如果x=0或x=2;f(x)=(x~l)/(x~2)如果x<0o(按四舍五入保留6位小数)答案:65.22301836、编写程序输出如下字符图形(最后一行19颗星):♦**37、企业发放的奖金根据利润提成。利润①低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%:20万到40万之间时,高于20万元的部分,可提成5%:40万到60万之间时高于40万元的部分,可提成3%:60万到1万之间时,高于60万元的部分,可提成1.5%,高于1万元时,超过1万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?38、计算下面公式的值。T=l+l/(2*3)+l/(3*4)+……+l/(m*(m+l)),当m=50时的结果(按四舍五入保留6位小数)。(注:所有变量用double数据类型定义!)答案:1.48039239、程序填空:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。程序分析:利用while语句,条件为输入的字符不为,^include"stdio.h"^include"conio.h"maiiiQchaic;mtletters=0,space=0,digit=0,others=0;prmtf(npleaseinputsomecharacters\nM);while((c=getcharQ)!=r\n*)(iRc>='a'&&cv=,z'||c>='A'&&cv=Z)elseiRc=='')elseif(c>='0'&&cv=9)else)piintff'allinall:chai-%dspace=%ddigit=%dothers=%dW',letters,spacejigit,others);getch();)40、打印出如下图案(菱形)****• 若N=10,求Yo*1304735•• 若N=10,求Yo*1304735****41、求出[2,478]以内的:*467*91*19580(1)最大的素数。*467*91*19580(2)素数数目。(3)所有素数之和。42、已知:N),二跛-底)2/=1N),二跛-底)2/=112(,为奇数) fl2b-=<。为偶数) 尸(,为奇数)(,为偶数)mainQ(iiita,b,c,t;printf(nEntera,b,c:");scanf(”%d%d%d”,::a=b:;:printf(na=%db=%dc=%d\n”,a,b,c):)45、卜.面ftm函数的功能是从a数组中查找值为y的元素;若找到,返回该元素的下标值,若不存在值为y的元素,返回0;数列放在a数组的a[l]到a[n]中,a[0]元素用来作为临时存储单元。请填空。a[],intyiiitn)(mtk=0;a[0]=y;k=n;while()k-;return(;)46、/*下列程序的功能是求出二阶Fibonacci数列前10之和,1,1,2,3,5,8…。请改正程序中的错误,并运行修改后的程序,给出程序结果。(注:只有一处错误!3是第四项,5是第五项。)*/答案:143#iiiclude<stdio.h>voidmain(){longsum=0,a[30]={l』,2};hitk;fbr(k=2;k<10;k++)a[k]=a[k-l]+a[k-2];fbr(k=l;k<=10;k++)sum+=a[k];pnntf(M%ld\n”,sum);}47、20,160]之间的所有偶数的平方和。答案:69438048、求[10,20]之间能被2或3或5整除的数之和。答案:6779549、求8以内的最大的20个素数之和。答案:1451050、求当n=60时下式的和:s=l+l/(1+2)+1/(1+2+3)++1/(1+2+3++n)(按四舍五入保留6位小数)。答案:1.96721451、编写程序:输入x的值,按照下列公式计算cos(x)cos(x)=l-x2/2!+x4/4!-x6/6!+...精确到10%/*C11.717*/main0inti;longjc=l;floats=0;for(i=l;i<=5;i++)jc=jc*i;s=s+l.0/jc;}printfs);}/♦C31533459*/mainO{longi,c=0,t=0,g,s,b,q;for(i=11;i<=9999;i=i+2){g=i%10;s=i/10%10;b=i/1%10;q二i/10;if((g+s+b+q)%15==0){C++;t=t+i;}}printft);}/*C16591*/mainO{inti,s=0,c=0;for(i=7;i>=l;i—)if(i%13==0||i%17==0){c++;s+=i;if(c==10)break;}printfs);}/*C56.058311*/mainO(longi=5;doubles=l;while(l.0/i>=le-5){s=s+l.0/i;i=i+2;}printf("%lf",s);/*C60.6180339850*/mainO{inti;doublea=l;for(i=2;i<=20;i++){a=l.0/(1+a);}printf(z,%.101f〃,a);}/*C790965*/mainO{longi,s=0;for(i=U;i<=16;i=i+2)if(i%7=0)s=s+i;printfs);}/♦C91042*/mainOlongi,s=0;for(i=1;i<=5;i++)if(i%5=3&&i%7=5&&i%3=1)s=s+i;printf("%ld〃,s);}/*C10143*/mainO{intc=0,i,j,p;for(i=1;i<=999;i++){p=l;for(j=2;j<i;j++)if(i%j==0)(p=0;break;}if(p=l)c++;}printfc);}/*CU110*/mainO{intc=0,i,q,b,s;for(i=10;i〈=9999;i=i+8){q二i/10;b=i/1%10;s=i/10%10;if(q+b=b+s)c++;}printfc);}/*C1361*/#include,,fun.c〃main()inta,b,n二0;intprime(intx);for(a=2;a〈=1998;a++)if(prime(a)==l&&prime(a+2)==1)n++;printfn);}/*C144*/mainO{intc=0,i,g,s,b;for(i=2;i<=4;i++){g=i%10;s=i/10%10;b=i/1;if(g+s+b==12&&g*s*b==42)C++;}printfc);}/*C159*/mainO{intd,z,x,c=0;for(d=l:d<=17;d++)for(z=l;z<=25;z++){x=30-d-z;if(x>=0&&d*3+z*2+x=50)C++;}printfc);/*C16119*/mainO{inttj,i,j;for(tj=l;tj>=0;tj++)if(tj%2=l&&tj%3=2&&tj%4==3&&tj%5==4&&tj%6==5&&tj%7==0)break;printftj);}/*C198658*/mainO{inti,s=O,w,j;for(i=l;i<=1;i++){w二0;for(j=l;j<i;j++)if(i%j==O)w+=j;if(w==i)s+=i;}printfs);}/*C201323525*/mainO{longa[25]={l,2,1);inti;for(i=3;i<25;i++)a[i]=a[iT]+a[i-2]+a[i-3];printf(z,%ld,z,a[24]);}/*C221.5707963166*/#defineN24mainOinti,j;doubles=l,si,s2;for(i=l;i<=N;i++){sl=l;s2=l;for(j=l;j<=i;j++){si*二j;s2*=(2*j+l);}s+=(sl/s2);}printf(z,%.101f〃,s);}/*C2349.395*/mainO{inti=l;doubles=0;do{s+=(l+l.0/i);printf(,z\n%0.31f〃,s);i++;}while(s<50);}/*C240.91*/#include<math.h>mainOintx=2,i,j;doublejc(inti);doubley=0,fz;for(i=l;i<=20;i++){fz二pow(-1,i+l)*pow(x,2*i~l);y+=fz/jc(2*i~l);printfC\n%d,%.01f/%.Olf”,i,fz,jc(2*iT));}printf("\n%.21f〃,y);}doublejc(inti){intj;doubler=l;for(j=l;j<=i;j++)r*二j;returnr;}/*C25135*/#include<math.h>mainO{longa,b,c;intxs=0;for(c=131;c<=2;c++){xs=0;for(a=l;a〈c;a++){b=sqrt(c*c~a*a);if(b*b+a*a==c*c)xs=l;break;)if(xs==l){printf("%ld〃,c);break;}}}/*C2643♦/mainO{intd=25;intx,y,z,max二0;for(x=l;x<d;x++)for(y=l;y<d;y++)for(z=l;z<d;z++)if(x*x+y*y+z*z==d*d&&max<x+y+z)max=x+y+z;printfmax);}/*C2820*/#include<math.h>mainO{inta,b,c,n=0;intxs=0;for(c=l;c<=50;c++)for(a=l;a<c;a++)for(b=l;b<a;b++)if(b*b+a*a==c*c)n++;printfn);}/♦C30*/#include<math.h>mainO{doublexl=l.0,x2;doublea;scanf("%lf”,&a);while(1)xl=l.0/2*(xl+a/xl);if(fabs(x2-xl)<=le~5)break;elsex2=xl;}printfxl);}/*C3567.223018♦/mainO{doublef(doublex),s=0;inti;for(i=-30;i<=30;i++)s=s+f(i);printfs);}doublef(doublex){doubley;if(x==0|x==2)y=0;elseif(x>l)y=(x+1)/(x~2);elseif(x<0)y=(x~l)/(x~2);returny;}/*C381.480392*/mainO{doublet=l;intm;for(m=2:m<=50;m++)t=t+l.0/(m*(m+1));printft);}/*C11467,91,19580*/#includez/fun.c〃mainOinti,c=O,s=Otmax;for(i=2;i<=478;i++)if(prime(i)){max=i;C++;s+=i;}printf("%d,%d,%d”,max,c,s);}/*C421304735*/#defineN10mainO(inti;doublea,b,y=0;for(i=l;i<=N;i++){if(i%2==0)(a=i/2.0;b=i*i*i;}else(a=i;b=i*i;}y=y+(a~b)*(a-b);}printfC%lf,z,y);}/♦Cl37*/^defineX0.25#include<math.h>mainO{doubley=l,s=l.28767;inti;for(i=l;y<=s;i++)y=y+(double)pow(X,i)/i;printfi);}/♦C16143*/#include<stdio.h>voidmainO{longsum=0,a[30]={1,1,2};intk;for(k=2;k<10;k++)a[k]=a[kT]+a[k-2];for(k=0;k<=10;k++)sum+=a[k];printfC%ld\nz/,sum);}/♦Cl7694380*/mainO{longi,s=0;for(i=20;i<=160;i+=2)s=s+i*i;printfs);}/*C481466295♦/mainO{longi,s=0;for(i=10;i<=20;i++)if(i%2=01|i%3=0|i%5==0)s=s+i;printfs);}/♦Cl914510*/#includez,fun.c”mainOinti,c=0,s=0;for(i=8;i>=l;i—)if(prime(i)&&c<20){C++;s=s+i;}printf("\n%d",s);}/*C501.967213*/#defineN60mainO{inti;doubles;for(i=l;i<=60;i++)s=s+l.0/((l+i)*i/2);printfs);}/*fun.c自定义函数判断素数*/intprime(intx){intk;for(k=2;k<x;k++)if(x%k==0)break;if(k==x)return1;elsereturn0;}c语言程序设计习题库(含答案)1、设圆半径r=1.5,圆柱iffh=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。#include<stdio.h>main()(floatr,h,Cl,Sa,Sb,Va,Vb;scanf(_"%f”_,&r);scanf(〃岩d〃,_&h_);;Cl=2*3.14*r;Sa=3.14*r*r;Sb=4*Sa;Va=4*3.14*r*r*r/3;Vb=Sa*h;printf(”Cl=%.2fSa=%.2fSb=%.2fVa=%.2fVb=%.2f”,Cl,Sa,Sb,Va,Vb);}一2、输入一个华氏温度,要求输出摄氏温度。公式为c=5(F.32)/9输出要求有文字说明,取位2小数。#include<stdio.h>main()(floatFzc;scanf(!,%f!,z&F);c=5*(F-32)/9;printf(nc=%・2f”,c);}XX<13、有一函数:y=hx-ll<x<10写一程序,输入x值,输出y值。3sllx>10#include<stdio.h>main()(intx,y;printf(n输入x:n);scanf(n%d!,z&x);if(x<l){/*x<l*/y=x;printf(nx=%3dzy=x=%d\nn,x,y);)elseif(x<10){/*1*10*/y=2*x-1;printf(nx=%3dzy=2*x-l=%d\nn,x,y);)else(/*x^lO*/y=3*x-ll;printf(nx=%3dzy=3*x-ll=%d\nHzx#includenstdio.h,Tmain(){intx,y;scanf&x);if(x<l)(y=x;}elseif(x>=l&&x<10)(y=2*x-l;)else(y=3*x-ll;)printf(,1%dl,zy);)#includenstdio.h!,main(){intx,y;scanf&x);if(x<l)(y=x;)elseif(x>=l&&x<10)(y=2*x-l;)else(y=3*x-ll;)printf(,f%d\nn,y);)#includenstdio.h!,main(){intx,y;scanf("%d”,main(){intx,y;scanf("%d”,&x);if(x<l)(y=x;)elseif(x>=l&&(y=2*x-l;)else(y=3*x-ll;)printf(,f%d!,zy);}scanf(n%df,z&x);if(x<l)(y=x;)elseif(x>=l&&(y=2*x-l;)else(y=3*x-ll;}#main(){intx,y;scanf("%d”,&x);if(x<l)y=x;elseif(x>=l&&y=2*x-l;elsey=3*x-ll;printf(,f%d!,zy)},y);x<10)x<10)include!,stdio.hnx<10)4、给定一个不多于5位的正整数,要求:①求它是几位数;②按逆序打印出各位数字。例如原数为321,应输出123。#include<stdio.h>main(){longintnumzm=0;inti=0;scanf(,T%ldnz&num);while(num>0)(i++;/*统计长度*/m=m*10+num%10;num=num/10;}printf(*'数字长度为:;printf(n逆序数字为:%d\nnzm);}5、以下程序实现的功能:求三个数的最大值#include<stdio.h>main()(intazbzc,max;scanf(n%d%d&b,&c);if(a>b)(if(a>c)max=a;elsemax=c;}else(if(b>c)max=b;elsemax=c;}printf(,fmax=%dn,max);}#include<stdio.h>main(){intx,y,z,t=0;scanf(!,%d%d&x,&y,&z);if(x>y){t=y;y=x;x=t;}if(x>z){t=z;z=x;x=t;}if(y>z){t=z;z=y;y=t;)printf(H%d\nnzz);6、输入两个正整数m和n,求其最大公约数和最小公倍数。/*枚举法*/#include<stdio.h>main()(longm,n,i=l,j,s;scanf(n%ld,%ldnz&m,&n);for(;i<=m&&i<=n;i++)(if(m%i=0&&n%i=0)s=i;}if(m>=n)j=m;elsej=n;for(;!(j%m==0&&j%n==0);j++);printf(ns=%ldzj=%ld\nf,zs,j);}#include<stdio.h>main(){inta,b,k,temp,i,p;scanf(”号d,%dlf,&a,&b);if(a>b)temp=b;elsetemp=a;for(i=2;i<=temp;i++){if(a%i==0&&b%i==0)k=i;)printf(fl%d\n!\k);p=a*b/k;printf(f,%d\nHzp);}〃辗转相除¥/#include<stdio.h>main()(intm,nzkzjzp,r=l;scanf(!,%dz%dlfz&n);k=m>n?m:n;j=m>n?n:m;do(r=k%j;k=j;j=r;)while(r!=0);printf(n%dz%d”,kzm*n/k);)〃反复减法〃#include<stdio.h>main()(intm,nzkzj,p,r=l;scanf(!,%dz%d,Tz&m,&n);k=m>n?m:n;j=m>n?n:m;do(p=k-j;if(j>P){k=j;j=p;}elsek=p;}while(p!=0);printf(n%dzkzm*n/k);}7、输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。#includef,stdio.hHmain()(charc;inti=0,j=0,k=0,1=0;while((c=getchar())!='\nz)(if(c>=*A'&&c<=,Z'||c>='a'z')i++;//英文字母统计elseif(c>='O'&&c〈=’9')j++;//数字统计elseif(c=‘')k++;//空格统计else1++;}printf(ni=%d,j=%dzk=%d,l=%d\nn,izjzk,1);}8、求Sn=a+aa+aaa++aa•••aaa(有n个a)之值,其中a是一个数字。例如:2+22+222+2222+22222(n=5),n由键盘输入。#include<stdio.h>main()(intazn;longb=0zsum=0;scanf("%d%d”,&a,&n);for(i=l;i<=n;i++)(b=b*10+a;sum=sum+b;}printf(“匏d”zsum);)9、打印出所有”水仙花数”,所谓”水仙花数”是指一个三位数,其各位数字立方和等于该本身。例如:153是一个水仙花数,因为153=13+53+3\【程序1】#include<stdio.h>main()(intfor(i=1;i<10;i++){m=i%10;n=_i/10%10_;k=i/1;if(_m*m*m+n*n*n+k*k*k=i_)printf(lf%5dn,i);})【程序2】#include<stdio.h>main()(inti,aznzs;for(i=1;i<=999;i++){n=i;s=0;while(n>0)(a=n%10;s+=a*a*a;n/=_10_;)if(_s==i_)printf(,i);)10、一个数如果恰好等于它的因子之和,这个数就称为”完数L例如,6的因子为1、2、3,而6=1+2+3,因此6是”完数”。编程序找出10之内的所有完数,并按下面格式输出其因子:6itsfactorsare1、2、3#include<stdio.h>main()(inta,izm;for(a=1;a<=10;a++)(for(_i=l,m=0_;i<=a/2;i++)if(!(a%i))_m+=i_;if(m==a)printf("%4d",a);))11、利用:丸/4=l-l/3+l/5-l/7+….级数求兀的值,直到最后一项的绝对值小于10-6为止。求绝对值的函数为fabsOo#include<stdio.h>#include<math.h>main()(inti=lzflag=l;doublesum=0.0zs;do{s=_1.0/(2*iT)_;sum+=s*flag;i++;_flag=-flag_;)while(_fabs(s)>le-6_);/**/printf(npi=%ff\__4*sum_);)IK有一分数序列:2/1,3/2,5/3,求出这个数列的前20项之和。#include<stdio.h>#defineN20main()(inti=l;doublex=l,y=2,sum=0;while(_i<=20_)(sum=sum+_y/x_;y=x+y_;x=_y-x_;i++;}printf(!,%f\nnzsum);}12、一球从1米高度自由下落,每次落地后返回原高度的一半,再落下。求它在第10次落地时共经过多少米?第10次反弹多高?#include<stdio.h>main()(intifn=10;doubleh=1,s=1;for(i=2;i<=n;i++){h*=_0.5_;s=_s+h*2_;}printf(,fs=%f,h=%f\n,fzs,h);13、猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。#include<stdio.h>#defineN10main()(inti=l,sum=l;while(i++<N)sum=_(sum+l)*2_;printf(Hsum=%d\nHzsum);}14、用迭代法求。求平方根的迭代公式为:要求前后两次求出的得差的绝对值少于0.1o#include<stdio.h>#include<math.h>main()(floatxOzxlza;scanf(,f%ff,z&a);xl=a/2;do{xO=xl;x1=(xO+a/xO)/2;}while(_xl>le-5_);printf(n%g\n,f,xl);}15、用牛顿迭代法求方程2b-U+3x—6=0在1.5附近的根。#include<stdio.h>#include_<math.h>_#definef(x)2*x*x*x-4*x*x+3*x-6main()(doublexfy;x=_1.5_;do{y=f(x);x=x-y/(6*x*x-8*x+3);}while(fabs(y)>le-6);printf(lfx=%.3f\nf,zx);}16、用二分法求方程2尸-4『+3x-6=0在(I。,io)之间的根#include<stdio.h>#include<math.h>#definef(x)2x*x*x-4*x*x+3*x-6main()(doublexl=-10,x2=10,xzy;do(x=(xl+x2)/2;y=f(x);if(y<0)xl=x;elsex2=x;)while(fabs(y)>le-6);printf(”x=%g\n”,x);}17、以下程序的功能是:输入一个百分制成绩,输出一个五级制成绩等级。例如输入75,输出C。请完成填空#include<stdio.h>main()(intscore;scanf(”_%d_n,&score);switch(_score/10_)(case1:case2:case3:case4:case5:printf(''gradeE\n〃);break_;case6:printf(''gradeD\n,z);break;case7:printf(xxgradeC\n,z);break;case8:printf(''gradeB\n,z);break;case9:printf(''gradeA\n,z);break;_default_:printf(,TErrorinput!\nn);}}18、该程序功能:对x=12,...,10,求f(x)=x*x・5*x+sin(x)的最大值。#include<stdio.h>#include<math.h>#definef(x)x*x-5*x+sin(x)voidmain()(intx;floatmax;max=f(1);for(x=2;x<=10;x++)if(max<f(x))max=f(x);printf(n%f\n!\max);}19、程序功能:输入整数a和b的值,若r+b2大于1,则输出a2+b2百位以上的数字,否则输出两数之和。#include<stdio.h>main()(inta,b,s;scanf&af&b);s=_a*a+b*b_;if(s>1)printf_s/1_);elseprintf(f,%dn,a+b);}20、有1020个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,以下程序统计卖完所需的天数。#include<stdio.h>main()(intday,xlzx2;day=0;xl=1020;while(_xl>0_)(x2=_xl/2-2_;xl=x2;day++}printf("day=%dM,day);}21、找出整数的所有因子#include<stdio.h>main()(inti,x;scanf("%d”,&x);i=l;for(;_i<=x/2_;)(if(x%i==0)printf(%dnzi);i++;})22、统计用数字0-9可以组成多少个各位上的数字没有重复的3位偶数。#include<stdio.h>main()(intn=0zj,k;for(i=1;i<=9;i++)for(k=0;k<=8;_k+=2_)if(k!=i)for(j=0;j<=9;j++)if(_j!=i&&j!=k_)n++;printf("n=%d\n”,n);}23、用1元换成1、2、5元的所有兑换方案。#include<stdio.h>main()(inti,j,k,1=0;for(i=0;i<=20;i++)for(j=0;j<=50;j++){k=_(1-i-2*j)/5_;if(_i+j*2+k*5=1_)(printf(u%2d%2d%2d”1=1+1;if(l%5==0)printf("\n");}24、输出1.1之间满足每位数的乘积大于每位数的和的数#include<stdio.h>main()(intn,k=l,s=O,m;for(n=l;n<=1;n++)(k=l;s=0;_m=n;while(_m>0_){k*=m%10;s+=m%10;ni/=10_;}if(k>s)printf(zn);}25、从3个红球、5个白球、6个黑球中任意取出8个球,且其中必须有白球,输出所有可能的方案。#include<stdio.h>main()(inti,j,k;for(i=0;i<=3;i++)for(_j=l_;j<=5;j++){k=8-i-j;if(_k>=0_)printf(u%3d%3d%3d\n”,i,j,k);}}26、以下程序的功能是:判断一个四位数是否满足这样的条件:它的9倍刚好是它的反序数。反序数是指整数各个位上的数字逆序所形成的整数。请完成程序的填空。#include<stdio.h>main()(inti,a,bzc,dzm;for(i=10;;i++)(a=_i%10_;b=i/10%10;c=i/1%10;d=i/10;m=_a*10+b*1+c*10+d_;if(m=i*9_)_break_;}printf(ni=%df,zi);}27、以下程序完成两整数的交换。#include<stdio.h>main()(inta,b;printf(''请依次输入a,b的值:〃);scanf%d,zz__&a,&b_);a=a+b;b=a~b;_a=a-b_;printf(''交换后:a=%d,b=%dz\azb);}28、以下程序的功能是判断输入的年份是否为闰年,若是则输出〃yes〃,否则输出〃No〃°#include<stdio.h>main()(intyear;scanf(肖d〃,&year);if(_year%4==0Iyear%4==0&&year%1!=0_)printf(、'yes〃);elseprintfCNoz,);)29、以下程序利用冒泡排序法对输入的10个数进行排序。#include<stdio.h>#defineN10voidmain()(inta[n];inti,j,t;printf("input10numbers:\n");for(i=0;i<N;i++)scanf__&a[i]_);printf(n\nn);for(j=0;j<N-l;j++)for(i=0;i<_N-j-1_;i++)if(_a[i]>a[i+l]_)(t=a[i];a[i]=a[i+l];a[i+1]=t;)printf(f/thesortednumbers:\nf,);for(i=0;i<N;i++)printf(%d",a[i]);printf(r,\n");)30、用筛法求1之内的素数。筛法素数的思想是:1、取最小的数2,并声明它是素数,同时筛去它及它的倍数。2、取未筛去数中最小的数,并声明它是素数,同时筛去它及它的倍数。3、重复步骤2至筛中无数,得到所有的素数。#include<stdio.h>#defineM1//范围#defineN((M+l)/2)//奇数的个数voidmain()(inti,j,a[N];a[0]=2;for(i=l;i<N-l;i++)/*初始数组实现第一步筛选*/a[i]=2*i+l;for(i=l;i<N-l;i++)/*第二步筛选*/if(_a[i]!=0_)for(j=i+l;j<N;j++)if(_a[j]%a[i]=0_)/*倍数时置零筛去*/a[j]=0;printf(u\nTheprimerare[2-%d]:\nH,M);for(i=0,j=0;i<N;i++){/★显示得到素数*/if(_a[i]!=0_){printf(lf%5df\a[i]);if((++j)%10==0)/*十个数换行*/printf(n\nH);})getch();)31、用选择法对10个整数从小到大排序。#include<stdio.h>#defineN10main()(inta[N],i,j,k,t;for(i=0;i<N;i++)scant("君d",&a[i]);for(i=0;i<N-l;i++){k=_i_;for(j=i+l;j<N;j++)if(a[j]<a[k])k=_j_;if(_a[i]>a[k]_){t=a[k];a[k]=a[i];a[i]=t;))for(i=0;i<N;i++)printf(Fd”,a[i]);)32、求一个NXN矩阵主对角线元素、次对角线之和。#defineN3#include<stdio.h>main()(inti=0,j=0,a[N][N],51=0,s2=0;for(i=0;i<N;i++)for(j=0;j<N;j++)scanf(,f%d,fz&a[i][j]);for(i=0;i<N;i++)for(j=0;j<N;j++)(if(_i=j_)sl+=a[i][j];//主对角线if(_i+j=N-l_)s2+=a[i][j];〃次对角线}printf(Hsl=%d,s2=%d\nf,rsi,s2);)33、已有一个已排好的数组今输入一个数要求按原来排序的规律将它插入数组中。#defineN10#include<stdio.h>main()(inti,t,a[N]={1,7,8,17,23,24,59,62,101};scanf(n%df,z&t);for(i=N-2;i>0;i--){if(t<a[i])_a[i]=a[iT]_;elsebreak;a[i+1]=_t_;for(i=0;i<10;i++)printf(f,%5dnza[i]);)34、将一个数组的值按逆序重新存放,例如,原来顺序为:8,6,5,4,lo要求改为:1,4,5,6,8©#include<stdio.h>#defineN11main()(inti,a[N],tmp;for(i=0;i<N;i++)scanf&a[i]);for(i=0;_i<N/2_;i++)(tmp=a[i];a[i]=_a[N-iT]_;a[NTT]=tmp;)for(i=0;i<N;i++)printf(lf%5dnza[i]);)35、打印“魔方阵”,所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为816357492要求打印出由1〜if的自然数构成的魔方阵。#defineN3#include<stdio.h>main(){intizj,kza[N][N];/*初始化魔方阵一置为0,作为有无数字的判断*/for(i=0;i<N;i++)for(j=0;j<N;j++)a[i][j]=_0_;j=N/2;a[0][j]=l;/*存放第一个数字*//*存放2n*n*/for(k=2;k<=N*N;k++)(i—;//数存放前一数行数减1、列数加1—j+=l_;if(i<0&&j>N-l){//到达右上角的位置i=i+2;j—;}else{if(i<0)i=_n-l_;//上一数的行数为0,下一数的行数为n-lif(j>N-l)j=0;//上一数的列数为n-1时,下一数的列数为0}if(_a[i][j]!=0_){〃若下一数的位置上己经有数字,//则下一数存到上一个数行数加1的位置i=(i+2)%N;j=(j-1+N)%N;}a[i][j]=_k_;//填数}for(i=0;i<N;i++){//输出魔方阵printf(n");for(j=0;j<N;j++)printf(n%4dn,a[i][j]);printf(H\n\nH);})36、找出一个二位数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小,也可能没有鞍点。#include<stdio.h>#defineM5#defineN4main(){inta[M][N],i,j,x,y,k,max,min;//x,y分别是用来记录鞍点的位置intflag=0;//用于指示是否存在鞍点for(i=0;i<M;i++)for(j=0;j<N;j++)scanf(,r%d!,z&a[i][j]);for(i=0;i<M;i++)(max=a[i][0];y=0;//先默认第一个数是最大值for(k=l;k<N;k++)if(max<a[i][k])(y=k;_max=a[i][k]_;}min=a[i][y];x=i;〃先默认第一个数是最小值for(k=0;k<5;k++)if(min>a[k][y])(x=k;_min=a[k][y]_;}if(_i=k_){printf(*'a[%d][%d]=%d是鞍点\n”,x,y,a[x][y]);flag=l;)}if(flag==0)printf(''不存在鞍点\nf,);}37、有个15数按由小到大顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数组中第几个元素的值。如果该数不在数组中,则打印出”无此数”#include<stdio.h>#defineN15main()(intlow,high,mid,x;inta[N]={l,4,9,13,21,34,55,89,144,233,377,570,671,703,812};low=0zhigh=N-l;scanfz&x);do{mid=(1ow+high)/2;if(a[mid]==x)break;elseif(a[mid]<x)low=_mid+1_;elsehigh=_mid-1_;}while(low<=high);if(low<=high)printf(Hxisthe%dthnumber\nMzmid+1);elseprintf(,fxnotexistinthearray\nn);}38、输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。#include<stdio.h>voidmain()(charstring[81];inti,num=0,word=0;charc;!二'\0'!二'\0' ;i++)for(i=0;(c=string[i])if(c=='')word=0;elseif(word==0)(word=_1_;num++;)printf(Thereare%dwordsintheline.\n,f,num);}39、输出10行的杨辉三角形。1111211331#include<stdio.h>#defineN10main()(inti,n,k,a[N]={1};printf(%5d\n”,a[0]);for(i=l;i<N;i++){for(j=i;j>=l;j—)a[j]=_a[j]+a[jT]_;for(j=0;_j<=i_;j++)printf(%5d”,a[j]);printf("\n”);)}40、以下程序的功能是:从键盘输入一个整数n(nW10)和n个整数,存入数组a中,先依次输出各个数组元素的值,然后找出最大值,并输出。#include<stdio.h>main()(inta[10],n,i,j,__max_;printf(”输入n=n);scanf(n%dnz&n);printf(”输入各数组元素:”);for(i=0;i<n;i++)scanf(n%d,fz_&a[i]_);printf输出各数组元素:H);for(_i=0;i〈n;i++_)printf(n%d”,_a[i]_);printf(n\nfl);max=_a[0]_;for(j=l;j<n;j++)if(a[i]>max)_max=a[i]_;printf(”最大值:%d\nn,max);}41、以下程序实现的功能是:将字符串s中所有的字符c删除。请完成程序填充#include<stdio.h>#include<ctype.h>main()(chars[80];inti,j;gets(s);for(i=j=0;_s[i]!='\0'_;i++)if(s[i]!=,cf)(s[j]=s[i];_j++_;}s[j]=,\Of;puts(s);}42、以下程序的功能是:按顺序读入10名学生4门课程的成绩,计算出每位学生的平均分并输出,请完成程序填充。#include<stdio.h>#defineN10main()(intnzk;floatscore,sum,ave;for(n=l;n<=N;n++){TOC\o"1-5"\h\zsum=0;for(k=l;k<=4;k++){scanf(n%f,fzsscore);sum+=score;}sum/=4;printf("NO.%d:%f\nnzn,ave);}}43、本程序的功能是:输入一串字符,将字符串中的字符反序输出。#include<stdio.h>#include<string,h>main()(inti,jzk;charstr[80];gets(str);for(i=0,j=_n~l_;i<j;i++zj一){k=str[i];str[i]=str[j];str[j]=k;}puts(_str_);}44、求方程ax2+bx+c=0的根,用三个函数分别求当bMac大于0、等于0、和小于0时的根,并输出结果。从主函数输入a、b、c的值。#include<stdio.h>#include<math.h>voiddoubleRoots(doublea,doubledoublec)(doublexl,x2,delta;delta=_b*b-4*a*c_;xl=(-b+sqrt(delta))/(2*a);x2=(-b-sqrt(delta))/(2*a);printf(HEquationhastwodifferentroots:\nn);printf(nxl=%gzx2=%gnzxl,x2);}voidSingleRoot(doublea,doublebzdoublec)(doublexl;xl=-b/2/a;printf("Equationhastwoequalroots:\nn);printf(f,xl=x2=%gf,zxl);}voidNoRoot(void)(printf(HNorealrootfoundfortheequationXn11);}main()(doublea,bzc,delta;scanf&a,&b,&c);delta=b*b-4*a*c;if(delta>0)doubleRoots(a,b,c);elseif(delta<0)_NoRoot()_;elseSingleRoot(a,b,c);}45、写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的消息。#include<stdio.h>#include<math.h>voidIsPrime(_intn_)(inti;intk=sqrt(n);for(i=2;_i<=k_;i++)if(n%i==0)break;if(i>=k+l)printf(H%disPrimenumber\n'\n);elseprintf(n%disnotPrimenumberXn11,n);}main()(intn;scanfz&n);;IsPrime(n);)46、用牛顿迭代法求根。方程为ax3+bx2+cx+d=0,系数a,b,c,d由主函数输入。求x在1附近的一个实根。求出后由主函数输出。#include<stdio.h>#include<math.h>doubleEquationRoot(doubleazdoubleb,doubleczdoubled)(doublexzy;x=l;do{y=a*x*x*x+b*x*x+c*x+d;x=x-y/(3*a*x*x+2*b*x+c);)while(_fabs(y)>le-6_);return_x_;)main()(doublea,b,c,d,x;scanf(,f%lf%lf%lf%lf&a,&b,&c,&d);x=EquationRoot(a,b,c,d);printf(nx=%g,f,x);)47、输入10个学生5门课的成绩,分别用函数求:①每个学生平均分;②每门课的平均分;1x③《出最高分所对应的学生和课程;④求平均分方差:5=—(j)L其中X]为nJn一学生的平均分。#include<stdio.h>#defineM5#defineN10voidEachStudentEverageMark(floata[][]zintm,intn){/★求每个学生的平均分。m-学生数,n-课程数*/intizj;floatsum;for(i=0;ion;i++)(sum=0・0;for(j=0;j<n;j++)sum+=a[j][i];printf(Haveragemarkofthe%dthstuis%g\nH,i+lzsum/n);))voidEachCourseEverageMark(_floata[][]_,intm,intn)(/*每门课的平均分*/~~~~intizj;floatsum;for(i=0;i<n;i++)(sum=O・0;for(j=0;j<m;j++)sum+=a[i][j];printf(Haveragemarkofthe%dthstuis%g\nnzi+lzsum/n);}}voidMaxScore(floata[][],intm,intn)(/*找出最高分所对应的学生和课程*/intfloatmax=a[0][0];s=0zt=0;for(i=0;i<n;i++)for(j=0;j<m;j++){if(max<a[i][j])(max=a[i][j];s=i;t=_j_;})printf(11the%dthcourseandthe%dthstuhasthemax\n'\szt);}voidAveragevariance(floata[][],intm,intn)(/*求平均分方差*/floatdelta,ave,avesq=0,avesum=0;intizj;for(i=0;i<m;i++)(ave=0;for(j=0;j<n;j++){ave+=a[j][i];)ave/=n;avesq+=ave*ave;avesum+=ave;}delta=avesq/n~avesum*avesum/n/n;printf(nvarianceofthe%dthstuis%g\nn,i+lzdelta);}main()(floata[M][N];intizj;for(i=0;i<M;i++)for(j=0;j<N;j++)scanf(n%fn,&a[i][j]);EachStudentEverageMark(a,M,N);EachCourseEverageMark(a,M,N);MaxScore(a,M,N);Averagevariance(a,M,N);}48、写几个函数:①输个职工的姓名和职工号;②按职工号由小到大顺序排序,姓名顺序也随之调整;③要求输入一个职工号,用折半法找出该职工的姓名,从主函数输入要查找的职工号,输出该职工姓名。#include<stdio.h>intnum[1];//职工号charname[1][1];〃职工姓名intcount=0;voidinformationinput(void){//职工信息输入intizn;printf(nhowmanydoyouwanttoinput:\nH);scanfz&n);printf(npleaseenterthenameandnumbers:\nn);for(i=count;i<n;i++)(printf("%d:”,i-count);scanf(n%sn,name[i]);scanf(n%dn,&num[i]);}count+=n;}voidsorting(){〃按职工号进行排序inti,j,t;charstr[1];for(i=0;i<count;i++)for(j=0;j<count-i-l;j++)(if(num[j]>num[j+1])(t=num[j];strcpy

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论