趣味编程100例答案_第1页
趣味编程100例答案_第2页
趣味编程100例答案_第3页
趣味编程100例答案_第4页
趣味编程100例答案_第5页
已阅读5页,还剩2页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

本答案是初学者的学习记录,不是标准答案,有出入地方还望包含NO.1-1百钱百鸡问题#include<stdio.h>voidmain(){ inta,b,c; for(a=0;a<=20;a++){ for(b=0;b<=33;b++){ for(c=0;c<=33;c++){ if(a+b+3*c==100&&5*a+3*b+c/3==100){ printf("一共购买了%d只公鸡%d只母鸡%d只小鸡。\n",a,b,3*c); } } } }}NO.1-2借书方案知多少(改编加强版)#include<stdio.h>voidmain(){ intbook,people,re=1; printf("请输入书本总数:"); scanf("%d",&book); printf("请输入借书人数:"); scanf("%d",&people); for(;people>=1;people--){ re*=book--; if(book<=0){ break; } } printf("一共有%d种借书方法。\n",re);}NO.1-3打渔还是晒网#include<stdio.h>voidmain(){ inty,m,d; intflag1=0,flag2=0,days=0; intre; printf("请输入一个在1990年1月1日之后的日期\n"); printf("格式示例:200011\n"); scanf("%d%d%d",&y,&m,&d);loop: if(y<1990||m<1||m>12||d<1||d>31){loop2:printf("您输入的日期有误,请重新输入\n"); scanf("%d%d%d",&y,&m,&d); gotoloop;} if((y-1988)%4==0){ flag1=1;} flag2=(y-1990)/4; switch(m) { case1:days=d;break; case2:days=31+d;if(flag1==0&&d>28){gotoloop2;}if(flag1==1&&d>29){gotoloop2;}break; case3:days=59+d;break; case4:days=90+d;if(d>30){gotoloop2;}break; case5:days=120+d;break; case6:days=151+d;if(d>30){gotoloop2;}break; case7:days=181+d;break; case8:days=212+d;break; case9:days=243+d;if(d>30){gotoloop2;}break; case10:days=273+d;break; case11:days=303+d;if(d>30){gotoloop2;}break; case12:days=335+d;break; } days+=365*(y-1990)+flag2; printf("今天是自开始起的第%d天\n",days); re=days%5; if(re<=3){ printf("今天某人要打渔\n");} else{ printf("今天某人要晒网\n");}}NO.1-4抓捕交通肇事犯#include<stdio.h>voidmain(){ intn,re; intflag1,flag2,flag3,flag4; for(n=0;n<=100;n++){ re=n*n; flag1=re/1000; re-=flag1*1000; flag2=re/100; re-=flag2*100; flag3=re/10; re-=flag3*10; flag4=re/1; if(flag1==flag2&&flag3==flag4&&flag1!=flag3){ printf("交通肇事犯的车牌号是%d\n",n*n); } }}NO.1-5兔子产子问题#include<stdio.h>voidmain(){ inta=0,b1=0,b2=2; intre=0,flag=1; for(;flag<=30;flag++){ printf("第%d月共有兔子%d只\n",flag,a+b1+b2); a+=b1; b1=b2; b2=a; }}NO.1-6牛顿迭代法求解#include<stdio.h>#include<math.h>voidmain(){ floata,b,c,d; floatx,re; floatfx,fx1; printf("请依次输入方程的三个系数a,b,c,d"); scanf("%f%f%f%f",&a,&b,&c,&d); printf("请输入方程根附近的一个实数"); scanf("%f",&x); do{ fx=a*x*x*x+b*x*x+c*x+d; fx1=3*a*x*x+2*b*x+c; x-=(fx/fx1); re=(fx/fx1); }while(fabs(re)>1e-5); printf("方程的解为%f\n",x);}NO.1-7最佳存钱方案#include<stdio.h>voidmain(){ floatm; inty,y1; floatsum=0; printf("请输入某人每年取钱金额:"); scanf("%f",&m); printf("请输入某人存钱年份:"); scanf("%d",&y); for(y1=y;y>0;y--){ sum=(sum+m)/1.0756; } printf("假设银行年息为0.0756,某人在%d年前存了%.2f元。\n",y1,sum);}NO.1-8冒泡排序#include<stdio.h>#definen10//在这里设置数组元素数量voidmain(){ inta[n]; inti,j; inttmp; printf("元素数量限制:%d个\n\n",n); for(i=0;i<n;i++){ printf("请输入第%d个数字:",i+1); scanf("%d",&a[i]); } for(i=0;i<n-1;i++){ for(j=0;j<n-i-1;j++){ if(a[j]>a[j+1]){ tmp=a[j+1]; a[j+1]=a[j]; a[j]=tmp; } } } printf("\n经过冒泡排序,该数组升序排列如下:\n"); for(i=0;i<n;i++){ printf("%d",a[i]); } printf("\n");}NO.1-9折半查找#include<stdio.h>#definen10//在这里设置数组元素数量voidmain(){ inta[n]={1,3,5,7,9,12,23,34,45,56}; inti=0,j=n-1,m; intflag,re=0,k; printf("请输入需要查找的数:"); scanf("%d",&flag); for(;i<j;){ m=(i+j)/2; if(flag<a[m]){ j=m-1;} else{ i=m;} if(a[i]==flag){ k=i;re=1;printf("整数m在数组中的下标为%d\n",k);break;} if(a[j]==flag){ k=j;re=1;printf("整数m在数组中的下标为%d\n",k);break;} if(re++==n){printf("NOTBEFOUND!\n");break;} }}NO.1-10进制转换(10进制以内的进制转换)#include<stdio.h>#include<math.h>voidmain(){ inta,b,c,d,e,f;//a=原始整数,b=目标整数,c=余数,d=计算进制用10的n次方数,e=反序目标整数 inta1,b1;//a1=原始整数进制,b1=目标整数进制 intre=1,flag=1,ten=0;//re=计算十进制整数的变量之一,flag=用以检查整数位数loop: printf("请输入初始整数:");//ten=转换过后的十进制数 scanf("%d",&a); printf("初始整数的进制为:"); scanf("%d",&a1); if(a1<=0||a1>10){printf("\n本函数不支持%d进制的计算,请重新输入\n\n\n",a1);gotoloop;}//检查进制限制 printf("目标整数的进制为:"); scanf("%d",&b1); if(b1<=0||b1>10){printf("\n本函数不支持%d进制的计算,请重新输入\n\n\n",b1);gotoloop;}//同上 for(flag=1;a!=0;flag++){//改为十进制数字 d=(int)pow(10,flag);//pow(x,y)计算x的y次方用的函数,结果为浮点型,(int)强行转换。此函数包含在在<math.h>函数库里 c=a%d; a=a-c; re=(int)pow(a1,flag-1); c=c/(d/10); ten+=(c*re); } for(b=0,flag=1;ten!=0;flag++){//从十进制改为目标整数进制 c=ten%b1; ten=ten/b1; d=(int)pow(10,flag-1); b+=c*d; } printf("\n原%d进制数变成%d进制数后为:%d\n",a1,b1,b);}NO.3-7高次方数的尾数计算(这个实验的问题主要在超量程)#include<stdio.h>#include<math.h>intfun(intre,intflag)//求尾数的函数{ intb,c,d,e; for(e=0,b=1;b<=flag;b++){ c=re%10; re=re/10; d=(int)pow(10,b-1); e=e+c*d; } returne;}voidmain()//主函数{ inta,b; intre,n,flag1;loop: printf("请依次输入<基数>

温馨提示

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

评论

0/150

提交评论