《经典的113道c语言题目及代码解释.docx》由会员分享,可在线阅读,更多相关《经典的113道c语言题目及代码解释.docx(27页珍藏版)》请在课桌文档上搜索。
1、1 .输入两个正整数,m和n,求其最大公约数和最小公倍数,#inc1.udcvoidmain()Iinthcftint.ini):尸函数声明*/int1.cd(intjntjnt):/函数声明47intu,vhj;Prin1.frP1.easeinput(wonumbers:n*);scanft%d.%dM.&u,&v);h=hcf(u.v):Prin1.frHCF=%dn*h);I=Icd(Uxh);Prin1.T1.C.D=%dJ):)in(hcf(incujntv)IiniUr:if(vu)(t=uu=vv=ujwhi1.e(r=u%v)!=O)(u=vzv=r:)rcturn(v);i
2、m1.cd(i11u.intv.inth)Ircturn(u47);2 .输入一行字符,分别统计出其中字母、空格、数字和其他字符的个数,Winc1.udcintIetteGdigitvSpacc,others;voidmain()Ivoidcount(char11):chartcxS();PrinifCT1.easeinputswing:nM);gc4s(ex1.);Printf(string:5):PUtSaCt);Ieuer-O;digi=O:SP1.KX=0:Othcrs=O;CoUn1.(IeX。;prin1.ftM1.e1.1.er:%d.digi(:,iid.space:%d.o1
3、.hcrs:%(fne.1.e1.ter.digi1.spaceA1.hers):voidcoun1.(charstr()Iinti;if=,asiri(s(ri)=Wstr(!1.1.etter+:c1.scif(sir|iJ=(r&sir|i|3 .输入一个正整数求出它是几位数:输出原数和位数C*inc1.deintdigit:voidmain()Ivoidcount(char();chartext(80:printfC*P1.easeinputnumbcrsn*);gcu(cxt);PriInfrNumbersAn,*);puts(iext);digit=O;count(cx();Pri
4、n1.frdigit%ddigi1.);voidcount(charstr)inii;for(i=0istr(i)!=0,str=,9,)digit;4 .钻入一个正整数.输出原数并逆序打印出各位数字#inc1.udcvoidinvef1.1.ongI11u1.ong);voidnain()Iunsigned1.ongiNumber;PriiHfrP1.easeinputanuinber:nH);scanf(%1.d,.=(Mkx=9)primtr%dn,x);e1.se(printf(,%d.x%10);invcrt1.ongInt(x1.O);J)5 .从键盘上输入假设干学生的一门课成绩,
5、统计并输出最高成绩和最低成绩及相应的序号,当输入负数时结束输入.6 .从键盘上输入假设干学生的一门课成绩,计算出平均分,当输入仪数时结未输入。将结果输出。7 .求1.!+2!+3!+20!.凡结果输出.#inc1.udcvoidmain。If1.oats=O.t=1.;intn;fbr(n=1.;n=20;n+)(t=tn:S=S1H;)Prin1.frI!2!+3!+.+20!-%Cw:8 .打印以以下图案:案Winc1.devoidnain()Iinti,j;PrinIfCThepictureisnw);sia1.iccharpiciurc(4J7=(V7V*a.1t1.t,於,:*,11
6、.I1.1.1.JIfor(i=0;i=3;i+)fortj=0=6)printf(%cvicvoidmain()i11ti.j;Printf(Thepictureis:n*);charpicturc4114=(*hIJ案:*:拿.於产,:,和).fr(i=OJ=3zi+)for(j=OJ=3)printf(%cpicturei);Primfer):J10 .求以下试子的值,112+1314+1/99-1/100.将结果输出。Winc1.udcvoidmain()f1.oatsum=1.0.1.,s=i:inti;for(i三Ui:11 .打印出100999之间的所有水仙花数。析nc1.ude
7、stdi.hvoidnain()inti.j.k.n:Pri1.Mf1.n00799之间的所有水仙花数am:W);fbr(n=100n12 .求Sn=aaa*aaaaaa之tf1.,n,a由雄盘输入C*inc1.devoidmain()Iinta,n.i=1.3n=jn=();prinif(*a.n=:H);SCanfr%d%d”.&a&n):whi1.c(iPrin1.R“d+aa+aaa+.+aa.a-%dn,*.sn):)13 .打印以以下图案:*拿分*衾*衾#inc1.uckvoidmain()JChara1.7=咒叫*.f产);inti.j.k:charspace=,:Prin1.f
8、rThCpicturefbf(i=0u4u+)prinf(n);primf();for(j=1.y=ij+)printftj%c*,space);fortk=0;k7;k+)Prin1.fr%cf1.:JprintfCn);14 .打印以以下图案:112112321123432I15 .打印以以下图案:123432112321121I16 .编写一个统计学生成绩程序,完成以下功能:输入4个学生的2门课成绩:求出全班的总平均分.将结果输出。#inc1.udeWdcfincN4structstudentIcharnum(3:charnamc4;f1.oatscorc2;f1.oatavr;s1.u
9、N:voidmain()Iintij;f1.oatsum,avcragc;fx(i=OiiNii)产输入数据军(Printtrinputscoresofstudcnt%dznJ1.);prinif(*namc:w);$canfC%sM.$tui|.nan)e);fortj=02+)PrinWSCore%d:J+1);scanf(,%stui.scorcyj):Iavcragc=0;/计口/for(i=OiNJ)(SUm=O:fortj=0y2zj)sum=su(i.scorc(j;stui,avr=sun2;average+=stuij.avr:)average/=N;rinfC,Namesc
10、oreIscoe2average”);fr(i=OJNi+)(primf(N%5s%IOsN.stui|.numt$tui.namc);for(j=0rcj);printiV%8.2fn*.stu|i|.avr);Iprinif(,average=%5.2nnM.average);17 .打印以以下图案:*号*8qindudcvoidmain()JChara51=F叫*.*;*:inti,j.k;charspace=,:printftThcpicturei$:w);fb(i=0d5u+)(printf(n):printf(Xfor(j=1.=iy+)p11ntft.space);fortk=0
11、k5k+)printft%c-.a(kh:JPrintfrW);1.&给出年月.t1.计算该H是该年的第几天.#inc1.udevoidI1.1.ainOintsum_day(int.int);int1.cap(intyear);intyear,nnh.day.days;prin1.ft,*inputda1.e(year.mnth.day:*):scanf(od.id.%d*.Aycar.month.day):prinf,%d%d.(d*,ycar.monch.day);days=sum.day(nonh.day);if(kap&mun1.h=3)days=days+1:PrinIfnSthe
12、%dthdayin(hisyear.W,days);intsum-day(intnwnth.mtdayIimdayJabU3三三0,3128,313031.30,31,31,30,3130,31;inti;for(i=1.zin1.hu+)day+=day_tah|i|:rcturn(day);int1.eap(intyear)Iint1.eap;1.ea=yeart4=0yea5100!二OIIyea汽400二二0;return(IeapkI19 .求个广3的整型矩阵而角战元素之和。将原矩阵和求出的和输出。析ndxkvoidmain()Joata33um-O;intij:Prinm”请轴入元
13、素:W):for(i=0;i3;i+)for(j=0j3y+)scanfC%.Aa(i)j1.):fr(i=0i3a+)sum=sum+aii);Printf(对角纹之和足:%6.2M,.sum):for(i=0;i=3;i+)Ifor(j=0jj=3j+)Prinm-%5.2ajD:printfCn);20 .求一个川3的矩阵各行元素的平均值:将厘矩阵和求出的平均值全部输出.WinC1.udevoidmain()inia41134.i,j,k;for(i=Od4j+)fortj=0j3j+)scanf(%d,*(a+i)+j);forti=0;i4:i+)Ik=0:fx(j=0j3j+)k+
14、=ai1.U:Prin1.f(第%d行的平均值是%d.i+1.k);printftn);21 .求一个3M的矩阵各列元素的平均值:将原矩阵和求出的平均值全部输出.inc1.udcvoidmain。Iinta(4J3ji(4,ijJc:fbr(i=O;i4U+)fortj=03+)SCanIr%d.*(a+i)+j);for(i=0;i4;i+)Ik=0;for(j=()Jv3J+)k+=ai11j;PrintfC第d行的平均伯是dj+1.k);printf(n);22 .求一个3的矩阵各列元素的最大伯,将原矩阵和求出的M大1.全部输出.#inc1.udevoidmain()ina|35|331
15、.i.j.k;fof(i=0:i3;i+)for(j=0:jv5:j+)scanft%d,*(a+i)+j);fbr(i=0i:for1.j=kj5y+)ifC(s+i)*C(a+i)+j)*(s+i)三*(*(a+i)+j):)fbr(i=O;i3;i+)(primf(1.ine=%dMax=%dj,s(j);printf(n);I23 .求-个中3的矩阵各行元索的最大值将原矩阵和求出的最大值全部输出.inc1.udcvoidmain()Iinta(4)(3.s4.i.j.k:fbr(iR;i4:i+)fo(j=OJ3+)SCanf(%,*(a+i)+j):fbr(i=O;i4;i+)(*(
16、s+i)三*(*(a+i);for(j=kj3y+)if(*(s+i)*(*(a+i)+j)*(s+i)=(*(a+i)+j);Jfor(i=0:i4;i+)(pri11(f(Row=%dMax=%d,i.si1.);prin1.ftn):24 .求一个M-N的矩阵中元素的最大值.将原矩阵和求出的最大伯全部输出.#inc1.udeWdefineNIOWcfineM10voidmain()intaN,i,j,k-.max,m.n;SCanfr%d%d,.m.n);fbr(i=Oafor(j=0;for(i=Ozimzi)for(j=0jnI;j+)(if(ai)U=ai1.U+1.)max=ai
17、j+1.;e1.semax=ai)j:Jki=max;forti=0:im-1.:i+)if(ki25 .判断一个N“N的掂阵是否为对称矩阵,将原矩阵检出,判断结果输H1.#inc1.udeIMefineN10voidmain()Iinta|N|N|.i,j.k,n;SCann%An):forti=0:in;i+)fortj=0jny+)scantCid.feafij):fon(i=0;in;i+)for(j=i+k=1.:e1.sek=():if(k=O)printf(bushi);e1.sePrintfrShiwXforti=0:i;26 .有一篇文章有三行文字,柘行有80个字符-要求统计
18、出其中英文大写字母、消协字母、数字、空格以及其他字符的个数。#inc1.udevoidmain()inti.j.big=0.sna=0.11m=0.spa-0.oh=0;char1.cx1.(3)(8O):for(i=);i3:i+)(PrinIfr请输入行%dMj+1.);ge1.s(1.ex1.(i);fortj=Oj=A&texii(j)=a,tcxtiJj=Wtex(iJj)=9)num+;e1.seifacxt1.iHj=,)spa;e1.seOIhf)PrintR”大写字母:%d.big):Prinrtr小写字母:%Gtsma);Prin1.fr数字:%dn-jwm):PrinIa
19、空格:dn.spa);Printfr其它:%d.oth);27 .将20个第数放到一维数组中,输出该数处的最大值和最小值.finc1.udcvoidmain()inti.j.11in.tnax,a(21.;Printfr请输入数据Nr);fbr(i=1.;i=20;i+)(printiK-a%d1.=,i);SCanf-%r.&aiD:1fbr(i=1.;i=1.9;i+)(min=i;for(j=2a(jj);amin=a(j;)fbr(i三hi三19u+)(max=i:for(j=2y=19y+)if(anma(j);anm=a1.j:)PrintR”最大数为:%dn*,a(max);Pr
20、intfr最小数为:%rfn,afmin);28 .将15个整数放到一维数组中,输出该数组中的最大猿它的下标.然后将它和数组中的最前面的元素对换。ffinc1.udcvoidmain()Iinti,j.min,nax.a116.m.n;Prin1.fr说输入数据加f0f(i=1.ii=5ji+)(printiatidj=,i);scanf(,ai);)for(i=ki=14zi+)(max=i;fortj=2=)4+)if(a|ma.|ii(j);amaxj=aj:m=1.n三PrinIT最人数卜标为:%d.%dnH.m,n);29 .将字符数组1“种下标为偶数的元素瞅给外一字符数组312并输
21、出StrI和汨2,#inc1.udeWinc1.udc#dct1.ncNIOvoidmain()Iinti,n;charstr1.N.str2(N);ges(str1.);fortn=0;nN:n+)Ii=2*n;str2njs(r1.(i:puts(str1);puts(str2);30 .编写一个程序,符两个字符母连接起来不要使用Sgat函数.Winc1.dcvoidmain)Icharstr1.2O.str22O:inti=0,j=0;Prin1.fC请输入字符串1:城);scanf(%sM.str1.);Prinm请输入字符串2:5):scanf(%s,str2);Whi1.e(Sir
22、KiB=tU)i+:whi1.e(sr2(j!=,0)sir1.i+=sir2(j+:str1.i=W;printf(合并之后的字符率为:%$5”,而1);3】.编写一个程序,符字符数组a中的全部字符更制到字符数组b中不要使用SmrPy函数.#inc1.udcWinc1.devoidnain()Ichara40,b40;inti:Prin1.(C请输入a:iT):SCanf(%s.a):fbr(i=Oi=(八)i)bi=ai:PrinITb%s.b):32 .编写一个程序,找出3个字符申中的最大者,格它输出.#inc1.i*dc#inc1.udcvoidmain()Icharstring20:
23、charstr32O:inti;tbf(i=0i0)strcpy(string3rOXe1.sesircpy(s1.ring1.r(IJ):if(strcmp(str(2).string0)Mrcp(sring3r2);PriInfC最大的字符串是:n%Sn*string);33 .编写程序,输入任意个1-7之间的整数,将他们转换成时应的英文总词C例如,I转换成MOnday.7转换成Sunday1#inc1.udcvoidmain()inta:Prmtf(输入一个整数:Wxscanf(M%dM,&a):if(a1.PrintfUMondayVn):e1.seif(a=2)PriiItfrTUC
24、Sday);e1.seif(a=3)PrinIfrwendeSdayW);e1.seif(a=4)prin1.f(nThursdayXn*):e1.seif(a=5)printft;MFridayn);e1.seif(a=6)prin1.fC,Saturdayn*,);e1.seif(a=7)PrimfrSUndayW);e1.seprintf(,Uf廓IrX)34 .编写程序,输入两个条数,和K/、/之中的任意一个运算符,输出计算结果。*inc1.udevoidmain()f1.oatahchare:Prin1.f(请输入一个运算符:5):scanf(,%c,c);Pri1.nf(“请输入两
25、个整数:j11;scanf(.idM.&a,&b);switch(c)(case+,jxinf(%n,ab)brvak;case,-,prin1.f(%fn.a-b)break;casc*:printfC%fjiM.a4b):brc4k;case?:printf(,%nIayb):1HCak;defau1.t:Primfr错误”:3工输入年号,计算这一年的2月份的天数,将结果输出.#inc1.i*dcvoidmain()Jintyearjeap;PriIHfr请输入年份:S)scanf(od&ycar);if(ycar%4三三0)(ifIif(ycar%400=0)1.ea=1.;e1.sef
26、requency+=I;ifOIa=si1.;sum+=a;)PrintfC这典数中0的个数为%dn”,frequency);PrintfC这些数中所有正数的和为%dn.wm);63 .谙编程实现:蚪入两个整数,判断它们之间的关系(=.等),并清楚地将比拟结果输出.64 .请编程实现:输入几个整数,判断其中隅数的个数,并输出结果(要求:数据的个数及原始数据由犍盘输入).Sinc1.ix1.ctfdeneN20voidenter(i11ta,intn)inti;PrinIfr谢输入敷据:H):for(i=Oini+)scanfC%d*.&ai);PrintfCn原始数据为:n);fbr(j=O;
27、in;i+)printf(%d.ai);printf(n);voidmain()Ivoidenter(int.int);inti;inta(N.n;print*%输入你所要的数组元素个数:5):scanf(W.n);enter(a.n):for(i=0;in;i+)(if(a(i%2=O)Prin1.f(其中的偶数是dWMi):J65.请编程实现:输入几个整数,判断其中奇数的个数,并输出奇数的累加利.(要求:数据的个数及82 .斑数组a中的收设十个数已按从小到大的顺序有序:在主函数中输入,个数,将其插入到该数组中,使得原数组依然按原序有序,分别输入原数组和插入新元素之后的数组.Winc1.dc
28、voidmain)Ii11ta21.i,j.n.p.tcmp;PrintfC请输入数组元素的个数:);scanf(%d.&n);PrinIfr请输入%d个整数:W.n):for(i=0:in;i+)Seanfr%(r,&aiD;fbr(i=1.;i=n-1.;i+)(for(j=Ojaj+1.)(temp=a(j:aUI=aUhaj+1.=tcmp;)JPrintfr原数组为:5);fbr(i=O;i=n-1.;i+)PriIMfi(%5daiD;printf(j请输入插入的数scanf(5d,p);fx(i=O:i=n-1.;i+)if(p:for(i=();i=n;i+)PrintIK%5
29、d,ai);83 .彳f5个国家名,编程实现按字母先后顺序排序,然后分别给出原数组和排序之后的数组.Winc1.udeWi11c1.ude1464115101051inchicvoidmain)Ii11tij.N.a|211|21J;PrintfC请输入打印的行数:scanf(%d.&N);for(i=kiN+ki+)(ai1.11=;ai11=1.;)for(i=3;iN+ki+)for(j=2j=i-1.y+)aiU1.=ai-)U-1.M-1.1.j1.;for(i=1.;iN+1.:i+)Ifbr0=1.=i+)printfC%6d.a(i|(j);printftn);PrinWIO;
30、86.编一个函数实现招一个制型的一维数组中的数逆序存放,不使用辅助数黑.主函数滁入个拓型的一维数组,调用上述函数,将该数祖逆置,将结果输出.Winc1.udeWdcf1.neN1()voidmain()inia(N.i.temp:printf(entcrarraya:n);fbr(i=0;iN;i+)scanf%d,a(i):prin1.f(arraya:n);forti=();iN:i+)printK-%4d,ai);fb(i=0;iN/2;i+)(tcmp=ai;a=aN-i-1.;aN-i1.=emp;)printf(nNow,arraya:n);fw(i=O;iN:i+)printf(
31、%4d,a(i);PrintfCw);87编写一个函数COnV5求一个方阵的转置矩阵:主函数中输入方阵的阶数和方附.在主函数中将原矩阵和转置矩阵按原格式输出.ffinc1.udcvoidmain()voidConVerUin1.1.IO10);i11ta10(10.p.q.i,j;PrintfC请输入矩阵的行和列:O:SCanfrscanf(%dq;Prin1.请输入矩阵的元素值:W):forti=0:ivp:i+)for(j=0jq+*)scanf(d.aij);Prin1.fr原矩阵为:);for(i=0:ip:i+)(fortj=0:printf(n):Iconvert(八);Prinw
32、里里地阵为:W:for(i=0:iq:i+)(fortj=0;primf(n):Jvoidconvert(inta11()1.()i111.i.j.1.;fofi=0a0u+)fbrG=i+1.yIOj)I-U1.i1.1.jhai)U1.=aj)i);三OJ(i=t;88 .求11值,精度为IO5:1141-1.31.5-1.7+Winc1.devoidmain()If1.oata=1.0,b;inti;for(i=1:1.0(2*i+1)0.00001;i+)(if(i%2!=0)a-=1.0(2*i+1.);e1.sea+=I.W(2*i1.);1b=4.0*a:printf(,b的值为
33、:%Rjr.b):89 .用公式计算:e1.+1.1.!+1.2!-+1.n!精度为1.(6#incIudcoatf,un(inc);voidmain()Iinti;atc=1.0;for(i=1zfun(i)0.()0()0()0()ki+)c+=fun(i);printfc=%Pn,c);oatfun(intn)Iinti;f1.oatterm=1.0:fbr(i=1.i=nU)iernV=i;returnterm:90 .有一分数序列2/1.3/2,5/3.875,13/8.21/13求该序列的前20项之和。Wi11c1.udevoidmain()inti;11oa1.a(22.b20)
34、.p=0.0;a()=1.0:aI=1.0;fbr(i=2;i22;i+)ai=ai-1.+ai-2;for(i=0;i20;i+)b1.=ai+2ai+1.;for(i=0;i20;i+)P=NiJ:printf(%f.p):91 .编一个子函数GCD,求两个IE整数的最大公约数,主程序输入n个自然数,调GCD,求出这n个数的最大公约数.Winc1.udeintGCD(int.in1.);voidmain()Jinta(100.ij.k;Printf(请输入数组元素的个数:):SCanfrPrinm请输入d个正整数An,n):for(i=0;in:i+)SCanfC%daiD:k=GCD(a
35、0,a1.);fb(i=2;in;i+)k=GCDk,a(ij):printf(,输入的d个正整数的最大公约数是:%dn.n.k):intGCD(in1.x.i11ty)inti,min.p.q,gcd;if(x=y)min=x:e1.semin=y;for(i=1.;i=min:i+)(p=x%i;q=#i:if(p=O&q=O)gcd=i;Jreturngcd:)92,写函数求疝00的值。计算公式为:Sin(x)=X-X33X55!-X77!+(1)n1X2n1.(2n-1)!.#inc1.udef1.oatfun(f1.oattint):oatsin(int,f1.oa();f1.oat(emXint);voidnain()Iintn;f1.oatx;PrinIa请输入11.xIfiAn):SCanfescanf(%,x);pnniftMsin(%D=%r.x3in(n.x)Xoatsin(intn,f1.oatx)Iinti:f1.oats=0.0:for(i=ki=nji+)s=fn(1.0ti1.)*fun(x,25ti-1)*enn(2*i-1);returns;Ioatfn(f1.oatxj11n)Iinti;f1.oatP=I.0;fbr(i=OdnU+)p=p
链接地址:https://www.desk33.com/p-1791518.html