《C填空题50题.doc》由会员分享,可在线阅读,更多相关《C填空题50题.doc(83页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、一、程序填空 共50题 (共计1500分)第1题 (30.0分) 题号:625/*-【程序填空】-功能:有一整数数组x(正序排列),判断是否有数组元素xi=i 的情况发生。-*/int index_search(int x, int n) int first = 0; int last = n-1; int middle, index; index = -1; while (first = last) middle = (first + last) / 2; /*SPACE*/ if (【?】) index = middle; break; /*SPACE*/ else if (【?】) la
2、st = middle - 1; else first = middle + 1; return index;#include void main(void) int x = -1, 0, 1, 3, 5, 7, 9, 10; int n = sizeof(x)/sizeof(int); int answer, i; printf(nIndex Search Program); printf(n=); printf(nnGiven Array :); for (i = 0; i = 0) printf(nnYES, x%d = %d has been found., answer, answe
3、r); else printf(nnNO, there is no element with xi = i);答案: 1). xmiddle = middle 2). xmiddle middle 或 middlexmiddle 3). answer = index_search(x, n)第2题 (30.0分) 题号:627/*-【程序填空】-功能:调用函数fun计算m=1-2+3-4+9-10,并输出结果。-*/int fun( int n) int m=0,f=1,i; /*SPACE*/ for(i=1;【?】;i+) m+=i*f; /*SPACE*/ 【?】; /*SPACE*/
4、return 【?】;main() printf(m=%dn, fun(10);答案: 1). i=n 2). f= -f 3). m第3题 (30.0分) 题号:628/*-【程序填空】- 题目:请补充函数fun(),该函数的功能是求一维数组xN的平均值,并对所得结果进行 四舍五入(保留两位小数) 例如:当x10=15.6, 19.9, 16.7, 15.2, 18.3, 12.1, 15.5, 11.0, 10.0, 16.0, 结果为:avg=15.030000。- 注意:仅能用表达式或语句替换填空标记,填勿改动主函数main和其他函数中的任何内容。 -*/#include#includ
5、edouble fun(double x10) int i; long t; double avg=0.0; double sum=0.0; for(i=0;i10;i+) sum += xi; avg=sum/10;/*SPACE*/ avg=【?】;/*SPACE*/ t=【?】; avg=(double)t/100; return avg;main() double avg,x10=15.6,19.9,16.7,15.2,18.3,12.1,15.5,11.0,10.0,16.0; int i; printf(nThe original data is :n); for(i=0;i10;
6、i+) printf(%6.1f,xi); printf(nn); avg=fun(x); printf(average=%fnn,avg);答案: 1). avg * 1000 或 avg * 1000+5 2). ( avg + 5 )/10 或 avg/10第4题 (30.0分) 题号:629/*-【程序填空】- 题目:从键盘输入一组无符号整数并保存在数组xxN中,以整数0结束输入,要求这些 数的最大位数不超过位,其元素的个数通过变量num传入函数fun()。请补充函 数fun(),该函数的功能是:从数组xx中找出个位和十位的数字之和大于5的所 有无符号整数,结果保存在数组yy中,其个数
7、由函数fun()返回。 例如:当xx8=123,11,25,222,42,333,14,5451时,bb4=25,42,333,5451。- 注意:仅能用表达式或语句替换填空标记。填勿改动主函数main和其他函数中的任何内容。 -*/#include #define N 1000int fun(int xx,int bb,int num) int i, n=0; int g, s; for(i=0;i5)/*SPACE*/ 【?】; return n;main() int xxN; int yyN; int num=0,n=0,i=0; printf(Input number :n); do
8、scanf(%u,&xxnum); while(xxnum+!=0); n=fun(xx,yy,num); printf(nyy=); for(i=0;in;i+) printf(%u ,yyi);答案: 1). xxi%10 2). bbn+=xxi第5题 (30.0分) 题号:633/*-【程序填空】-题目:对只包含-和字母字符的字符串str进行如下处理: 删除str中前导和尾部连续的-字符,保留串中字母字符以 及字母间的-字符。 例如,str中初始字符串为-C-Language-Test-。 处理后,str中的字符串为C-Language-Test。 程序中isalpha函数功能是判断参
9、数是否是字母,是字母, 函数值为真,否则函数值为假。-注意:请勿改动主函数main()中的其他内容。-*/#include #include void main() char str=-C-Language-Test-; int i,start,end; i=0; while(stri+=-) ; start=i-1;/*SPACE*/ while(stri != 【?】) if(isalpha(stri) end=-1; else if(isalpha(stri-1) end=i-1; i+; strend+1=0; for(i=start;i=end+1;i+)/*SPACE*/ stri
10、-【?】 = stri; printf(%sn,str);答案: 1). 0 或 0 2). start第6题 (30.0分) 题号:635/*-【程序填空】-题目:1、第一个for循环中给a数组10个元素依次赋字符 A、B、C、D、E、V、W、X、Y、Z。 2、第二个for循环中使a数组10个元素的值对称折叠,变成 A、B、C、D、E、E、D、C、B、A。 3、第三个for循环输出的字符依次是 A、B、C、D、E、A、B、C、D、E。-注意:请勿改动主函数main()中的其他内容。-*/#include void main() int a10; int i; for(i=0;i10;i+)
11、if(i5) ai=i+65;/*SPACE*/ else ai=【?】; for(i=0; i5; i+) a9-i=ai; for(i=0;i10;i+)/*SPACE*/ printf(%ct,ai5 【?】); printf(n);答案: 1). i+81 或 81+i 或 i+Q 或 Q+i 或 V+i-5 或 V-5+i 或 i-5+V 或 i+V-5 2). ? i:i-5 或 ? i:14-i第7题 (30.0分) 题号:636/*-【程序填空】-题目:将输入的一个十进制正整数转换为十六进制字符形式并显示。-注意:请勿改动主函数main()中的其他内容。-*/#include
12、void main() char dex17=0123456789ABCDEF; int c8,i,base=16; int n; printf(输入十进制正整数 ); scanf(%d,&n); i=0; do/*SPACE*/ ci+=【?】; n=n/base; while(n); printf(对应的十六进制数 ); for(-i;i=0;i-)/*SPACE*/ printf(%c,dex【?】); printf(n);答案: 1). n%base 或 n % 16 或 n & (base-1) 或 n & 15 或 n & 0xf 或 n & 0x0f 2). ci第8题 (30.
13、0分) 题号:637/*-【程序填空】-题目:统计字符串str中单词的数量、最长单词的字母数、最短单 词字母数。单词之间至少有一个空格。假设str中最长单词 不超过20个字母。程序中isalpha函数功能是判断参数是否 是字母字符,如果是字母字符,函数返回真,否则函数返 回假。-注意:请勿改动主函数main()中的其他内容。-*/#include #include void main() int i,len=0; int numofword,maxlen,minlen; char str1000=Robots can feel happy, sad, angry, drowsy, hungry
14、 or fearful. They also have various personalities.;/*SPACE*/ numofword=【?】; maxlen=0; minlen=20; for(i=0;stri;i+) if(!(isalpha(stri) & isalpha(stri-1) maxlen=lenmaxlen? len: maxlen; minlen=lenminlen? len: minlen; len=0; numofword+; else if(isalpha(stri)/*SPACE*/ 【?】; printf(单词数=%d,最长单词字母数=%d,最短单词字母数
15、=%dn,numofword,maxlen,minlen);答案: 1). 0 2). len+ 或 +len 或 len=len+1 或 len=1+len 或 len+=1第9题 (30.0分) 题号:634/*-【程序填空】-题目:随机产生10个范围在0,99之间,互不相同的正整数存入 数组t,并求出这10个数据的最小值和次小值。其中最小值 存入min1,次小值存入min2。程序中rand()函数功能是产 生一个随机正整数。-注意:请勿改动主函数main()中的其他内容。-*/#include #include void main() int n100=0,t10; int i=0,k;
16、 int min1=100, min2=100; srand(32767); while(i10) do k=rand()%100; while(nk); nk=1;/*SPACE*/ t【?】=k; for(i=0;i10;i+) printf(%dt,ti); if(timin1)/*SPACE*/ 【?】; min1=ti; else if(timin2) min2=ti; printf(nmin1= %d,min2= %dn,min1,min2);答案: 1). i+ 2). min2=min1第10题 (30.0分) 题号:638/*-【程序填空】-题目:函数gcd()计算整型数组a
17、中相邻两元素的最大公约数,最 小公倍数,其中最大公约数存入数组b中,最小公倍数存入 数组c中。-注意:请勿改动主函数main()中的其他内容。-*/#include #include void gcd(int a,int n,int b,int c) int i,x,y,z;/*SPACE*/ for(i=0;i【?】;i+) x=ai; y=ai+1; while(z=x%y) x=y;y=z; bi=y;/*SPACE*/ ci=ai*ai+1/【?】; int main() int a5=8,12,5,7,14; int b4,c4; int i; gcd(a,5,b,c); for(i
18、=0;i5;i+) printf(%dt,ai); printf(n); for(i=0;i4;i+) printf(%dt,bi); printf(n); for(i=0;i4;i+) printf(%dt,ci); printf(n); getch(); return 0;答案: 1). n-1 或 =n-2 2). bi 或 y第11题 (30.0分) 题号:639/*-【程序填空】-题目:函数reverse()对字符串str进行逆序。-注意:请勿改动主函数main()中的其他内容。-*/#include#include#includevoid reverse(char str) int
19、 len, j; char c;/*SPACE*/ len = 【?】(str);/*SPACE*/ for (j=len-1; 【?】; j-) c=strj; strj=strlen-1-j; strlen-1-j=c; int main() char a80; printf(Please enter a string: ); gets(a); reverse(a); printf(The inversed string is: ); puts(a); getch(); return 0;答案: 1). strlen 2). j=len/2 或 j=len1 或 j=(len1)第12题
20、(30.0分) 题号:640/*-【程序填空】-题目:对主函数main()中数组a进行处理:如果相邻元素相同则保留 一个。例如对数组a处理后,它的前11个元素为 -5,7,-4,25,0,2,4,16,8,5,20。-注意:请勿改动主函数main()中的其他内容。-*/#include #include int main() int a20=-5,-5,7,-4,-4,25,25,0,0,0,2,4,16,16,8,5,5,5,5,20; int i,prev,next; prev=0; next=1; while(next20)/*SPACE*/ if(aprev!=【?】) a+prev=
21、anext; next+; /*SPACE*/ for(i=0;i【?】prev;i+) printf(%d ,ai); printf(n); getch(); return 0;答案: 1). anext 2). =第13题 (30.0分) 题号:641/*-【程序填空】-题目:程序输出由03四个数字组成的符合下列条件的4位整数: 1. 每个4位整数中,03四个数字只能出现一次; 2. 百位数不能为3,十位数不能为2。 3.本题答案正确可能无法评到分,如对请与老师联系。-注意:请勿改动主函数main()中的其他内容。-*/#include #include int main()int g,s
22、,b,q;int num=0;for(b=0;b4;b+)if(b=3) continue;for(s=0;s4;s+)if(b=s)|(s=2) continue;/*SPACE*/for(q=【?】;q4;q+)if(q=b)|(q=s) continue;/*SPACE*/g=【?】-q-b-s;printf(%dn,q*1000+b*100+s*10+g);num+;printf(%dn,num);getch();return 0;答案: 1). 1 2). 6 或 1+2+3第14题 (30.0分) 题号:642/*-【程序填空】-题目:在一维数组a中找出最大,最小元素,并将最大元素
23、和数组 最后一个元素交换,最小元素和数组首元素交换。-注意:请勿改动主函数main()中的其他内容。-*/#include #include int main() int a10=15,8,12,6,10,1,4,5,9,-3; int i,t,max_index,min_index; max_index=min_index=0; for(i=1;iamax_index) max_index=i; if(aiamin_index) min_index=i; t=a0;a0=amin_index;amin_index=t;/*SPACE*/ if(max_index=【?】) t=amin_in
24、dex;amin_index=a9;a9=t; else/*SPACE*/ 【?】; for(i=0;i10;i+) printf(%dt,ai); printf(n); getch(); return 0;答案: 1). 0 2). t=amax_index;amax_index=a9;a9=t 或 t=a9;a9=amax_index;amax_index=t;第15题 (30.0分) 题号:643/*-【程序填空】-题目:下面的程序首先随机产生20个大于或等于900且小于1000的 素数,然后将这些素数保存在数组array中,并将这些素数 在屏幕上以每行打印5个的格式输出,请将程序补充完整。-注意:请勿改动主函数main()中的其他内容 且不能使用C语言的库函数。-*/#include #include #include /*函数isPrime(int m)用于判断整数m是否为素数*/int isPrime(int m) int flag=0; int i=2,k; k=(int)sqrt(m);/*