版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第10/10页c语言参考题目填空题代码填空如果只提供加减乘除的基本运算能力,你能实现求平方根吗?可以的!先随便猜一个根,用它试除目标数字,如果结果恰好等于所猜的数,则问题解决。否则用结果与所猜的数字的平均值再去试除….假设待开方的数字为doublea; doublet=a/2; doublet2; for(;;){ t2=a/t; if(fabs(t-t2)<0.001)break; t=_________; }答案:(t+t2)/2注意:(t+t2)/2.0,(t2+t)*0.5都算对的。代码填空下列代码把一个串p复制到新的位置q。请填写缺少的语句; char*p="abcde"; char*q=(char*)malloc(strlen(p)+1); for(inti=0;_____________;i++)q[i]=p[i];参考答案:i<=strlen(p)注意:关键是<=不能写成<,但i<strlen(p)+1是对的。代码填空“考拉兹猜想”(又称3n+1猜想、角谷猜想、哈塞猜想、乌拉姆猜想或叙拉古猜想)和“哥德巴赫猜想”一样目前还没有用数学方法证明其完全成立。在1930年,德国汉堡大学的学生考拉兹,曾经研究过这个猜想,因而得名。在1960年,日本人角谷静夫也研究过这个猜想。该猜想的叙述十分简单:从任何一个正整数n出发,若是偶数就除以2,若是奇数就乘3再加1,如此继续下去,经过有限步骤,总能得到1。例如:17-52-26-13-40-20-10-5-16-8-4-2-1该猜想虽然没有完全证明,但用计算机验证有限范围的数字却十分容易。以下是验证的代码,请补全缺少的部分。 for(intn=2;n<=10000;n++) { intm=n; for(;;) { if(____________) m=m/2; else m=m*3+1; if(m==1) { printf("%dok!\n",n); break; } } };参考答案:m%2==0注意:(m%2)==0当然也正确。代码填空1+3=4,1+3+5=9,1+3+5+7=16它们的结果都是平方数。这是偶然的巧合吗?下面代码验证对于累加至1000以内的情况都成立。试完善之。 intn=1; for(inti=1;i<1000/2;i++) { n+=2*i+1; intm=______________; if(m*m!=n) { printf("加至%d时不成立!\n",2*i+1); break; } }参考答案:i+1代码填空给定一个串,例如“abcdefg”,我们希望求出它的反转串,即:“gfedcba”。下列代码实现反转,请补充空白的部分。 charp[]="abcdef"; for(inti=0;__________________;i++) { chart=p[i]; p[i]=p[strlen(p)-1-i]; p[strlen(p)-1-i]=t; }参考答案:i<strlen(p)/2注意:不能写成<=代码填空生活中人们往往靠直觉来进行粗略的判断,但有的时候直觉往往很不可靠。比如:如果你们班有30名同学,那么出现同一天生日的概率有多大呢?你可能不相信,这个概率高达70%左右。以下的程序就是用计算机随机模拟,再统计结果。仔细阅读代码,补全空白的部分。#defineN30 inta[N]; srand(time(NULL)); intn=0; for(intk=0;k<10000;k++) { for(inti=0;i<N;i++) a[i]=rand()%365; booltag=false;//假设没有相同 for(i=1;i<N;i++) { for(intj=0;j<i;j++) { if(a[i]==a[j]) { tag=true; break; } } _____________________; } if(tag)n++; } printf("%f\n",1.0*n/10000*100);答案:if(tag)break当然,if(tag==true)if(tag!=false)都是可能的写法。代码填空假设a,b,c是3个互不相等的整数。下列代码取出它们中居中的数值,记录在m中。其中的swap()函数可以交换两个变量的值。请完善代码。 if(a>b)swap(&a,&b); if(b>c)swap(&b,&c); ______________________; intm=b;参考答案:if(a>b)swap(&a,&b)注意:a>b也可写为b<aswap(&a,&b)写为:swap(&b,&a)也是对的。代码填空给定一个串,例如“aabbbcddddkkkmmmmaakkkk”我们希望去掉连续的重复字母,得出串:“abcdkmak”,下面代码实现了该功能,请完善之。 char*p="aabbbcddddkkkmmmmaakkkk"; charbuf[100]; char*q=p; inti=0; for(;*q;) { if(___________||*q!=*(q-1)) { buf[i++]=*q; } q++; } buf[i]='\0'; printf("%s\n",buf);参考答案:q==p注意:p==q也是正确的代码填空口袋中有5只红球,4只白球。随机从口袋中取出3个球,则取出1个红球2个白球的概率是多大?类似这样的数学问题,在计算的时候往往十分复杂。但如果通过计算机模拟这个过程,比如进行100000次取球模拟,统计一下指定情况出现的次数对计算机来说是方便且快速的。同样,这个原理也适用于像天气预报这样复杂的系统过程。以下的程序就是用于解决取球概率问题的。仔细阅读代码,补全空白的部分。 srand((unsigned)time(NULL)); intn=0; for(inti=0;i<100000;i++) { charx[]={1,1,1,1,1,2,2,2,2}; inta=0;//取到的红球的数目 intb=0;//取到的白球的数目 for(intj=0;j<3;j++) { intk=rand()%(9-j); if(x[k]==1) a++; else b++; _______________________; } if(a==1&&b==2)n++; } printf("概率=%f\n",n/100000.0*100);答案:x[k]=x[9-j-1]当然,9-1-j9-(j+1)9-(1+j)都是可能的写法。代码填空下列代码把一个二进制的串转换为整数。请填写缺少的语句; char*p="1010110001100"; intn=0; for(inti=0;i<strlen(p);i++) { n=__________________; } printf("%d\n",n);参考答案:n*2+(p[i]-'0')注意:加法减法的顺序可以灵活,乘法可以交换,也可以n+n;p[i]可以写为*(p+i)'0'可以写为48代码填空数列:Sn=1+1/2+1/3+…1/n被称为调和数列,它“刚好”是不收敛的。这个数列和增长的速度是惊人缓慢的。下列代码求出n至少为多大,才能保证Sn>m。试完善之。 doublem=20; doublex=1; inti=2; while(x<m) { x+=______________; } printf("%d",i);参考答案:1.0/i++注意:1.0错写为1则扣除3分1.0写为1d或1f或(double)1或(float)1都可以算正确代码填空仍一枚硬币,正面和反面向上的概率都是0.5,但多次仍硬币,总会出现连续多次同一面的情况。我们把每次的实验结果记录下来,形成一个串(0,1分别代表正面、反面向上)。下面的程序统计出0或1最大连续出现的次数。试完善之。 char*p="100111000100101010001010111100000000100001111111000000"; intlen=strlen(p); intmax_k=1; intk=1; for(inti=1;i<len;i++) { if(p[i]==p[i-1]) k++; else { _________________________; k=1; } } printf("%d\n",max_k);参考答案:if(k>max_k)max_k=kif(max_k<k)也是正确的代码填空形如:“abccba”,“abcba”的串称为回文串,下列代码判断一个串是否为回文串。请补充空白的部分。 charbuf[]="abcde11edcba"; intx=1; for(inti=0;i<strlen(buf)/2;i++) if(___________________) { x=0; break; } printf("%s\n",x?"是":"否");参考答案:buf[i]!=buf[strlen(buf)-1-i]注意:!=前后交换可以。减法交换可以buf[i]等价于*(buf+i)A!=B等价于!(A==B)代码填空计算3个A,2个B可以组成多少种排列的问题(如:AAABB,AABBA)是《组合数学》的研究领域。但有些情况下,也可以利用计算机计算速度快的特点通过巧妙的推理来解决问题。下列的程序计算了m个A,n个B可以组合成多少个不同排列的问题。请完善它。intf(intm,intn){ if(m==0||n==0)return1; return_______________________;}答案:f(m-1,n)+f(m,n-1)当然,加法交换是可以的代码填空因数分解是十分基本的数学运算,应用广泛。下面的程序对整数n(n>1)进行因数分解。比如,n=60,则输出:2235。请补充缺失的部分。voidf(intn){ for(inti=2;i<n/2;i++) { ____________________ { printf("%d",i); n=n/i; } } if(n>1)printf("%d\n",n);}参考答案:while(n%i==0)注意:for(;n%i==0;)逻辑上也是正确的,但中间出现分号,与说明相违。代码填空下列代码实现把一个串“轮换”拷贝。既是:把"abcdef"拷贝为:"bcdefa"。请补充缺少的语句。 char*p="abcdef"; char*q=(char*)malloc(strlen(p)+1); for(inti=0,intlen=strlen(p);i<len-1;i++) q[i]=p[i+1]; q[len-1]=p[0]; _____________________; printf("%s\n",q);参考答案:q[len]='\0'注意:q[len]=0也是对的。当然:q[len]写为:q[strlen(p)]也对代码填空穷举法是计算机解决某些问题的重要手段。为了估算可能性的数目,经常需要计算组合或排列的数目,下面的代码输出从m个物体中任取出n个物体的不同方案的数目(此处假设:m,n>1且m>=n)。试完善之。intf(intm,intn){ inta=1; intm1=m; ______________ a*=m1--; intb=1; while(n>1) b*=n--; returna/b;}参考答案:while(m1>m-n)当然,while(m1>=m-n+1)也是对的。代码填空任意给定一个4位数(不能所有位都相同),比如:3278,重新组合出最大数:8723,再重新组合出最小数:2378,相减,得到新的4位数(如不足则补0),重复这个过程,最后必然得到一个数字:6174。这个现象被称为:数字黑洞。下面的函数实现由给定的4位整数求出下一个整数的功能。请完善之。intf(intn){ intN[4]; for(inti=0;i<4;i++) { N[3-i]=n%10; ___________________; } for(i=0;i<3;i++) for(intj=0;j<3-i;j++) if(N[j]>N[j+1]) { intt=N[j+1]; N[j+1]=N[j]
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度摄影棚租赁合同:实际用户摄影棚租赁协议(2024版)3篇
- 全新房地产开发商2024年度销售代理合同5篇
- 2024年度校园广播设备能源消耗与环保标准合同2篇
- 2024公司往来借款合同
- 二零二四年度书画艺术品购销合同with真伪鉴定与保养指南2篇
- 2024年家庭财产分割详细合同一
- 2024优先采购协议
- 基于2024年度的国际保险业务合作与授权合同3篇
- 2024年度石子购销数据共享合同
- 2024版铜门价格条款协议3篇
- 2024新版《药品管理法》培训课件
- 2024年国家公务员考试《行测》真题卷(行政执法)答案和解析
- 《陆上风电场工程设计概算编制规定及费用标准》(NB-T 31011-2019)
- 消控室 中控室消防业务培训
- 坐标正反算excel表格
- 土方开挖工程隐蔽工程验收记录
- 陶粒混凝土配合比
- 设备年度检修计划表1
- 《物流设施与设备》期末试卷A及答案(共5页)
- CSR 蓝牙开发指南
- 网络小说(英文).ppt
评论
0/150
提交评论