c语言参考题目---填空题
1. 代码填空
如果只提供加减乘除的基本运算能力,你能实现求平方根吗?可以的!先随便猜一个根,用它试除目标数字,如果结果恰好等于所猜的数,则问题解决。否则用结果与所猜的数字的平均值再去试除….
假设待开方的数字为 double a;
double t = a / 2 ; double t2; for(;;){ }
t2 = a / t;
if(fabs(t-t2)<0.001) break; t = ___(t+t2)/2______;
2. 代码填空
下列代码把一个串p复制到新的位置q。请填写缺少的语句;
char* p = \
char* q = (char*)malloc(strlen(p)+1);
for(int i=0;____i< strlen(p)+1_________; i++) q[i] = p[i];
3. 代码填空
“考拉兹猜想”(又称3n+1猜想、角谷猜想、哈塞猜想、乌拉姆猜想或叙拉古猜想) 和“哥德巴赫猜想”一样目前还没有用数学方法证明其完全成立。在1930年,德国汉堡大学的学生考拉兹,曾经研究过这个猜想,因而得名。在1960年,日本人角谷静夫也研究过这个猜想。
该猜想的叙述十分简单:从任何一个正整数n出发,若是偶数就除以2,若是奇数就乘3再加1,如此继续下去,经过有限步骤,总能得到1。例如:
17-52-26-13-40-20-10-5-16-8-4-2-1 该猜想虽然没有完全证明,但用计算机验证有限范围的数字却十分容易。以下是验证的代码,请补全缺少的部分。
for(int n=2; n<=10000; n++) {
int m = n; for(;;) {
if(____m%2==0________)
m = m / 2; else
第 1/9 页
};
}
{ }
m = m * 3 + 1;
if( m == 1 )
printf(\break;
4. 代码填空
1+3 = 4, 1+3+5 = 9, 1+3+5+7 = 16 它们的结果都是平方数。这是偶然的巧合吗?下面代码验证对于累加至1000以内的情况都成立。试完善之。
int n = 1;
for(int i=1; i<1000/2; i++) { }
n += 2 * i + 1;
int m = ___i+1 ___________; if( m * m != n) { }
printf(\加至%d 时不成立!\\n\break;
5. 代码填空
给定一个串,例如“abcdefg”,我们希望求出它的反转串,即:“gfedcba”。下列代码实现反转,请补充空白的部分。
char p[] = \
for(int i=0;___i<(strlen(p)/2)_______________; i++) { }
char t = p[i];
p[i] = p[strlen(p)-1-i]; p[strlen(p)-1-i] = t;
6. 代码填空
第 2/9 页
生活中人们往往靠直觉来进行粗略的判断,但有的时候直觉往往很不可靠。比如:如果你们班有30名同学,那么出现同一天生日的概率有多大呢?你可能不相信,这个概率高达70%左右。
以下的程序就是用计算机随机模拟,再统计结果。仔细阅读代码,补全空白的部分。
#define N 30 ......
printf(\int a[N];
srand( time( NULL ) ); int n = 0;
for(int k=0; k<10000; k++) { }
for(int i=0; i a[i] = rand() % 365; bool tag = false; // 假设没有相同 for(i=1; i if(tag) n++; for(int j=0; j ____if(tag) break________________; if(a[i]==a[j]) { } tag = true; break; 7. 代码填空 假设a,b,c是3个互不相等的整数。下列代码取出它们中居中的数值,记录在m中。其中的swap()函数可以交换两个变量的值。请完善代码。 if(a>b) swap(&a, &b); if(b>c) swap(&b, &c); if(a>b)_swap(&a,&b)_____________________; int m = b; 8. 代码填空 第 3/9 页 给定一个串,例如“aabbbcddddkkkmmmmaakkkk”我们希望去掉连续的重复字母,得出串:“abcdkmak”,下面代码实现了该功能,请完善之。 printf(\char* q = p; int i=0; for(;*q;) { } buf[i] = '\\0'; if(____i==0 _______|| *q != *(q-1)) { } q++; buf[i++] = *q; char* p = \char buf[100]; 9. 代码填空 口袋中有5只红球,4只白球。随机从口袋中取出3个球,则取出1个红球2个白球的概率是多大?类似这样的数学问题,在计算的时候往往十分复杂。但如果通过计算机模拟这个过程,比如进行100000次取球模拟,统计一下指定情况出现的次数对计算机来说是方便且快速的。同样,这个原理也适用于像天气预报这样复杂的系统过程。 以下的程序就是用于解决取球概率问题的。仔细阅读代码,补全空白的部分。 for(int j=0; j<3; j++) { int k = rand() % (9-j); if(x[k]==1) a++; b++; else int n = 0; for(int i=0; i<100000; i++) { char x[] = {1, 1, 1, 1, 1, 2, 2, 2, 2}; int a = 0; // 取到的红球的数目 int b = 0; // 取到的白球的数目 srand( (unsigned)time( NULL ) ); 第 4/9 页 } } ___x[k]=x[9-j-1]____if(x[k]==1)_x[k]=2;_______________; if(a==1 && b==2) n++; printf(\概率=%f\\n\ 10. 代码填空 下列代码把一个二进制的串转换为整数。请填写缺少的语句; char* p = \ int n = 0; for(int i=0;i n = __n+((p[strlen(p)-1-i])=='1'?pow(2,i):0)____ ______; // n+(*p++-‘\\0’)*(2^(strlen(p)-i-1)) //n*2+(p[i]-‘0’) } printf(\ 11. 代码填空 数列:Sn=1+ 1/2 + 1/3 + … 1/n 被称为调和数列,它“刚好”是不收敛的。这个数列和增长的速度是惊人缓慢的。下列代码求出n至少为多大,才能保证Sn > m。试完善之。 double m = 20; double x = 1; int i = 2; while(x printf(\ x += __1.00/(i++)____________; 12. 代码填空 仍一枚硬币,正面和反面向上的概率都是0.5,但多次仍硬币,总会出现连续多次同一面的情况。我们把每次的实验结果记录下来,形成一个串(0,1分别代表正面、反面向上)。 第 5/9 页 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库c语言参考题目-填空题在线全文阅读。
相关推荐: