全真c语言程序填空题考试题库!!!(27页).doc
-全真c语言程序填空题考试题库!-第 27 页c语言程序填空!这就是考试题库!共计131道试题一、程序填空 (共131题)Turbo C(共131试题)3)/*-【程序填空】功能:已定义一个含有30个元素的数组s,函数fun1的功能是按顺序分别赋予各元素从2开始的偶数,函数fun2则按顺序每五个元素求一个平均值, 并将该值存放在数组w中。float s30,w6;fun1(float s)int k,i;for(k=2,i=0;i<30;i+)/*SPACE*/_ ;k+=2;fun2(float s,float w)float sum=0.0;int k,i;for(k=0,i=0;i<30;i+)sum+=si;/*SPACE*/_;wk=sum/5;/*SPACE*/_ ;k+;main()int i;fun1(s);/*SPACE*/_;for(i=0;i<30;i+)if(i%5=0) printf("n");printf("%8.2f",si);printf("n");for(i=0;i<6;i+)printf("%8.2f",wi);答案:【1】 si=k 或 si=(i+1)*2【2】 if( ( i + 1 )%5 = 0 ) 或 if( ( i + 1 )/5*5 =i+1)【3】 sum=0 或 sum=0.0【4】 fun2(s,w)4)/*-【程序填空】功能:下面的程序是求1!+3!+5!+n!的和。main()long int f,s;int i,j,n;/*SPACE*/_;scanf("%d",&n);/*SPACE*/for(i=1;i<=n; _)f=1;/*SPACE*/for(j=1; _;j+)/*SPACE*/_;s=s+f;printf("n=%d,s=%ldn",n,s);答案:【1】 s=0【2】 i+=2 或 i=i+2 或 i+,i+【3】 j<=i 或 i>=j 或 j<i+1 或 i+1>j【4】 f= f * j5)/*-【程序填空】功能:将一个字符串中下标为m的字符开始的全部字符复制成为另一个字符串。#include<stdio.h>void strcopy(char *str1,char *str2,int m)char *p1,*p2;/*SPACE*/_;p2=str2;while(*p1)/*SPACE*/_;/*SPACE*/_;main()int i,m;char str180,str280;gets(str1);scanf("%d",&m);/*SPACE*/_;puts(str1);puts(str2);答案:【1】 p1= str1 + m【2】 *p2+=*p1+ 或 *(p2+)=*(p1+) 或 *p2=*p1,p2+,p1+ 或 *p2=*p1+,p2+ 或 *p2+=*p1,p1+【3】 *p2='0' 或 *p2=0 或 *p2=NULL【4】 strcopy(str1,str2,m)6)/*-【程序填空】功能:以下程序是用选择法对10个整数按升序排序。/*SPACE*/_main()int i,j,k,t,aN;for(i=0;i<=N-1;i+)scanf("%d",&ai);for(i=0;i<N-1;i+)/*SPACE*/_;/*SPACE*/for(j=i+1; _;j+)if(aj<ak) k=j;/*SPACE*/if(_)t=ai;ai=ak;ak=t;printf("output the sorted array:n");for(i=0;i<=N-1;i+)printf("%5d",ai);printf("n");答案:【1】 #define N 10【2】 k=i【3】 j<N 或 N>j 或 j<=N-1 或 N-1>=j【4】 k != i7)/*-【程序填空】功能:从键盘上输入一个字符串, 将该字符串升序排列后输出到文件test.txt中,然后从该文件读出字符串并显示出来。#include<stdio.h>#include<string.h>#include<stdlib.h>main()FILE *fp;char t,str100,str1100; int n,i,j;if(fp=fopen("test.txt","w")=NULL)printf("can't open this file.n");exit(0);printf("input a string:n"); gets(str);/*SPACE*/_;/*SPACE*/for(i=0; _ ;i+)for(j=0;j<n-i-1;j+)/*SPACE*/if(_)t=strj;strj=strj+1;strj+1=t;/*SPACE*/_;fclose(fp);fp=fopen("test.txt","r");fgets(str1,100,fp);printf("%sn",str1);fclose(fp);答案:【1】 n=strlen(str) 或 for(n=0;strn!='0'n+) 或 for(n=0;strn;n+) 或 for(n=0;strn!=0;n+)【2】 i<n 或 n>i 或 i<-1+n 或 i<n-1 或 n-1>i 或 -1+n>i 或 i<=n-1 或 n-1>=i 或 -1+n>=i【3】 strj>str j + 1 或 str j + 1 <strj 或 strj+1<strj 或 strj+1<=strj【4】 fputs(str,fp) 或 fprintf(fp,"%sn",str) 或 fprintf(fp,"%s",str)8)/*-【程序填空】功能:以每行5个数来输出300以内能被7或17整除的偶数,并求出其和。#include <stdio.h>#include <conio.h>main()int i,n,sum;sum=0;/*SPACE*/_;/*SPACE*/for(i=1; _ ;i+)/*SPACE*/if(_)if(i%2=0)sum=sum+i;n+;printf("%6d",i);/*SPACE*/if(_)printf("n");printf("ntotal=%d",sum);答案:【1】 n=0【2】 i<=300 或 i<300 或 300>=i 或 300>i【3】 i%7 = 0 | i%17 = 0 或 !(i%7)|!(i%17) 或 !(i%17)|!(i%7) 或 !(i%7&&i%17)【4】 n%5 = 0 或 !(n%5) 或 n/5*5=n9)/*-【程序填空】功能:以下程序的功能如(图1)。#include <math.h>main()int f;/*SPACE*/_;float t,pi;t=1;pi=t;f=1;n=1.0;/*SPACE*/while(_ )n=n+2;/*SPACE*/_;t=f/n;pi=pi+t;/*SPACE*/_;printf("pi=%10.6fn",pi);答案:【1】 float n 或 duoble n【2】 fabs(t)>=1e-6 或 fabs(t)>=0.000001 或 1e-6<=fabs(t) 或 0.000001<=fabs(t)【3】 f=-f 或 f=-1*f 或 f=f*(-1) 或 f=f*-1 或 f=(-1)*f【4】 pi= pi * 4 或 pi*=4(图1)11)/*-【程序填空】功能:求100999之间的水仙花数说明:水仙花数是指一个三位数的各位数字的立方和是这个数本身。例如:153135333)。int fun(int n) int i,j,k,m;m=n;/*SPACE*/_;for(i=1;i<4;i+)/*SPACE*/_;m=(m-j)/10;k=k+j*j*j;if(k=n)/*SPACE*/_;elsereturn(0);main()int i;for(i=100;i<1000;i+)/*SPACE*/if(_=1)printf("%d is ok!n" ,i);答案:【1】 k=0【2】 j=m%10 或 j=m-m/10*10 或 j=m-10*(m/10)【3】 return(1)【4】 fun(i)(图1)12)/*-【程序填空】功能:产生并输出如下形式的方阵。1 2 2 2 2 2 13 1 2 2 2 1 43 3 1 2 1 4 43 3 3 1 4 4 43 3 1 5 1 4 43 1 5 5 5 1 41 5 5 5 5 5 1main()int a77;int i,j;for (i=0;i<7;i+)for (j=0;j<7;j+)/*SPACE*/if (_) aij=1;/*SPACE*/else if (i<j&&i+j<6) _;else if (i>j&&i+j<6) aij=3;/*SPACE*/else if (_) aij=4;else aij=5;for (i=0;i<7;i+)for (j=0;j<7;j+)printf("%4d",aij);/*SPACE*/_;答案:【1】 i = j | i + j = 6【2】 aij=2【3】 i<j && i + j>6 或 j>i && i + j>6 或 i<j && i + 6<j 或 j>i && i + 6<j【4】 printf("n")13)/*-【程序填空】功能:产生并输出杨辉三角的前七行。11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 11 6 15 20 15 6 1main ( )int a77;int i,j,k;for (i=0;i<7;i+)ai0=1;/*SPACE*/_;for (i=2;i<7;i+)/*SPACE*/for (j=1;j<_;j+)/*SPACE*/aij= _;for (i=0;i<7;i+)/*SPACE*/for (j=0; _;j+)printf("%6d",aij);printf("n");答案:【1】 aii=1【2】 i【3】 ai-1j+ai-1j-1 或 ai-1j-1+ai-1j【4】 j<=i 或 i>=j 或 j<i+1 或 i+1>j 或 j-1<i 或 i>j-114)/*-【程序填空】功能:输出100到1000之间的各位数字之和能被15整除的所有数,输出时每10个一行。main()int m,n,k,i=0;for(m=100;m<=1000;m+)/*SPACE*/_;n=m;do/*SPACE*/k=k+_ ;n=n/10;/*SPACE*/_;if (k%15=0)printf("%5d",m);i+;/*SPACE*/if(i%10=0) _;答案:【1】 k=0【2】 n%10 或 n-n/10*10 或 n-10*(n/10)【3】 while(n>0) 或 while(0<n) 或 while(n!=0) 或 while(0!=n)【4】 printf("n")15)/*-【程序填空】功能:分别求出一批非零整数中的偶数、奇数的平均值,用零作为终止标记。main()int x,i=0,j=0;float s1=0,s2=0,av1,av2;scanf("%d",&x);/*SPACE*/while(_)if(x%2=0) s1=s1+x;i+;/*SPACE*/_s2=s2+x;j+;/*SPACE*/_;if(i!=0)av1=s1/i;elseav1=0;if(j!=0)/*SPACE*/_ ;elseav2=0;printf("oushujunzhi:%7.2f,jishujunzhi:%7.2fn",av1,av2);答案:【1】 x != 0 或 x【2】 else 或 else if(x%2=1) 或 else if(x%2!=0) 或 if(x%2)【3】 scanf("%d",&x)【4】 av2=s2/j16)/*-【程序填空】功能:产生10个30,90区间上的随机整数,然后对其用选择法进行由小到大的排序。#include "stdlib.h"main()/*SPACE*/_;int i,j,k;int a10;for(i=0;i<10;i+)ai=random(61)+30;for(i=0;i<9;i+)/*SPACE*/_;for(j=i+1;j<10;j+)/*SPACE*/if(_) k=j;if(k!=i)t=ak;ak=ai;ai=t;/*SPACE*/for(_ )printf("%5d",ai);printf("n");答案:【1】 int t【2】 k=i【3】 ak>aj 或 aj<ak【4】 i=0;i<10;i+ 或 i=0;10>i;i+ 或 i=0;i<=9;i+=1 或 i=0;9>=i;i+ 或 i=0;i<10;i+=1 或 i=0;10>i;i+=1 或 i=0;i<=9;i+ 或 i=0;9>=i;i+=1 或 i=0;i<10;+i 或 i=0;10>i;+i 或 i=0;9>=i;+i 或 i=0;i<=9;+i17)/*-【程序填空】功能:删除字符串中的指定字符,字符串和要删除的字符均由键盘输入。#include "stdio.h"main()char str80,ch;int i,k=0;/*SPACE*/gets(_);ch=getchar();/*SPACE*/for(i=0;_;i+)if(stri!=ch)/*SPACE*/_;k+;/*SPACE*/_;puts(str);答案:【1】 str【2】 stri!='0' 或 stri!=NULL 或 stri!=0 或 stri【3】 strk=stri 或 *(str+k)=*(str+i) 或 strk=*(str+i) 或 *(str+k)=stri【4】 strk='0' 或 *(str+k)='0' 或 strk=NULL 或 strk=0 或 *(str+k)=0 或 *(str+k)=NULL18)/*-【程序填空】功能:将一个数组中的元素按逆序存放。#define N 7main ()static int aN=12,9,16,5,7,2,1,k,s;printf("n the origanal array:n");for (k=0;k<N;k+)printf("%4d",ak);/*SPACE*/for (k=0;k<N/2; _ )s=ak;/*SPACE*/_ ;/*SPACE*/_ ;printf("n the changed array:n");for (k=0;k<N;k+)/*SPACE*/_ ("%4d",ak);答案:【1】 k+ 或 k= k + 1 或 k+=1 或 +k【2】 ak=aN-k-1 或 ak=aN-1-k 或 ak=a6-k 或 *(a+k)=*(a+N-k-1) 或 *(a+k)=*(a+N-1-k 或 ak=a-1+N-k 或 ak=a-1-k+N 或 ak=a-k-1+N 或 ak=a-k+N-1 或 *(a+k)=*(a+N-k-1) 或 a6-k=s【3】 aN-k-1=s 或 aN-1-k=s 或 a6-k=s 或 aN -k -1=s 或 *(a +N -k -1)=s【4】 printf19)/*-【程序填空】功能:是将两个字符串连接为一个字符串,不许使用库函数strcat。#include "stdio.h"#include "string.h"main ( )char str180,str240;int i,j,k;gets(str1);gets(str2);puts(str1);puts(str2);/*SPACE*/_;puts(str1);JOIN(s1,s2)char s180,s240;int i,j;/*SPACE*/_;/*SPACE*/for (i=0; _'0'i+)s1i+j=s2i;/*SPACE*/s1i+j= _ ;答案:【1】 JOIN(str1,str2)【2】 j=strlen(s1) 或 for(j=0;s1j!='10'j+); 或 for(j=0;s1j;j+);【3】 s2i!= 或 *(s2 + i)!=【4】 '0' 或 NULL 或 020)/*-【程序填空】功能:求两个非负整数的最大公约数和最小公倍数。main()int m,n,r,p,gcd,lcm;scanf("%d%d",&m,&n);if(m<n) p=m,m=n;n=p;p=m*n;r=m%n;/*SPACE*/while(_ )/*SPACE*/m=n;n=r; _;/*SPACE*/gcd=_;lcm=p/gcd;/*SPACE*/printf("gcd=%d,lcm=%dn", _);答案:【1】 r != 0 或 r【2】 r=m%n 或 r=m-m/n*n【3】 n【4】 gcd,lcm 或 n,lcm21)/*-【程序填空】功能:将一个字符串中的前N个字符复制到一个字符数组中去,不许使用strcpy函数。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)=022)/*-【程序填空】功能:打印以下图形。main ( )char a59=" "int i,j;for (i=0;i<5;i+)/*SPACE*/for(j=i; _;j+)aij='*'/*SPACE*/for(_;i<5;i+)for(j=0;j<9;j+)/*SPACE*/printf("%c", _ );/*SPACE*/_;答案:【1】 j< i + 5 或 i + 5 >j 或 j<= i + 4 或 i + 4 >j【2】 i=0【3】 aij【4】 printf("n")23)/*-【程序填空】功能:求一个二维数组中每行的最大值和每行的和。#include "stdlib.h"main()int a55,b5,c5,i,j,k,s=0;for(i=0;i<5;i+)for(j=0;j<5;j+)aij=random(40)+20;for(i=0;i<5;i+)/*SPACE*/k=ai0; _ ;for(j=0;j<5;j+)/*SPACE*/if(k<aij) _ ;s=s+aij;bi=k;/*SPACE*/_ ;for(i=0;i<5;i+)for(j=0;j<5;j+)/*SPACE*/printf("%5d", _ );printf("%5d%5d",bi,ci);printf("n");答案:【1】 s=0【2】 k=aij【3】 ci=s【4】 aij24)/*-【程序填空】功能:对任一整数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* 5main()int n,i,j,r;scanf("%d",&n);if (n=0)printf ("data error n");exit(0);/*SPACE*/else if (_)printf("n=1");elseprintf("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/=i25)/*-【程序填空】功能:以下程序的功能如(图1)。/*SPACE*/_main()float x,f;scanf("%f",&x);/*SPACE*/if(x<0) _;/*SPACE*/else if(_)f=2*x+1;elsef=sin(x)+5;/*SPACE*/printf("x=%f,y=%fn", _);答案:【1】 #include "math.h" 或 #include <math.h>【2】 f=fabs( x + 1 )【3】 x<=5 或 5>=x 或 x<6 或 6>x 或 x>=0&&x<=5 或 0<=x&&x<=5 或 x>=0&&5>=x 或 0<=x&&5>=x 或 !(x>5)【4】 x,f(图1)26)/*-