还剩23页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
答案仅供参考实验一.设计main函数实现从键盘上输入两个整型变量a、b的值,交换它们的值并输出#includevoidmainintabc;printfenterfirstinteger:;scanfM%da;printfentersecondinteger:;scanfM%dHb;c=a;a=b;b=c;printf1%d%d\nIab;getch;.设计main函数实现从键盘上输入两个整型变量a、b的值,并将b的值加入到a中输出a的值#includevoidmainintabc;printfenterfirstinteger:;scanf%da;printfentersecondinteger:;scanfM%db;c=a+b;a=c;printfa=%db=%d\nab;getch;.从键盘输入整数x的值,根据公式y=x3+3x2+x-IO求y的值,输出x和y的值#includevoidmain{intxy;printfenterfirstinteger:;scanf%dx;y=x*x*x+3*x*x+x-10;getch;.绝对质数如果一个数和其反序数均为质数,则该数被称为绝对质数如,13是质数,其反序数31也为质数,则13和31是一对绝对质数请设计程序,找出200以内的绝*j质数#includeincludevoidmain{intnkima;forn=l;n=200:n++{fora=2;a=sqrtn;a++{ifn%a==Obreak;ifasqrtn{i=nk=O;whilei!=0{k=k*10+i%!0;i/=10;form=2;ni=sqrtk;m++{ifk%m==0break;ifmsqrtkprintf%5dn;getch;}.平方镜反数如果一个数的平方数,是其反序数的平方数的反序数,则称该数和其反序数是一对平方镜反数例如,12的平方数是144其反序数为2121的平方数是441其反序数是12的平方数144故12和21是一对平方镜反数请设计程序找出200以内的所有平方镜反数对include#includevoidmain{intnkiab;forn=1;n=200;n++{k=0;i=n;whilei!=O{k=k*10+i%10;i/=10;}a=k-k;b=0;whilea!=O{b=b*10+a%10;a/=10;}ifb==n*nprintf%d\nn;getch;.黑洞数黑洞数乂称陷阱数,是类具有奇特转换特性的整数任何一个数字不全相同整数,经有限“重排求差”操作,总会得到某个数,这些数即为黑洞数“重排求差”操作即把组成该数的数字重排后得到的最大数减去重排后得到的最小数随便造一个四位数,如al=1231先把组成部分1231的四个数字由大到小排列得到a2=3211再把1231的四个数字由小到大排列得a3=1123用大的减去小的a2-al=3211-1123=2088o把2088按上面的方法再作一遍由大到小排列得8820由小到大排列得288相减8820-288=8532把8532按上面的方法再作一遍,由大到小排列得8532由小到大排列得2358相减8532-2358=6174如果再往下做奇迹就出现了!7641-1467=6174又回到61746174便是一个4位黑洞数请编写程序,用上述方法找出3位黑洞数暂无答案实验五.有一张足够大的纸,厚亳米,问将它对折多少次后可以达到珠穆朗玛峰的高度8848米?include””voidniain{doublea=9e-2;intn=0;whilea=8848{a=a*2;n++;printfa=%dn;gech;.请设计程序采用递推法计算下列级数的近似值,当n取某一值使得|x⑶+Wn!|<时停止计算(x从键盘输入)级数如下#includeincludevoidmain{doublesumxpnqmk;printfx=;scanfM%irx;sum=x;p=x;m=1;q=1;n=1;k=1;whilefabsp/n={m=-m;p*=x*x;q+=2;k++;n*=k;sum+=m*p/q*n;printf%irsum;getch;.请设计程序,根据下列公式计算cosx的近似值精度要求当通项的绝对值小「等于10-6为止cosx=1-x2/2!+x4/4!-x6/6!++-lnx2n/2n!#include#includevoidmain{doublexksumtermabm;printfx=;scanf%lfMx;sum=1;m=1;a=0;k=1;b=1;term=1;whilefabsterm{k*=x*x;m=-m;a+=2;b*=a*a-1;sum+=m*k/b;term=m*k/b;printfcosx=%lfsum;getch;3jr2i.请设计程序采用递推法计算2/-1二-的值即求…的值其中x为Mi!1!10!键盘输入的一个任意的单精度实数#includevoidmain{intip;floatxmqsum;printfMx=M;scanfn%fx;sum=x;m=x;P=1;q=1;fori=1;i=10;i++{m*=x*x;P=-P;q*=i;sum+=p*m/q;printf%fsum;getch;.请设计程序,根据下列公式计算表达式的值计算公式如卜.白/之㈠〃启2x於;2〃!当通项绝对值小于等于IO时停止累加include#includevoidmain{doublexksumtermabm;printfx=;scanf%irx;sum=1;m=1;a=0;k=1;b=1;term=1;whilefabsterm{k*=x*x;m=-m;a+=2;b*=a*a-1;sum+=m*k/b;term=m*k/b;sum=-1*sum*cosx/x;sum+=2;printf%lfsum;getch;实验六.水仙花数是指一个3位数,其各位数字的立方和等于该数本身请完善下列程序中的函数inidaffodilinin其功能是判断整数n是否为水仙花数如是,则该函数返回值1否则返回值0注意,不能更改main函数#includeintdaffodilintn{intk=0m;m=n;do{k+=m%10*m%IO*m%10;m/=10;}whilem;ifn==kreturn1;elsereturn0;Imain{intmi=0;fortn=lX;mlX;m++ifdaffodilm==l{printf%5dm;i++;ifi%5==0pnntf\n;}getch;.请编写程序,找出满足如下条件的整数m1该数在[11999]之内;2m、n均为回文数例如m=llm2=12Lm3=
133111、
121、1331皆为回文数故m=ll是满足条件的一个数请设计函数inivaluelongm其功能是判断m是否是回文数,如是,该函数返回值1,否则返回值0编写main函数,求出[11999]内满足条件的所有整数/includeintvaluelongm{longsn;s=0;n=m;whilen{s=s*10+n%10;n/=10;}ifs==mreturn1;elsereturn0;1main{longm;fdrm=ll;mI000;m++ifvaluem==lvaluem*m==lvaluem*m*m==l{printf%51d”m;1gctch;.设no是一个给定的正整数对于i=
012...»定义若行是偶数,则ni+1=ni/2;若M是奇数,则行+尸3口+1若山是1则序列结束用这种方法产生的数称为冰雹数请编写一个函数voidhailstonesintn其功能是显示由n产生的所要求的序列,按每行6个数输出该数列中的所有数编写main函数,在main函数中定义一个整型变量n从键盘上输入值77赋给n用n作为实参调用函数hailstoncso测试数据77/输出结果Hailstonesgeneratedby77:77232116582988Numberofhailstonesgenerated:23#includevoidhailstonesintn;voidmain{intn;scanfn%d\n;hailstonesn;gctch;}voidhailstonesintn{inti;printfHailstonesgeneratedby77:\ii;i=0;whilen!=l{printf%5dn;i++;ifn%2==0n=n/2;elsen=3*n+l;ifi%6==0printf\n;printf%5d\nn;i++;printfNuniberofhailstonesgenerated:%5di;I.请按要求编写程序编程要求1编写函数inttwinbornintmintn其功能是判断整数in和n是否为李生质数对相差为2的两个质数称为挛生质数,如是,则函数返回值1否则返回值02编写main函数,求出[1099]内的所有季生质数对,使得程序的运行结果为11J317192931414359617173#includeintprimeintm{intn;fbrn=2;n=m/2;n++ifm%n==Oreturn0;return1;}inttwinbornintmjntn{ifprimemprimen==2return1;elsereturn0;voidmain{intn.m;forn=10;n=97;n++{m=n+2;iftwinbommn==1printf%d%d\n\nm;getch;1实验七.用牛顿迭代法求方程3x3・3x2+x-l=O在x0=2附近的实根要求
①用函数floatnewtoonfloatx求方程在x附近的根;
②用函数floatFfloatx求x处的函数值,用函数floatFlfloatx求fx在x处的导数;
③在主函数中输入xO调用函数求得方程的近似根,并输出结果请完善下列程序,使之完成上述功能并请以注释的方式在程序的最后给出你在运行该程序时所选用的测试数据及在该测试数据下的运行结果#includeincludefloatFfloatxreturnx*3*x*x-1+1-1;floatF1floatxreturn9*x*x-6*x+1;floatnewtoonfloatxfloatff1x0;do{xO=x;f=FxO;f1=F1xO;x=x0-f/f1;}whilefabsx-x01e-5;returnx;voidmain{floatxO;scanf%rxO;printfTheresult=%.2f\nMnewtoonxO;getch;
2.请设计程序,用二分法求方程x3++在01内的近似根直到|fx|〈为止#include#includcfloatffloatx{returnx*x*x+*x*x+*;Ivoidmain{floatm=0n=lr:r=m+n/;whilel{iffabsfrle-4break;iffm*fr0n=r;elsetn=r;r=m+n/;}printfx=%fr;getch;}
3.以下程序的功能是从键盘上输入10个整数,并检测整数3是否包含在这些数据中若包含3则显示出第一个3出现的位置,程序有些错误,试改正之#includevoidmain{intdata|10|.j=0;whilej10{scanf%d.data[j];j++;forj=0;j10;j++{ifdata[jl==3{printf3isinthepositionof%d\nj+l;break;}Iifj==10printfnofound!\n;getch;}
4.请编辑调试下列程序,观察其运行结果,理解数组名作为函数参数时的作用该程序的功能是选出a数组中下标为奇数的并大于10的项并且输出满足条件的个数【源程序】#includeintfuninta[]intb[]{intij=0;fori=0;a[ij;i++{ifi%2==0coninue;ifa[i]10bU++]=a[i];returnj;}voidmaininta
[10]={3l5322311459}b[l0];iniix;x=funab;fori=0;ix;i++printf%d\tb[i];printf\n%dx;}实验八
1.请编辑调试下列程序,观察、理解其运行结果,并叙述该程序的功能【源程序】#includeintfunintalJjntb[Jintij=0;fori=0;a[i];i++{ifi%2==0continue;printfx=%dy=%d\nxy;getch;实验二.编写程序,从键盘上输入一个整数例如560表示分钟,将其换算成用小时和分钟表示,然后输出至屏幕#includevoidmainintabhourmin;printfCenterfirstinteger:;scanf%dMa;b=60;hour=a/b;min=a%b;printfhour=%dmin=%d\nhourmin;getch;.编写程序,输入两个整数例如1500和350求出它们的商和余数并进行输出#includevoidmainintabcd;a=1500b=350;c=a/b;d=a%b;printf%d%dncd;getch;
3.编写程序,读入3个整数给分别变量abc然后将abc的值输出到屏幕,再交换它们中的数值,把a中原来的值给b把b中原来的值赋给c把c中原来的值赋给a然后再次输出abc的值到屏幕#includevoidmain{inta.b.cd;printfenterfirstinteger:;scanf%da;ifa[i]10b[j++]=a[i];returnj;voidmain|inta
[10]={3J5322311459}b[l0];inti=0x=0;x=funab;fori=0;ix;i++printf%d\t”b[i];printf\n%dx;I该程序的功能选出a数组中下标为奇数的并大于10的项并且输出满足条件的个数.以下程序在a数组中查找与x值相同的元素的所在位置请完善程序【源程序】#includevoidmain{inta[l1]xi;prinlfEnter10Inlegers:\n;fori=l;i=10;i++scanf%da+i;printfEnterx:;scanf%dx;alJ=x;i=10;whilex!=a[i]i-;ifi0printf%5dspositionis%4d\nxi;elseprintf%disnotfbund!\nx;getch;}
3.下列程序是利用插入排序法将n个数从大到小进行排序,插入排序的算法思想如下从一个空表开始,将待排序的数一个接一个插入到已排好序的有序表中空表视为有序,从而得到一个新的、记录数增1的有序表例如当n=7时,待排序的数及每一趟有序表的变化情况如下请完善下列程序并进行调试#includevoidmain{inta[10J={10987345J-30}ijt;sorta10;;printf\nthereis10number:;fori=0;i=9;i++printf%4da[i];getch;Iintsortinta[]intnintijt:fori=l;in;i++{t=a[i];whilej=Ota[j]{aU+l]=a[j];afj+l]=t;}}
4.请按下列要求设计程序1清编写voidselsortinta[]intn函数,其功能是用选择排序算法对a指向的长度为n的数组进行从小到大排序2编写main函数,声明一个一维数组并用下列测试数据初始化,调用selsorl函数实现a
[3]到凯8]元素从小到大排序测试数据为6891216-390-9101#includevoidselsortinta[]intn{intijkt;fori=3;i=n-2;i++{k=i;forj=i+l;jn;j++ifa[k]a|jjk=j;t=a[i];a[i]=a[k];a[k]=t;}Ivoidmain{inta[l0]={6891216390-9101}i;selsora9;fori=0;i10;i++printf%5da[ij;getch;
5.冒泡排序算法的C语言描述如下:voidbb_sortinta[]jntn{intijt;fori=0;in-l;i++forj=0;jn-i-ly++ifa[j]a[j+l]{t=a[j];a[jl=a[j+l];alj+lj=t;}但这个算法对问题规模为n的待排序数组来说要进行n-1趟排序事实上,对一些测试数据,如2156789等7个数据来说,利用上述冒泡排序算法,在第2趟排序过程中已没有元素的交换,亦即排序进行2趟后就已经有序试修改上述冒泡算法,使之在已经有序的情况下提前结束外循环以提高程序执行效率并利用题4的main函数调用改进的函数实现对待排序数据的排序#includevoidbbsortinta[]intn{intijtflag=l;fori=0;in-1flag;i++flag=O;forj=0;jn-i-1;j++{ifa[j]a|j+l]{t=aUJ;a[j]=aj+l];a|j+I]=t;flag=l;voidmain{inta
[7]={
215.6789}i;bbsorta7;fori=0;i7;i++printf%5dalij;getch;实验九
1.请编辑调试下列程序,观察其运行结果,理解数组的声明、数组元素的引用等基本概念【源程序】#inckidevoidmaininia
[3]
[3]={{38124710}{25J1}ijkt;forj=0:j3;j++{fork=0;k2;k++{fori=0;i2-k;i++ifa[i]U]a[i+l][j]t=a[i][j]a[i]fj]=a[i+l][jla[i+l][j]=t;fori=0:i3;i++forj=0;j3;j++printf%3da[i][jD;printf\n;1该程序的功能是把数组a中每一列元素按照从小到大排序.在m行n列的二维数组中找出最小值的元素,然后将该元素所在行与最后一行交换将该元素所在列与最后一列交换请按功能要求改正下列程序中的错误,并调试运行程序【源程序】/include#defineM3#defineN4main|intxkjcomcoLt;inta[M][N]={121563410245397465;fork=0;kM;k++{forj=0;jN;j++prinf%3d;a[k][j];printf\nH;printf\n;x=0;com=0;col=0;fork=0;kM;k++forj=k+1;jN;j++/*j=0*/ifxa[kj|j]/*xalk][j]*/{com=k;col=j:x=a[k][j];}fork=0;kM;k++{t=alk][col];a[kJ[col]=alk]lNJ;a[k][N]=t;/*N-1*/fork=0;kN;k++{t=a[com][k];a[com][k]=a[M][k];a[M][k]=t;}/*M-1♦/fork=0;kM;k++{forj=0;jN;j++printfM%3da[k]|j];pnntf\n;输出结果
1215634102453974659654710345212345613.请编程序,打印以下形式的杨辉三角形
131641101051.下列程序的功能是将字符串中的数字字符删除后输出程序中有些错误,试改正使其完成所要求的功能【源程序】#includevoiddelnumchars
[80]intij;fori=0j=0;s「]!=y;i++ifs[i]0s[i]9/*s[i]=0s[i]=9*/{s[j]=s[i];j++}/*s[i]=s[i+l];-1;*/voidmaincharitemf801=abc23lih5j7k;delnuinitem;printf\n%sitem;getch;.请按下列要求编写程序I编写函数voidfuncharx[]其功能是在x指向的字符串中的所有数字字符之前分别插入1个字符2编写main函数,定义一个字符数组a用测试数据中的数据初始化字符数组a用a作为实在参数调用函数fun输出结果字符串测试数据alb34cdef5运行结果a$lbS3$4cdef55#include#includevoidfuncharx[]{intik;fori=0;x[i]!=\0;i++{ifx[i]=rx[i]=9{k=strlenx;whileki{x[k]=x[k-1];k-;}x[i]=$;i++;elsecontinue;1x[i]=10;voidmainchara
[20]={alb34cdef5;funa;putsa;getchar;printfentersecondinteger:;scanf%d\b;printfenterthirdinteger:;scanf%dc;printfa=%db=%dc=%d\nabc;d=c;c=b:b=a;a=d;printfa=%db=%dc=%dabc;getch;
1.编写程序,读入3个双精度数,求它们的平均值输出到屏幕/includevoidmaindoublesum=0;doubleabcd;printfenterfirstinteger:;scanf%lfa;printfentersecondinteger:;scanf%lf\b;printfenterthirdinteger:;scanfC%lf\c;sum=a+b+c;d=sum/;printfd=%ird;getch;.下列程序中,要求main函数实现如下功能从键盘上输入3个正整数,求出它们中的最大值请完善程序,并在程序最后用注释的方式给出你的测试数据及在这组测试数据下的运行结果#includevoidmainintabcdmax;printffEntcrthreeintegers:;scanfft%d%d%dabc;ifabmax=a;elsemax=b;ifcmaxniax=c;printfCmaxofthethreenumbersis%dmax;grtch;.请编程序对从键盘上输入的x值,根据以下函数关系计算出相应的y值设xy均为整型量x值的范围x00=x1010=x2020=x40includevoidmain{intxy;printfMx=;scanf%dx;ifx0y=o;elseifx10x=0y=x;elseifx=10x20y=10;elseifx=20x40y=-5*x+20;printfM%dy;getch;实验三
1.下列程序想求出满足如下条件的三位数n ln除以11整数相除所得到的商等于n的各位数字的平方和;2n中至少有二位数字相同如131除以II的商为II131各位数字的平方和为11131中有二位数字相同,故131是所要求出的三位数中的一个又如55也是满足条件的三位数源程序中有些错误,请你改正并最终使程序得到如下的运行结果1315509000includevoidmain{intnabc;forn=l;n1000;n++{a=n/100;b=n/10%10;c=n%10;fn/1l==a*a+b*b+c*ca==b||a==c||b==cprintf*%d\n*»n;}getchO;}.请编程序,实现从键盘上输入任意一个整数n求出n的各位数字之和例如,当n为263时,各位数字之和为11下面是一个可以实现逐位数字累加功能的程序段,试理解后应用到自己的程序中k=0;n=263;do{k+=n%10;n/=10;}whilen;#includevoidmain{intnk;scanf%dMn;k=0;do{k+=n%10;n/=10;}whilen;printf%dk;getch;.试找出符合下列条件的正整数1该数是一个三位数;2该数是37的倍数3该数循环左移后得到的另两个数也是37的倍数例如148是37的倍数,481和814也是37的倍数#includevoidmain{intnab;forn=100;n1000;n++ifn%37==0{a=n/10+n%10*100;b=n/100+n%100*10;ifa%37==0b%37==0printf%d\n1n;getch;.请编程序利用下列公式求丸的近似值公式为712244662〃In—=X—X—X—X—X—X...XX21335572h-12〃+1要求先求出前2n项的n值,再求出2n+2项的n值,直至二者之差小于10—为止#includevoidmain{intn;floatab;a=1b=3;n=1;whileb-a=1e-5{a=b;n++;b=b*4*n*n/2*n-1/2*n+1;printf%f%f2*a2*b;getch;.请编程序求出满足如下条件的四位数n ln的范围为[50008000];2n千位上的数减百位上的数减十位上的数减个位上的数大于零编程要求以每行5个输出满足条件的数及该类数的个数#inckidevoidmain{intnabcdk=0;forn=5000:n=8000;n++{a=n/lX;b=n/100%10;c=n/l0%10;d=n%10;ifa-b-c-d0{prinlf%5dn;k++;ifk%5==0printfC^n;}printfk=%d.k;gctch;.请编程序求出满足如下条件的一个四位整数,它的9倍恰好是其反序数例如,1234与4321互为反序数#includevoidmain{intneabcd;forn=1000;n=9999;n++{a=n/1000;b=n/100%10;c=n/10%10;d=n%10;e=d*1000+c*100+b*10+a;if9*n==eprintfM%dMn;}getch;.请编程序求出从键盘上输入的两个正整数a和b的最大公约数和最小公倍数#inckidevoidmain{intmnrx;scanf%d.%dmn;x=m*n;whilen!=0r=m%n;m=n;n=r;printfH%d%dmx/ni;getch;.请编程序计算l!+2!+3!+…+n!的前10项之和#includevoidmainlongsumk;intij;sum=0;fori=1;i=10;i++forj=1k=1;j=i;j++{k*=j;}sum+=k;printf%ld\nsum;getch;实验四.反序数例如,123的反序数是321请设计程序,从健盘上输入一个整数,求其反序数并输出#includemain{intnk;printfn=;scanf%dn;k=0;whilen!=O{k=k*10+n%10;n/=10;}printfk=%dk;getch;.完备数完备数是一些特殊的自然数,它所有的真因子即除了自身以外的约数之和恰好等于该数本身例如,6=1+2+3故6是一个完备数请设计程序,找出500以内的所有完备数#includevoidmain{intnik;forn=1;n=500;n++{k=0;fori=1;i=n-1;i++{ifn%i==Ok+=i;}ifn==kprintf%d\nn;getch;
3.回文数一个数如果正读和倒读即反序数相同,称该数是回文数例如,
121、1331均为回文数请设计程序,找出200〜300之间的所有回文数,并以每行8个数输出至屏幕#includevoidmain{intnkim=0;forn=200;n=300;n++{k=0;i=n;whilei!=0{k=k*10+i%10;i/=10;ifn==k{m++;printf%8dn;ifm%8==0printf\n;getch;
4.回文质数一个数如果是回文数,同时又是质数,则该数被称为回文质数请设计程序找出100~500之间的所有回文质数,并以每行5个输出至屏幕includeincludevoidmain{intnkim;forn=100;n=500;n++{k=0;i=n;whilei!=0{k=k*10+i%10;i/=10;}ifn==k{form=2;m=sqrtn;m++{ifn%m==0break;ifmsqrtnprintf%4dn;account++;ifaccount%5==044221134175226134020105168421趟数有序表剩余待排序数初始状态空49386597761327第1趟49386597761327第2趟49386597761327第3趟65493897761327第4趟97654938761327第5趟97766549381327第6趟97766549381327第7趟97766549382713空。
个人认证
优秀文档
获得点赞 0