c语言题库~程序填空(376页).doc
-试卷编号:8301所属语言:C语言试卷方案:C-程序填空试卷总分:1290分共有题型:1种一、程序填空 共129题 (共计1290分)第1题 (10.0分) 题号:35/*-【程序填空】-功能:计算并输出high以内最大的10个素数之和,high由主函数传 给fun函数,若high的值为100,则函数的值为732。-*/#include <conio.h>#include <stdio.h>#include <math.h>int fun( int high ) int sum = 0, n=0, j, yes; /*SPACE*/ while (high >= 2) && (【?】) yes = 1; for (j=2; j<=high/2; j+ ) /*SPACE*/ if (【?】) yes=0; break; if (yes) sum +=high; n+; high-; /*SPACE*/ 【?】;main ( ) printf("%dn", fun (100);答案:=(答案1)=n<10=或=10>n=(答案2)=high%j = 0=或=!(high%j)=(答案3)=return sum=或=return (sum)第2题 (10.0分) 题号:401/*-【程序填空】-功能:输入某年某月某日,判断这一天是这一年的第几天?-*/#include <stdio.h>main() int day,month,year,sum,leap; printf("nplease input year,month,dayn"); scanf("%d,%d,%d",&year,&month,&day); switch(month) case 1:sum=0;break; case 2:sum=31;break; case 3:sum=59;break; /*SPACE*/ case 4:【?】;break; case 5:sum=120;break; case 6:sum=151;break; case 7:sum=181;break; case 8:sum=212;break; case 9:sum=243;break; case 10:sum=273;break; case 11:sum=304;break; case 12:sum=334;break; default:printf("data error");break; /*SPACE*/ 【?】; /*SPACE*/ if(year%400=0|(【?】) leap=1; else leap=0; /*SPACE*/ if(【?】) sum+; printf("it is the %dth day.",sum);答案:=(答案1)=sum=90=(答案2)=sum=sum+day=或=sum= sum + day=(答案3)=year%4 = 0 && year%100 != 0)=(答案4)=leap=1&&month>2=或=leap = 1 && month>2=或=leap = 1 && 2<month第3题 (10.0分) 题号:21/*-【程序填空】-功能:将一个字符串中的前N个字符复制到一个字符数组中去, 不许使用strcpy函数。-*/#include <stdio.h>main ( ) char str180,str280; int i,n; /*SPACE*/ gets(【?】); scanf("%d",&n); /*SPACE*/ for (i=0; 【?】 ;i+) /*SPACE*/ 【?】; /*SPACE*/ 【?】; printf("%sn",str2);答案:=(答案1)=str1=(答案2)=i<n=或=n>i=或=i<=n-1=或=n-1>=i=(答案3)=str2i=str1i=或=*(str2+i)=*(str1+i)=或=*(str2+i)=str1i=或=str2i=*(str1+i)=(答案4)=str2n='0'=或=str2i='0'=或=str2n=0=或=str2i=0=或=*(str2+n)='0'=或=*(str2+i)='0'=或=*(str+n)=0=或=*(str2+i)=0第4题 (10.0分) 题号:443/*-【程序填空】-功能:企业发放的奖金根据利润提成。利润(i)低于或等于10万元 时,奖金可提10%;利润高于10万元,低于20万元时,低于 10万元的部分按10%提成,高于10万元的部分,可可提成7.5% ;20万到40万之间时,高于20万元的部分,可提成5%;40万 到60万之间时高于40万元的部分,可提成3%;60万到100万 之间时,高于60万元的部分,可提成1.5%,高于100万元时, 超过100万元的部分按1%提成,从键盘输入当月利润i,求 应发放奖金总数?-*/#include <stdio.h>main() long int i; double bonus1,bonus2,bonus4,bonus6,bonus10,bonus; scanf("%ld",&i); bonus1=100000*0.1;bonus2=bonus1+100000*0.75; bonus4=bonus2+200000*0.5; bonus6=bonus4+200000*0.3; bonus10=bonus6+400000*0.15; if(i<=100000) bonus=i*0.1; /*SPACE*/ else if(【?】) bonus=bonus1+(i-100000)*0.075; /*SPACE*/ else if(【?】) bonus=bonus2+(i-200000)*0.05; /*SPACE*/ else if(【?】) bonus=bonus4+(i-400000)*0.03; else if(i<=1000000) bonus=bonus6+(i-600000)*0.015; else bonus=bonus10+(i-1000000)*0.01; /*SPACE*/ 【?】("bonus=%d",bonus);答案:=(答案1)=i<=200000=或=200000>=i=(答案2)=i<=600000=或=600000>=i=(答案3)=i<=1000000=或=1000000>=i=(答案4)=printf第5题 (10.0分) 题号:27/*-【程序填空】-功能:统计一个字符串中的字母、数字、空格和其它字符的个数。-*/#include <stdio.h>void fun(char s,int b) int i; for (i=0;si!='0'i+) if ('a'<=si&&si<='z'|'A'<=si&&si<='Z') b0+; /*SPACE*/ else if (【?】) b1+; /*SPACE*/ else if (【?】 ) b2+; else b3+;main () char s180;int a4=0; int k; /*SPACE*/ 【?】; gets(s1); /*SPACE*/ 【?】; puts(s1); for(k=0;k<4;k+) printf("%4d",ak);答案:=(答案1)='0'<=si && si<='9'=或=si>='0' && si<='9'=或='0'<=si && '9'>=si=或=si>='0' && '9'>=si=或=48<=si && si<=57=或=si>=48 && si<=57=或=48<=si && 57>=si=或=si>=48 && 57>=si=或=!( si < 48 | si > 57 )=或=!( si < '0' | si > '9' )=(答案2)=si = ' '=或=si = 32=(答案3)=void fun(char s,int b)=(答案4)=fun(s1,a)第6题 (10.0分) 题号:466/*-【程序填空】-功能:用二分法求方程2X3+4X2+3X-6=0在(-10,10)之间的根 ,其中 Xn代表X的n次方。-*/#include <stdio.h># include <math.h>main() float x0,x1,x2,fx0,fx1,fx2; do printf("Enter x1&x2:"); scanf("%f,%f",&x1,&x2); fx1=x1*(2*x1-4)*x1+3)-6; fx2=x2*(2*x2-4)*x2+3)-6; /*SPACE*/ while (fx1*fx2【?】); do x0=(x1+x2)/2; fx0=x0*(2*x0-4)*x0+3)-6; /*SPACE*/ if(fx0*fx1【?】) x2=x0; fx2=fx0; else x1=x0; fx1=fx0; /*SPACE*/ while(【?】>=1e-5); printf("x=%6.2fn",x0);答案:=(答案1)=>0=(答案2)=<0=(答案3)=fabs(fx0)第7题 (10.0分) 题号:423/*-【程序填空】-功能:考查字符串数组的应用。输出26个英文字母。-*/#include <stdio.h>void main (void) char string256; int i; /*SPACE*/ for (i = 0; i < 26; 【?】) /*SPACE*/ stringi = 【?】; stringi = '0' /*SPACE*/ printf ("the arrary contains %sn",【?】);答案:=(答案1)=i+=或=+i=或=i=i+1=或=i+=1=(答案2)='A' + i=或=i+'A'=或=65 + i=或=i+65=(答案3)=string第8题 (10.0分) 题号:412/*-【程序填空】-功能:写一个函数,求一个字符串的长度,在main函数中输入字 符串,并输出其长度。-*/#include <stdio.h>main() int length(char *p); int len; char str20; printf("please input a string:n"); scanf("%s",str); /*SPACE*/ len=length(【?】); printf("the string has %d characters.",len);/*SPACE*/【?】(p)char *p; int n; n=0; while(*p!='0') /*SPACE*/ 【?】; /*SPACE*/ 【?】; return n;答案:=(答案1)=str=(答案2)=length=或=int length=(答案3)=n+=或=+n=或=n=n+1=或=n+=1=(答案4)=p+=或=+p=或=p=p+1=或=p+=1第9题 (10.0分) 题号:24/*-【程序填空】-功能:对任一整数N(N0),它都可以分解成1(或-1)和一些质数(素 数)因子的形式。例如:当N=150时,可分解成1×2×3×5×5; 当N=-150时,可分解为-1×2×3×5×5。 下边程序能实现这种分解过程。当N=150,输出以下分解结 果:N= 1* 2* 3* 5* 5-*/#include <stdio.h>#include <stdlib.h>main() int n,i,r; scanf("%d",&n); if (n=0) printf ("data error n"); exit(0); /*SPACE*/ else if (【?】) printf("n=1"); else printf("n=-1"); n=-n; /*SPACE*/ for(【?】;i<=n;i+) /*SPACE*/ 【?】 ; while(r=0) printf("*%d",i); /*SPACE*/ 【?】 ; r=n%i; printf("n");答案:=(答案1)=n>0=或=0<n=(答案2)=i=2=(答案3)=r=n%i=(答案4)=n=n/i=或=n/=i第10题 (10.0分) 题号:436/*-【程序填空】-功能:输出两个整数中大的那个数,两个整数由键盘输入。-*/#include <stdio.h>#include <stdlib.h>void main() int *p1,*p2; /*SPACE*/ p1=【?】malloc(sizeof(int); p2=(int*)malloc(sizeof(int); /*SPACE*/ scanf("%d%d",【?】,p2); if(*p2>*p1) *p1=*p2; free(p2); /*SPACE*/ printf("max=%dn",【?】);答案:=(答案1)=(int *)=(答案2)=p1=(答案3)=*p1第11题 (10.0分) 题号:410/*-【程序填空】-功能:有n个整数,使其前面各数顺序向后移m个位置,最后m个数 变成最前面的m个数-*/#include <stdio.h>/*SPACE*/move(【?】)int n,m,array20; int *p,array_end; /*SPACE*/ array_end=*(【?】); for(p=array+n-1;p>array;p-) /*SPACE*/ *p=*(【?】); *array=array_end; m-; if(m>0) move(array,n,m);main() int number20,n,m,i; printf("the total numbers is:"); scanf("%d",&n); printf("back m:"); scanf("%d",&m); for(i=0;i<n-1;i+) scanf("%d,",&numberi); scanf("%d",&numbern-1); /*SPACE*/ move(【?】); for(i=0;i<n-1;i+) printf("%d,",numberi); printf("%d",numbern-1);答案:=(答案1)=array,n,m=(答案2)=array+n-1=或=array + n -1=(答案3)=p-1=或=p -1=(答案4)=number,n,m第12题 (10.0分) 题号:29/*-【程序填空】-功能:下面函数为二分法查找key值。数组中元素已递增排序, 若找到key则返回对应的下标,否则返回-1。-*/#include <stdio.h>fun(int a,int n,int key) int low,high,mid; low=0; high=n-1; /*SPACE*/ while(【?】) mid=(low+high)/2; if(key<amid) /*SPACE*/ 【?】; else if(key>amid) /*SPACE*/ 【?】; else /*SPACE*/ 【?】; return -1;main() int a10=1,2,3,4,5,6,7,8,9,10; int b,c; b=4; c=fun(a,10,b); if(c=1) printf("not found"); else printf("position %dn",c);答案:=(答案1)=low<=high=或=high>=low=(答案2)=high=mid-1=(答案3)=low= mid + 1=(答案4)=return mid=或=return (mid)第13题 (10.0分) 题号:425/*-【程序填空】-功能:当输入“2,5”的时候输出为“2 5 5”-*/#include <stdio.h>#define max 100main() int fmax,i,j,k,m; scanf("%d,%d",&k,&m); /*SPACE*/ for(i=0;i<=【?】;i+) fi=0; /*SPACE*/ f【?】=1; for(i=k;i<=m;i+) /*SPACE*/ for(j=i-k;j<=i-1;j+) fi【?】fj; printf("%d%10d%10dn",k,m,fm);答案:=(答案1)=m=(答案2)=k-1=(答案3)=+=或=fi+第14题 (10.0分) 题号:450/*-【程序填空】-功能:一个40磅重的板碎成4块,每块正好是一个整数磅,且用这 4块当砝码能称出140磅的整数重量的物体。编程求这4块 的各自重量。-*/#include <stdio.h>#include <stdlib.h>main() int i,j,k,l,p,t1,t2,t3,t4; for(i=1;i<38;i+) /*SPACE*/ for(【?】;j<38-i;j+) /*SPACE*/ for(k=j;k<【?】;k+) l=40-i-j-k; for(p=1;p<40;p+) for(t1=-1;t1<2;t1+) for(t2=-1;t2<2;t2+) for(t3=-1;t3<2;t3+) for(t4=-1;t4<2;t4+) /*SPACE*/ if(【?】=p) goto next; break; /*SPACE*/