版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 for(i=0;i=head;i+)rabbit=i;chick=head-rabbit;/*满足共有88个头的条件*/if(rabbit*4+chick*2=foot)/*满足共有244只脚的条件*/printf(rabbit=%d,chick=%dn,rabbit,chick);我国古代有一道有名的数学难题,称为“百鸡问题”:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买了百鸡,问鸡翁、鸡母、鸡雏各买了多少只?程序代码一:#includevoidmain()inti,j,k;for(i=1;i=20;i+)for(j=1;j=33;j+)k=100-i-j;if(k%3=0)&(
2、i*5+j*3+k/3=100)&k)printf(%4d%4d%4dn,i,j,k);/*满足鸡雏k为整数且大于等于1只,同时正好买了100元钱*/程序代码二:#includevoidmain()inti,j,k;printf(n);for(i=1;i=100;i+)for(j=1;j=100;j+)for(k=1;k=100;k+)if(i+j+k=100&15*i+9*j+k=300&k%3=0)printf(%4d%4d%4dn,i,j,k);有一个棋盘,在第一个格子里放1粒米,在第2个格子中放第一个格子中两倍的米,以此类推。共有64个格子,编一个程序计算64个格子中的米数总和并输出。
3、浮点型数据由于在TC+3.0环境中输出时,有效数据位数有限,存在舍入误差,输出时不是精确值,本题目的只是要求掌握解题方法。程序代码如下:#includevoidmain()inti;doublex=0.5,s=0.0;for(i=1;i65;i+)x=2*x;/*后一个格子的米的数量是前一个格子的两倍*/s+=x;printf(s=%en,s);/*计算结果为浮点型数据,采用指数形式输出*/4.25求1-999之间的所有同构数。一个数出现在它的平方数的右端,这个数称为同构数。如5出现在25右侧5是同构数25出现在625右侧25也是同构数程序代码一:#includevoidmain()longk
4、,m,n;for(k=1;k=999;k+)/*k为一位数*/*k为两位数/*k为一位数*/*k为两位数*/*k为三位数*/if(k100)n=m%100;elsen=m%1000;if(k=n)printf(%5d,k);printf(“”n);程序代码二:#includevoidmain()longk,m,n;for(k=1;k4),都能够分解为两个素数之和。程序代码如下:#includevoidmain()intn,p,q,i,signp,signq;scanf(%d,&n);while(n%2!=0)/*如果n为奇数,则重新输入7printf(”nisnoteven.”);scanf(
5、%d,&n);p=1;dop=p+1;q=n-p;signp=1;for(i=2;i=p/2;i+)if(p%i=0)signp=0;signq=1;for(i=2;i=q/2;i+)if(q%i=0)signq=0;while(!signp|!signq);printf(%d=%d+%dn,n,p,q);4.27整钱换零钱:要将100元钱换成1元、2元、五元的零钱,编程求出有几种换法?程序代码如下:#includevoidmain()inti,j,k;k=0;for(i=0;i=20;i+)for(j=0;j=(100-i*5)/2;j+)if(k%10=0)printf(“n”);k+;p
6、rintf(%d,%d,%d;n,i,j,100-5*i-2*j);printf(nk=%dn,k);4.28密码问题:先输入数字k(OvkvlO),再将输入的一行字符中的英文字母按照其后续的i个字母输出,字母超出最后一个Z”或“z”时,循环转换,数字不转换。请编程实现。程序代码如下:#includevoidmain()intk;charchr;printf(inputk:);scanf(%d,&k);scanf(%c,&chr);/*接收上面输入的回车符,否则第一个输入的字符为回车符*/chr=getchar();/*循环之前输入第一个字符*/while(chr!=n)if(chr=a&ch
7、r=A&chrz|(chrZ&chr=Z+k)/*如果超界,则循环转换*/chr=chr-26;printf(%c,chr);chr=getchar();/*循环输入下一个字符*/4.29用牛顿迭代法求非线性方程f(x)=X3+4X2-10=0的根,XG0,3。其迭代公式为:xn=xn-l-f(xn-l)/f(xn-l)。程序代码如下:#includevoidmain()floatx0,x,f,f1;x0=1.5;do/*利用迭代方法求出近似解*/f=(x+4)*x)*x-10;f1=(3*x+8)*x;x0=x-f/f1;while(fabs(x0-x)=1e-5);printf(x=%fn
8、,x0);4.30编写程序,实现用矩形法求如下定积分:I=J8.4(x2+sinx)dx2.5程序代码如下:#include#includevoidmain()intn,k;floata,b,h,area,x;a=2.5;b=8.4;printf(inputn:);scanf(%d,&n);/*输入等分数*/h=(b-a)/n;area=h*(a*a+sin(a);/*第一个小矩形面积*/for(k=1;kn;k+)x=a+k*h;/*h=(b-a)/n则xi=a+i*h*/area+=h*(x*x+sin(x);/*小矩形面积累加*/printf(area=%fn,area);第5章数组5.
9、1用直接交换法对10个整数进行从大到小的排序。程序代码如下:voidmain()intm10;inti,j,temp;printf(Enterarraym:n);for(i=0;i10;i+)scanf(%d,&mi);for(i=0;i9;i+)/*当前元素与后续各元素逐个比较交换/*当前元素与后续各元素逐个比较交换*/mj=temp;printf(Nowarraymis:n);for(i=0;i10;i+)printf(%d,mi);printf(n);5.2用筛选法求1-100之内的素数程序代码如下:#include#includevoidmain()intI,j,n,a101;for(
10、i=1;i=100;i+)ai=i;a1=0;/*只需判断到100/*只需判断到100平方根的整数为止*/*判断当前元素是否已置0*/*用当前未置0的元素去除后续各元素*/*若可整除则为非素数,且置0*/printf(n);for(i=1;ikp)elsewhile(x_inkp)for(i=n;ip;i-)ki=ki-1;kp=x_in;/*原数组kp倒kn-l各元素向后移一个位置*/*输入数插到其应处的位置上*/*查找输入数应插入的元素下标p*/p+;n+;printf(NowArraykis:n);for(i=0;in;i+)printf(%d,ki);printf(n);5.4输入20
11、个实数存放在一维数组中,输出它们的平均值以及高于平均值的数的个数程序代码如下:voidmain()floata20,sum=0,ave;inti,n=0;printf(Enterarraya:n);for(i=0;i20;i+)scanf(%f,&ai);for(i=0;i20;i+)sum+=ai;ave=sum/20.0;for(i=0;iave)n+;/*统计高于平均值的个数*/printf(Theaverage=%fn,ave);printf(connt=%dn,n);voidmain()floata20,ave;inti,n;printf(Enterarrayvalue:n);sca
12、nf(%d,&x_in);if(x_inkn-1)kn=x_in;elsewhile(x_inkp)/*输入数比最后一个元素大,则追加在最后*/*查找输入数应插入的元素下标p*/p+;for(i=n;ip;i-)ki=ki-1;kp=x_in;/*原数组kp倒kn-l各元素向后移一个位置*/*输入数插到其应处的位置上*/n+;printf(NowArraykis:n);for(i=0;in;i+)printf(%d,ki);printf(n);5.5有18个数围成一圈,求相邻三个数之和的最大小数。程序代码如下:voidmain()inta18,a3,min,i,i2,i3;printf(Ent
13、erarraya:n);for(i=0;i18;i+)scanf(%d,&ai);min=a0+a1+a2;/*假设0下标起的相邻三元素之和最小*/for(i=1;i=18)i2=i2%18;/*若三元素中的第二个下标超过数组长度,则以数组首元素下标替代*/i3=i+2;if(i3=18)i3=i3%18;/*若三元素中的第三个下标超过数组长度,则以数组首元素或第二个元素下标替代*/a3=ai+ai2+ai3;/*a3存放每一相邻三元素之和*/if(a3min)min=a3;printf(Arrayais:n);for(i=0;i18;i+)printf(%d,ai);printf(n);pr
14、intf(min=%dn,min);5.6在一个二维数组中找出最小数及其所在的行和列。程序代码如下:voidmain()inta45,i,j,min,min_atr,min_atc;printf(Enterarraya:n);for(i=0;i4;i+)for(j=0;j5;j+)scanf(%d,&aij);min=a00;min_atr=min_atc=0;for(i=0;i4;i+)for(j=0;i5;j+)if(aijmin)min=aij;min_atr=i;min_atc=j;printf(Arrayais:n);for(i=0;i4;i+)for(j=0;j5;j+)print
15、f(%d,aij);printf(n);printf(min=%f,Itsat%d,%dn,min,min_atr,min_atc);5.7利用二维数组求方阵主、次对角线之和。程序代码如下:voidmain()inta55,i;floatsum=0;printf(Enterarraya:n);for(i=0;i5;i+)for(j=0;j5;j+)scanf(%d,&aij);for(i=0;i5;i+)sum+=aii+ai4-i;/*aii、ai4-i分别为主次对角线第i行元素*/printf(Arrayais:n);for(i=0;i4;i+)for(j=0;j5;j+)printf(%
16、d,aij);printf(n);printf(sum=%fn,sum);58输入一个mXk的实数矩阵a和一个kXn的实数矩阵b,计算两矩阵的乘积c=aXb,c中各元素保留2位小数,第3位小数四舍五入。乘积矩阵c为m行n列,其元素计算公式为:c=丈axb,ijimmjm=1程序代码如下:voidmain()inti,j,k;floata34,b42,c32=0;printf(Enterarraya:n);for(i=0;i3;i+)for(j=0;j4;j+)scanf(%f,&aij);printf(Enterarrayb:n);for(i=0;i4;i+)for(j=0;j2;j+)sca
17、nf(%f,&bij);for(i=0;i3;i+)for(j=0;j2;j+)for(k=0;k4;k+)cij+=aik*bkj;/*依据c仝axb*/ijimmjm=1cij=(int)(cij*100+0.5)/100.0;保留2位小数,第3位小数四舍五入*/printf(Arraycis:n);for(i=0;i3;i+)for(j=0;j2;j+)printf(%f,cij);printf(n);voidmain()inta34,b42,i,j,k;floatc32=0;printf(Enterarraya:n);for(i=0;i3;i+)for(j=0;j4;j+)scanf(
18、%d,&aij);printf(Enterarrayb:n);for(i=0;i4;i+)for(j=0;j2;j+)scanf(%d,&bij);for(i=0;i3;i+)for(j=0;j2;j+)for(k=0;k4;k+)cij+=aik*akj;/*依据c=丈axb*/ijimmjm=1printf(Arraycis:n);for(i=0;i3;i+)for(j=0;j2;j+)printf(%f,cij);printf(n);5.9找出一个二维数组中的鞍点,所谓鞍点就是该位置上的元素在该行上最大,在该列上最小。也有可能没有鞍点。程序代码如下:voidmain()inta45,i,
19、j,k,max,maxj,flag;printf(Enterarraya:n);for(i=0;i4;i+)for(j=0;j5;j+)scanf(%d,&aij);for(i=0;i4;i+)max=aiO;/*假设aiO最大*/maxj=0;/*maxj存放最大数的列下标*/for(j=0;jmax)max=aij;/*max存放当前行的最大数*/maxj=j;/*maxj存放当前行最大数的列下标*/flag=1;/*先假设是鞍点,且以flag为1代表*/for(k=0;kakmaxj)/*将最大数与其同列元素相比*/flag=0;/*若max不是同列最小,则不是鞍点,令flag=0*/b
20、reak;if(flag)printf(a%d%d=%dn,i,maxj,max);/*输出鞍点值及所在行、列*/break;if(!flag)printf(Itisnotexist!n);/*若flag为0表示鞍点不存在*/voidmain()inta45,i,j,k,max,maxj,flag;printf(Enterarraya:n);for(i=0;i4;i+)for(j=0;j5;j+)scanf(%d,&aij);for(i=0;i4;i+)max=aiO;/*假设ai0最大*/maxj=0;/*maxj存放最大数的列下标*/for(j=0;jmax)max=aij;/*max存放
21、当前行的最大数*/maxj=j;/*maxj存放当前行最大数的列下标*/HagT;/*先假设是鞍点,且以flag为1代表*/for(k=0;kakmaxj)/*将最大数与其同列元素相比*/flag=0;/*若max不是同列最小,则不是鞍点,令flag=0*/continue;if(flag)printf(a%d%d=%dn,i,maxj,max);/*输出鞍点值及所在行、列*/break;if(!flag)printf(Itisnotexist!n);/*若flag为0表示鞍点不存在*/5.10有n个学生,每人考m门课程,要求:找出总分最高的学生号;找出至少有一门成绩不及格的学生号并输出他们的
22、所有成绩;统计每门成绩都在85分以上的学生人数。程序代码如下:voidmain()inta105;/*设有10位同学,考三门课程,第0列存放学号,第4列存放总分*/inti,j,max,max_at,flag,n=0;for(i=0;i10;i+)ai0=1001+i;/*学号自1001起存放在数组第0列*/for(i=0;i10;i+)/*输入10位同学三门成绩*/printf(EnterNo.%dscore:n,ai0);scanf(%d,%d,%d,&ai1,&ai2,&ai3);for(i=0;i10;i+)/*计算每位同学总分并存放在各自的第4列*/for(j=1;j3;j+)ai4
23、=ai1+ai2+ai3;printf(Arrayais:n);for(i=0;i10;i+)/*输出10位同学三门成绩及总分的数据*/for(j=0;j5;j+)printf(%d,aij);printf(n);max=a04;/*假设第一位同学总分最高*/max_at=O;/*max_at存放总分最高所在行*/for(i=0;imax)max=ai4;max_at=i;printf(MaxisNo.%dn,amax_at0);/*输出总分最高的学号*/for(i=0;i10;i+)/*查找至少一门成绩不及格的同学*/flag=1;/*先假设当前同学每门成绩都及格,且以lag为1代表*/fo
24、r(j=1;j=3;j+)if(aij60)flag=0;/*只要有一门成绩不及格,则令flag=0*/break;if(!flag)printf(%6d%3d%3d%3d%3dn,ai0,ai1,ai2,ai3,ai4);/*输出至少一门不及格的学生成绩*/for(i=0;i10;i+)/*统计每门成绩在85分以上的人数*/flag=1;/*先假设当前同学每门成绩都在85分以上,且以flag为1代表*/for(j=1;j=3;j+)if(aij85)flag=0;/*只要有一门成绩少于85分,则令flag=0*/break;if(flag)n+;printf(n=%2dn,n);/*输出每门
25、成绩在85分以上的人数*/5.11打印以下的杨辉三角形(输出8行)llll2ll33ll464ll5l0l05ll6l520l56ll72l35352l7l程序代码如下:voidmain()inta88,i,j;for(i=0;i8;i+)aii=1;/*使对角线元素均置1*/ai0=1;/*第0列元素置1*/for(i=2;i8;i+)/*自第2行开始处理*/for(j=1;j=i-1;j+)aij=ai-1j-1+ai-1j;/*元素值为上一行同一列与前列两数之和*/printf(Arrayais:n);for(i=0;i8;i+)for(j=0;j=i;j+)printf(%d,aij)
26、;printf(n);512将如下所示的右螺旋方阵存放到hXn的二维数组并打印输出,n(lWnWIO)从键盘输入。ll6l5l4l32l72423l23l82522ll4l9202ll056789程序代码如下:voidmain()intal0l0=0,i,j,row,col,dir_i,n;structdirectoryintx,y;dir4=l,0,0,l,-l,0,0,-l;printf(Entern:);scanf(%d,&n);for(i=1,dir_i=0,row=col=0;i=n*n;i+)arowcol=i;row+=dirdir_i.x;col+=dirdir_i.y;if(
27、row0|col=n|col=n|arowcol!=0)row-=dirdir_i.x;/*走过头,则行坐标返回*/col-=dirdir_i.y;/*走过头,则列坐标返回*/dir_i+;/*转向下一个方向*/if(dir_i=4)dir_i=0;row+=dirdir_i.x;col+=dirdir_i.y;printf(Arrayais:n);for(i=0;in;i+)for(j=0;jn;j+)printf(%2d,aij);printf(n);5.13打印魔方阵。所谓魔方阵是指它的每一行、每一列和对角线之和均相等。如,三阶魔方阵为:816357492程序代码如下:voidmain(
28、)inta1616,i,j,k,p,n;p=1;while(p=l)/*要求输入的n为奇数且在115之间*/printf(Entern(n=1to15):);scanf(%d,&n);if(n!=0)&(n=15)&(n%2!=0)p=0;for(i=1;i=n;i+)for(j=1;j=n;j+)aij=0;/*对数组进行初始化*/j=n/2+1;a1j=1;for(k=2;k=n*n;k+)i=i-1;j=j+1;if(in)i=i+2;j=j-1;elseif(in)j=1;if(aij=0)aij=k;elsei=i+2;j=j-1;aij=k;printf(Arrayais:n);f
29、or(i=1;i=n;i+)for(j=1;j=n;j+)printf(%2d,aij);printf(n);第6章指针6.1输入3个整数,按照从小到大的次序输出。程序代码如下:#includevoidmain()inta,b,c;int*pa=&a,*pb=&b,*pc=&c,*temp;scanf(%d%d%d,&a,&b,&c);if(*pa*pb)pa=pb,pb=&a;/*使pa指向变量b,pb指向变量a*/if(*pa*pc)temp=pa,pa=pc,pc=temp;/*使pa指向最小值的变量*/if(*pb*pc)temp=pb,pb=pc,pc=temp;/*使pb指向次小值
30、的变量*/printf(%d%d%dn,*pa,*pb,*pc);6.2将输入的10个整数存入一数组a中,然后实现:输出数组元素的平均值;输出数组元素中的最大值与次最大值;将最大值与最小值的位置互换后输出;输入x,输出x在数组a中的位置,若数组a中没有值为x的元素,则输出“nofound”按从小到大的次序输出。程序代码如下:#includevoidmain()inta10,*p=a,i;intav=0;int*pmax,*pnmax,*pmin;inttemp,x,flag;for(i=0;ip1)pmax=p,pnmax=p+1;elsepmax=p+1,pnmax=p;for(i=2;i10;i+)if(*pmaxpi)pnmax=pmax;pmax=p+i;/*将pmax指向数组最大值元素*/elseif(*pnmaxpi)pnmax=p+i;printf(max=%d,nmax=%dn,*pmax,*pnmax)/*输出最大值与次最大值=/pmin=p;for(i=1;ipi)pmin=p+i;/*将pmin指向数组最小值元素*7temp=*pmin,*pmin=*pmax,*pmax=temp/*最大值与最小值位置互换=/for(i=0;ivl0;i+)printf(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大众健身项目课件
- 飞机租赁业务合同范本
- 5-Hydrazinylisophthalic-acid-hydrochloride-生命科学试剂-MCE
- 商丘单招数学试题及答案
- 2026年生物质能行业技术创新与市场拓展报告
- 2026年电子元器件行业分析报告:主业拓展与相关多元化布局
- 2026年舞台灯光设备行业市场分析报告
- 2026年金融科技行业竞争格局与盈利能力报告
- 2026年家电维修技术发展动态报告及行业挑战分析
- 2026年厂房租赁市场风险与应对策略报告
- 2026年高危孕产妇培训模拟试题(含答案)
- 财务会计-新修订版财务报表模板-财会2026-11号
- 2026年水利工程安全生产A证考试题库
- 2026年经济师(中级)考试真题及答案
- 中国联通春季校园招聘笔试真题及试题及答案
- 2026年水利安全员C证备考重点题库(新版350题)
- 2026年国考公安专业知识真题及答案解析
- 2026年内蒙古自治区中考生物试卷(含答案及解析)
- 劳务派遣公司安全生产规章制度
- 垂直绿化(花架、挡墙)施工方案
- 公路城乡结合部交通事故处理手册 标准版
评论
0/150
提交评论