c语言程序填空!!!这就是考试题库!!!
共计131道试题
一、程序填空(共131题)
Turbo C(共131试题)
3)./*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:已定义一个含有30个元素的数组s,函数fun1的功能是按
顺序分别赋予各元素从2开始的偶数,函数fun2则按顺序
每五个元素求一个平均值, 并将该值存放在数组w中。
-------------------------------------------------------*/
float s[30],w[6];
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+=s[i];
/***********SPACE***********/
________________;
{
w[k]=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",s[i]);
}
printf("\n");
for(i=0;i<6;i++)
printf("%8.2f",w[i]);
}
答案:
【1】s[i]=k 或s[i]=(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=%ld\n",n,s);
}
答案:
【1】s=0
【2】i+=2 或i=i+2 或i++,i++
【3】j<=i 或i>=j 或jj
【4】f= f * j
5)./*--------------------------------------------
-----------
【程序填空】
----------------------------------------------------
-----
功能:将一个字符串中下标为m的字符开始
的全部字符复制成为另
一个字符串。
----------------------------------------------------
---*/
#include
void strcopy(char *str1,char *str2,int m)
{
char *p1,*p2;
/***********SPACE***********/
________________;
p2=str2;
while(*p1)
/***********SPACE***********/
________________;
/***********SPACE***********/
________________;
}
main()
{
int i,m;
char str1[80],str2[80];
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,a[N];
for(i=0;i<=N-1;i++)
scanf("%d",&a[i]);
for(i=0;i { /***********SPACE***********/ ________________; /***********SPACE***********/ for(j=i+1; ________________;j++) if(a[j] /***********SPACE***********/ if(________________) { t=a[i]; a[i]=a[k]; a[k]=t; } } printf("output the sorted array:\n"); for(i=0;i<=N-1;i++) printf("%5d",a[i]); printf("\n"); } 答案: 【1】#define N 10 【2】k=i 【3】j 7)./*------------------------------------------------------- 【程序填空】 --------------------------------------------------------- 功能:从键盘上输入一个字符串, 将该字符串升序排列后输出到文件test.txt中,然后从该文件 读出字符串并显示出来。 -------------------------------------- -----------------*/ #include #include #include main() { FILE *fp; char t,str[100],str1[100]; 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 /***********SPACE******** ***/ if(________________) { t=str[j]; str[j]=str[j+1]; str[j+1]=t; } /***********SPACE******** ***/ ________________; fclose(fp); fp=fopen("test.txt","r"); fgets(str1,100,fp); printf("%s\n",str1); fclose(fp); } 答案: 【1】n=strlen(str) 或 for(n=0;str[n]!='\0';n++) 或 for(n=0;str[n];n++) 或 for(n=0;str[n]!=0;n++) 【2】i n-1>i 或-1+n>i 或i<=n-1 或n-1>=i 或-1+n>=i 【3】str[j]>str[ j + 1 ] 或str[ j + 1 ] 或str[j+1] 【4】fputs(str,fp) 或fprintf(fp,"%s\n",str) 或fprintf(fp,"%s",str) 8)./*-------------------------------------------- ----------- 【程序填空】 ---------------------------------------------------- ----- 功能:以每行5个数来输出300以内能被7或 17整除的偶数,并求出 其和。 ---------------------------------------------------- ---*/ #include #include 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==n 9)./*------------------------------------------------------- 【程序填空】 --------------------------------------------------------- 功能:以下程序的功能如(图1)。 -------------------------------------------------------*/ #include 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.6f\n",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)./*------------------------------------------------------- 【程序填空】 --------------------------------------------------------- 功能:求100-999之间的水仙花数 说明:水仙花数是指一个三位数的各位数字的立方和是这个数本身。 例如:153=1^3+5^3+3^3)。 -------------------------------------------------------*/ 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******** ***/ ________________; else return(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 1 3 1 2 2 2 1 4 3 3 1 2 1 4 4 3 3 3 1 4 4 4 3 3 1 5 1 4 4 3 1 5 5 5 1 4 1 5 5 5 5 5 1 ---------------------------------------------------- ---*/ main() { int a[7][7]; int i,j; for (i=0;i<7;i++) for (j=0;j<7;j++) { /***********SPACE***********/ if (________________) a[i][j]=1; /***********SPACE***********/ else if (i else if (i>j&&i+j<6) a[i][j]=3; /***********SPACE***********/ else if (________________) a[i][j]=4; else a[i][j]=5; } for (i=0;i<7;i++) { for (j=0;j<7;j++) printf("%4d",a[i][j]); /***********SPACE***********/ ________________; } } 答案: 【1】i == j || i + j == 6 【2】a[i][j]=2 【3】i i 【4】printf("\n") 13)./*------------------------------------------ ------------- 【程序填空】 ---------------------------------------------------- ----- 功能:产生并输出杨辉三角的前七行。 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 ---------------------------------------------------- ---*/ main ( ) { int a[7][7]; int i,j,k; for (i=0;i<7;i++) { a[i][0]=1; /***********SPACE***********/ ________________; } for (i=2;i<7;i++) /***********SPACE***********/ for (j=1;j<________________;j++) /***********SPACE***********/ a[i][j]= ________________; for (i=0;i<7;i++) { /***********SPACE***********/ for (j=0; ________________;j++) printf("%6d",a[i][j]); printf("\n"); } } 答案: 【1】a[i][i]=1 【2】i 【3】a[i-1][j]+a[i-1][j-1] 或a[i-1][j-1]+a[i-1][j] 【4】j<=i 或i>=j 或jj 或j-1j-1 14)./*------------------------------------------------------- 【程序填空】 --------------------------------------------------------- 功能:输出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 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; else av1=0; if(j!=0) /***********SPACE***********/ ________________ ; else av2=0; printf("oushujunzhi:%7.2f,jishujunzhi:%7.2 f\n",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/j 16)./*------------------------------------------ ------------- 【程序填空】 ---------------------------------------------------- ----- 功能:产生10个[30,90]区间上的随机整数, 然后对其用选择法 进行由小到大的排序。 ---------------------------------------------------- ---*/ #include "stdlib.h" main() { /***********SPACE***********/ ________________; int i,j,k; int a[10]; for(i=0;i<10;i++) a[i]=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=a[k]; a[k]=a[i]; a[i]=t; } } /***********SPACE***********/ for(________________ ) printf("%5d",a[i]); printf("\n"); } 答案: 【1】int t 【2】k=i 【3】a[k]>a[j] 或a[j] 【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;++i 17)./*------------------------------------------------------- 【程序填空】 --------------------------------------------------------- 功能:删除字符串中的指定字符,字符串和要删除的字符均由键盘 输入。 -------------------------------------------------------*/ #include "stdio.h" main() { char str[80],ch; int i,k=0; /***********SPACE***********/ gets(________________); ch=getchar(); /***********SPACE***********/ for(i=0;________________;i++) if(str[i]!=ch) { /***********SPACE***********/ ________________; k++; } /***********SPACE******** ***/ ________________; puts(str); } 答案: 【1】str 【2】str[i]!='\0' 或 str[i]!=NULL 或str[i]!=0 或 str[i] 【3】str[k]=str[i] 或 *(str+k)=*(str+i) 或 str[k]=*(str+i) 或 *(str+k)=str[i] 【4】str[k]='\0' 或 *(str+k)='\0' 或str[k]=NULL 或str[k]=0 或*(str+k)=0 或 *(str+k)=NULL 18)./*---------------------------- --------------------------- 【程序填空】 -------------------------------------- ------------------- 功能:将一个数组中的元素按逆 序存放。 -------------------------------------- -----------------*/ #define N 7 main () { static int a[N]={12,9,16,5,7,2,1},k,s; printf("\n the origanal array:\n"); for (k=0;k printf("%4d",a[k]); /***********SPACE******** ***/ for (k=0;k ________________ ) { s=a[k]; /***********SPACE******** ***/ ________________ ; /***********SPACE******** ***/ ________________ ; } printf("\n the changed array:\n"); for (k=0;k /***********SPACE***********/ ________________ ("%4d",a[k]); } 答案: 【1】k++ 或k= k + 1 或k+=1 或++k 【2】a[k]=a[N-k-1] 或a[k]=a[N-1-k] 或 a[k]=a[6-k] 或*(a+k)=*(a+N-k-1) 或 *(a+k)=*(a+N-1-k] 或a[k]=a[-1+N-k] 或a[k]=a[-1-k+N] 或a[k]=a[-k-1+N] 或 a[k]=a[-k+N-1] 或*(a+k)=*(a+N-k-1) 或a[6-k]=s 【3】a[N-k-1]=s 或a[N-1-k]=s 或 a[6-k]=s 或a[N -k -1]=s 或*(a +N -k -1)=s 【4】printf 19)./*------------------------------------------ ------------- 【程序填空】 ---------------------------------------------------- ----- 功能:是将两个字符串连接为一个字符串, 不许使用库函数strcat。 ---------------------------------------------------- ---*/ #include "stdio.h" #include "string.h" main ( ) { char str1[80],str2[40]; int i,j,k; gets(str1);gets(str2); puts(str1);puts(str2); /***********SPACE***********/ ________________; puts(str1); } JOIN(s1,s2) char s1[80],s2[40]; { int i,j; /***********SPACE***********/ ________________; /***********SPACE***********/ for (i=0; ________________'\0';i++) s1[i+j]=s2[i]; /***********SPACE***********/ s1[i+j]= ________________ ; } 答案: 【1】JOIN(str1,str2) 【2】j=strlen(s1) 或for(j=0;s1[j]!='10';j++); 或for(j=0;s1[j];j++); 【3】s2[i]!= 或*(s2 + i)!= 【4】'\0' 或NULL 或0 20)./*------------------------------------------------------- 【程序填空】 --------------------------------------------------------- 功能:求两个非负整数的最大公约数和最小公倍数。 -------------------------------------------------------*/ main() { int m,n,r,p,gcd,lcm; scanf("%d%d",&m,&n); if(m p=m*n; r=m%n; /***********SPACE***********/ while(________________ ) { /***********SPACE***********/ m=n;n=r; ________________; } /***********SPACE***********/ gcd=________________; lcm=p/gcd; /***********SPACE***********/ printf("gcd=%d,lcm=%d\n", ________________); } 答案: 【1】r != 0 或r 【2】r=m%n 或r=m-m/n*n 【3】n 【4】gcd,lcm 或n,lcm 21)./*------------------------------------------------------- 【程序填空】 --------------------------------------------------------- 功能:将一个字符串中的前N个 字符复制到一个字符数组中去, 不许使用strcpy函数。 -------------------------------------- -----------------*/ main ( ) { char str1[80],str2[80]; int i,n; /***********SPACE******** ***/ gets(________________); scanf("%d",&n); /***********SPACE******** ***/ for (i=0; ________________ ;i++) /***********SPACE******** ***/ ________________; /***********SPACE******** ***/ ________________; printf("%s\n",str2); } 答案: 【1】str1 【2】i 或n-1>=i 【3】str2[i]=str1[i] 或 *(str2+i)=*(str1+i) 或 *(str2+i)=str1[i] 或 str2[i]=*(str1+i) 【4】str2[n]='\0' 或 str2[i]='\0' 或str2[n]=0 或 str2[i]=0 或*(str2+n)='\0' 或*(str2+i)='\0' 或 *(str+n)=0 或*(str2+i)=0 22)./*---------------------------- --------------------------- 【程序填空】 -------------------------------------- ------------------- 功能:打印以下图形。 ***** ***** ***** ***** ***** ---------------------------------------------------- ---*/ main ( ) { char a[5][9]={" "}; int i,j; for (i=0;i<5;i++) /***********SPACE***********/ for(j=i; ________________;j++) a[i][j]='*'; /***********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】a[i][j] 【4】printf("\n") 23)./*------------------------------------------ ------------- 【程序填空】 ---------------------------------------------------- ----- 功能:求一个二维数组中每行的最大值和每 行的和。 ---------------------------------------------------- ---*/ #include "stdlib.h" main() { int a[5][5],b[5],c[5],i,j,k,s=0; for(i=0;i<5;i++) for(j=0;j<5;j++) a[i][j]=random(40)+20; for(i=0;i<5;i++) { /***********SPACE***********/ k=a[i][0]; ________________ ; for(j=0;j<5;j++) { /***********SPACE***********/ if(k s=s+a[i][j]; } b[i]=k; /***********SPACE***********/ ________________ ; } for(i=0;i<5;i++) { for(j=0;j<5;j++) /***********SPACE***********/ printf("%5d", ________________ ); printf("%5d%5d",b[i],c[i]); printf("\n"); } } 答案: 【1】s=0 【2】k=a[i][j] 【3】c[i]=s 【4】a[i][j] 24)./*------------------------------------------------------- 【程序填空】 --------------------------------------------------------- 功能:对任一整数N(N≠0),它都可以分解成1(或-1)和一些质数(素 数)因子的形式。 例如:当N=150时,可分解成1×2×3×5×5;当N=-150时,可分解为-1×2×3×5×5。 下边程序能实现这种分解过程。当N=150,输出以下分解结 果:N= 1* 2* 3* 5* 5 -------------------------------------------------------*/ main() { int n,i,j,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 【2】i=2 【3】r=n%i 【4】n=n/i 或n/=i 25)./*---------------------------- --------------------------- 【程序填空】 -------------------------------------- ------------------- 功能:以下程序的功能如(图1)。 -------------------------------------- -----------------*/ /***********SPACE******** ***/ ________________ main() { float x,f; scanf("%f",&x); /***********SPACE******** ***/ if(x<0) ________________; /***********SPACE******** ***/ else if(________________) f=2*x+1; else f=sin(x)+5; /***********SPACE***********/ printf("x=%f,y=%f\n", ________________); } 答案: 【1】#include "math.h" 或#include 【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)./*------------------------------------------ ------------- 【程序填空】 ---------------------------------------------------- ----- 功能:删除一个字符串中的所有数字字符。 ---------------------------------------------------- ---*/ #include "stdio.h" void delnum(char *s) { int i,j; /***********SPACE***********/ for(i=0,j=0; ________________'\0' ;i++) /***********SPACE***********/ if(s[i]<'0'________________ s[i]>'9') { /***********SPACE***********/ ________________; j++; } s[j]='\0'; } main () { char *item; printf("\n input a string:\n"); gets(item); /***********SPACE***********/ ________________; printf("\n%s",item); } 答案: 【1】s[i]!= 或*(s+i)!= 或*(i+s)!= 【2】|| 【3】s[j]=s[i] 或*(s+j)=*(s+i) 或s[j]=*(s+i) 或*(s+j)=s[i] 【4】delnum(item) 27)./*------------------------------------------------------- 【程序填空】 --------------------------------------------------------- 功能:统计一个字符串中的字母、数字、空格和其它字符的个数。 -------------------------------------------------------*/ #include "stdio.h" main () { char s1[80];int a[4]={0}; int k; /***********SPACE***********/ ________________; gets(s1); /***********SPACE***********/ ________________; puts(s1); for(k=0;k<4;k++) printf("%4d",a[k]); } void fun(char s[],int b[]) { int i; for (i=0;s[i]!='\0';i++) if ('a'<=s[i]&&s[i]<='z'||'A'<=s[i]&&s[i]<='Z ') b[0]++; /***********SPACE***********/ else if (________________) b[1]++; /***********SPACE***********/ else if (________________ ) b[2]++; else b[3]++; } 答案: 【1】void fun(char s[],int b[]) 【2】fun(s1,a) 【3】'0'<=s[i] && s[i]<='9' 或s[i]>='0' && s[i]<='9' 或 '0'<=s[i] && '9'>=s[i] 或 s[i]>='0' && '9'>=s[i] 或 48<=s[i] && s[i]<=57 或 s[i]>=48 && s[i]<=57 或 48<=s[i] && 57>=s[i] 或 s[i]>=48 && 57>=s[i] 或!( x < 48 || x > 57 ) 或!( x < '0' || x > '9' ) 【4】s[i] == ' ' 或s[i] == 32 28)./*---------------------------- --------------------------- 【程序填空】 -------------------------------------- ------------------- 功能:将十进制数转换成十六进 制数。 -------------------------------------- -----------------*/ #include "stdio.h" #include "string.h" main () { int a,i; char s[20]; printf("input a integer:\n"); scanf("%d",&a); c10_16(s,a); /***********SPACE******** ***/ for(________________;i>=0;i --) printf("%c",s[i]); printf("\n"); } c10_16(char p[],int b) { int j,i=0; /***********SPACE******** ***/ while (________________) { j=b%16; if(j>=0&&j<=9) /***********SPACE******** ***/ ________________; else p[i]=j+55; b=b/16; i++; } /***********SPACE***********/ ________________; } 答案: 【1】i=strlen(s)-1 或i=-1+strlen(s) 【2】b>0 或0 b 【3】p[i]= j + '0' 或p[i]= j + 48 或 *(p+i)= j + '0' 或*(p+i)= j + 48 【4】p[i]='\0' 或p[i]=0 或p[i]=NULL 或*(p+i)='\0' 或*(p+i)=0 或 *(p+i)=NULL 29)./*------------------------------------------ ------------- 【程序填空】 ---------------------------------------------------- ----- 功能:下面函数为二分法查找key值。数组 中元素已递增排序, 若找到key则返回对应的下标,否则返回-1。 ---------------------------------------------------- ---*/ fun(int a[],int n,int key) { int low,high,mid; low=0; high=n-1; /***********SPACE***********/ while(________________) { mid=(low+high)/2; if(key /***********SPACE***********/ ________________; else if(key>a[mid]) /***********SPACE***********/ ________________; else /***********SPACE***********/ ________________; } return -1; } main() { int a[10]={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 %d\n",c); } 答案: 【1】low<=high 或high>=low 【2】high=mid-1 【3】low= mid + 1 【4】return mid 或return (mid) 30)./*------------------------------------------------------- 【程序填空】 --------------------------------------------------------- 功能:输入字符串,再输入一个字符,将字符串中与输入字符相 同的字符删除。 -------------------------------------------------------*/ #include "stdio.h" void fun(char a[],char c) { int i,j; /***********SPACE***********/ for(i=j=0; ________________;i++) if(a[i]!=c) a[j++]=a[i]; /***********SPACE***********/ ________________; } main() { char a[20],cc; gets(a); /***********SPACE***********/ ________________; /***********SPACE***********/ ________________; puts(a); } 答案: 【1】a[i] != '\0' 或a[i] 或a[i]!=NULL 【2】a[j]='\0' 或a[j]=NULL 或a[j]=0 【3】cc=getchar() 或scanf("%c",&cc) 【4】fun(a,cc) 31)./*------------------------------------------------------- 【程序填空】 -------------------------------------- ------------------- 功能:用冒泡法对数组a 进行由 小到大的排序。 -------------------------------------- -----------------*/ void fun(int a[],int n) { int i,j,t; /***********SPACE******** ***/ for (j=0; ________________;j++) /***********SPACE******** ***/ for (i=0; ________________;i++) /***********SPACE******** ***/ if(________________) { t=a[i]; a[i]=a[i+1]; a[i+1]=t; } } main() { int i,a[10]={3,7,5,1,2,8,6,4,10,9}; /***********SPACE******** ***/ ________________; for(i=0;i<10;i++) printf("%3d",a[i]); } 答案: 【1】j<=n-1 或n-1>=j 或 j<=-1+n 或-1+n>=j 或j 或n>j 或j 【2】i i i<=n-j-2 或i<=n-2-j 【3】a[i]>a[ i + 1 ] 或a[ i + 1 ] 【4】fun(a,10) 32)./*---------------------------- --------------------------- 【程序填空】 ---------------------------------------------------- ----- 功能:计算并输出500以内最大的10个能被 13或17整除的自然数之和。 ---------------------------------------------------- ---*/ #include #include /***********SPACE***********/ int fun(________________ ) { int m=0, mc=0, j, n; /***********SPACE***********/ while (k >= 2 && ________________) { /***********SPACE***********/ if (k%13 == 0 || ________________) { m=m+k; mc++; } k--; } /***********SPACE***********/ ________________; } main ( ) { clrscr( ); printf("%d\n", fun (500)); } 答案: 【1】int k 【2】mc < 10 或10 > mc 或mc <= 9 或9 >= mc 【3】k%17 == 0 或!(k%17) 或k/17*17 == k 【4】return m 或return (m) 33)./*------------------------------------------ ------------- 【程序填空】 ---------------------------------------------------- ----- 功能:以下程序的功能如(图1)。 ---------------------------------------------------- ---*/ #include #include /***********SPACE***********/ double f(________________) { /***********SPACE***********/ ________________; /***********SPACE***********/ if (________________) y=2.0*x*x+3.0*x+4.0; else y=-2.0*x*x+3.0*x-4.0; /***********SPACE***********/ ________________; } main ( ) { clrscr( ); printf("%f\n", f(f(-1.0)+f(5.0))); } 答案: 【1】float x 或double x 【2】double y 【3】x<=2 或2>=x 【4】return y 或return (y) (图1) 34)./*------------------------------------------------------- 【程序填空】 --------------------------------------------------------- 功能:以下程序的功能如(图1)。 -------------------------------------------------------*/ #include #include /***********SPACE***********/ float fun(________________, int n) { /***********SPACE***********/ ________________; float xa=0, s; for (j=0; j xa += x[j]/n; /***********SPACE***********/ ________________; for (j=0; j s += (x[j]-xa)*(x[j]-xa)/n; /***********SPACE***********/ ________________; } main ( ) { float x[100] = {193.199, 195.673, 195.757, 196.051, 196.092,196.596,196.579, 196.763}; clrscr( ); printf("%f\n", fun (x, 8)); } 答案: 【1】float x[] 或float *x 【2】int j 【3】s = 0 或s = 0.0 【4】return s 或return(s) (图1) 35)./*---------------------------- --------------------------- 【程序填空】 -------------------------------------- ------------------- 功能:计算并输出high以内最 大的10个素数之和,high由主函 数传 给fun函数,若high的值为100, 则函数的值为732。 -------------------------------------- -----------------*/ #include #include #include 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 ( ) { clrscr( ); printf("%d\n", fun (100)); } 答案: 【1】n<10 或10>n 【2】high%j == 0 或!(high%j) 【3】return sum 或return (sum) 92)./*------------------------------------------ ------------- 【程序填空】 ---------------------------------------------------- ----- 功能:将s所指字符串的正序和反序进行连 接,形成一个新串放在t 所指的数组中。 例如:当s串为"ABCD"时,则t串的内容应 为"ABCDDCBA"。 ---------------------------------------------------- ---*/ #include #include #include void fun (char *s, char *t) { int i, d; /***********SPACE***********/ d = ________________; /***********SPACE***********/ for (i = 0; i t[i] = s[i]; for (i = 0; i /***********SPACE***********/ t[________________] = s[d-1-i]; /***********SPACE***********/ t[________________] ='\0'; } main() { char s[100], t[100]; clrscr(); printf("\nPlease enter string S:"); scanf("%s", s); fun(s, t); printf("\nThe result is: %s\n", t); } 答案: 【1】strlen(s) 【2】i++ 或i=i+1 或i+=1 或++i 【3】d+i 或i+d 【4】2*d 或d*2 或i+d 或d+i 394)./*------------------------------------------------------- 【程序填空】 --------------------------------------------------------- 功能:用条件编译方法实现以下功能。输入一行电报文字,可以任 选两种方式输出,一种为原文输出;另一种将字母变成下 一个字母(如a变成b,C变成D,其他字符不变)输出。 -------------------------------------------------------*/ #define CHANGE main() { /***********SPACE***********/ char str[80],________________=str; int k; printf("Input string:"); /***********SPACE***********/ gets________________; printf("Output string:"); #ifdef CHANGE for(;*s!='\0';s++) { if(*s>='a'&&*s<='z'||*s>='A'&&*s<='Z') { (*s)++; if(*s>'Z'&&*s<'Z'+2) /***********SPACE***********/ ________________; if(*s>'z') /***********SPACE***********/ *s=________________; } } printf("%s\n",str); #else printf("%s\n",str); #endif } 答案: 【1】*s 【2】(str) 或(s) 【3】*s='A' 【4】'a' 395)./*-------------------------- ----------------------------- 【程序填空】 -------------------------------------- ------------------- 功能:输入3个数a,b,c,按从小 到大的顺序输出。 -------------------------------------- -----------------*/ main() { void swap(int *p1, int *p2); int n1,n2,n3; int *pointer1,*pointer2,*pointer3; printf("please input 3 number:n1,n2,n3:"); scanf("%d,%d,%d",&n1,&n2, &n3); pointer1=&n1; pointer2=&n2; pointer3=&n3; /***********SPACE******** ***/ if(________________) swap(pointer1,pointer2); /***********SPACE******** ***/ if(________________) swap(pointer1,pointer3); /***********SPACE******** ***/ if(________________) swap(pointer2,pointer3); printf("the sorted numbers are:%d,%d,%d\n",n1,n2,n3); } /***********SPACE******** ***/ void swap(________________) int *p1,*p2; { int p; p=*p1;*p1=*p2;*p2=p; } 答案: 【1】n1>n2 或n2 *pointer1>*pointer2 或 *pointer2<*pointer1 【2】n1>n3 或n3 *pointer1>*pointer3 或 *pointer3<*pointer1 【3】n2>n3 或n3 *pointer2>*pointer3 或 *pointer3<*pointer2 【4】p1,p2 396)./*----------------------------------------- -------------- 【程序填空】 ---------------------------------------------------- ----- 功能:输入数组,最大的与最后一个元素交 换,最小的与第一个元 素交换,输出数组。 ---------------------------------------------------- ---*/ main() { int number[10]; input(number); max_min(number); output(number); } input(number) int number[10]; { int i; /***********SPACE***********/ for(i=0;________________;i++) scanf("%d,",&number[i]); scanf("%d",&number[9]); } max_min(array) int array[10]; { int *max,*min,k,l; int *p,*arr_end; arr_end=array+10; max=min=array; for(p=array+1;p if(*p>*max) max=p; else if(*p<*min) /***********SPACE***********/ ________________; k=*max; l=*min; *p=array[0]; array[0]=l; /***********SPACE***********/ ________________; *p=array[9]; /***********SPACE***********/ ________________; k=*p; return; } output(array) int array[10]; { int *p; for(p=array;p printf("%d,",*p); printf("%d\n",array[9]); } 答案: 【1】i<9 或9>i 【2】min=p 【3】l=*p 【4】array[9]=k 397)./*------------------------------------------------------- 【程序填空】 --------------------------------------------------------- 功能:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙 队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比 赛的名单。a说他不和x比,c说他不和x,z 比,请编程序找出 三队赛手的名单。 -------------------------------------------------------*/ main() { char i,j,k;/*i是a的对手,j是b的对手,k 是c的对手*/ for(i='x';i<='z';i++) for(j='x';j<='z';j++) { /***********SPACE******** ***/ if(________________) /***********SPACE******** ***/ for(k='x';________________;k ++) { /***********SPACE******** ***/ if(________________) { /***********SPACE******** ***/ if(i!='x'&&k!=______________ __) printf("order is a--%c\tb--%c\tc--%c\n",i,j,k); } } } } 答案: 【1】i!=j 或i != j 【2】k<='z' 或'z'>=k 【3】i!=k&&j!=k 或i != k && j != k 【4】'z' 398)./*-------------------------- ----------------------------- 【程序填空】 -------------------------------------- ------------------- 功能:打印出如下图案(菱形) * *** ***** ******* ***** *** * -------------------------------------- -----------------*/ #include main() { int i,j,k; /***********SPACE***********/ for(i=0;________________;i++) { for(j=0;j<=4-i;j++) printf(" "); /***********SPACE***********/ for(k=1;k<=________________;k++) printf("*"); printf("\n"); } /***********SPACE***********/ for(________________;j<3;j++) { for(k=0;k printf(" "); for(k=0;k<5-2*j;k++) printf("*"); printf("\n"); } } 答案: 【1】i<=3 或i<4 或3>=i 或4>i 【2】2*i+1 或i*2+1 或1+2*i 或1+i*2 【3】j=0 400)./*----------------------------------------- -------------- 【程序填空】 ---------------------------------------------------- ----- 功能:用结构体调用的方法编程。要求输入 A,B,C,D,E,F五 个元素的数值,并按从大到小的顺序输出。 ---------------------------------------------------- ---*/ #define N sizeof tbl/sizeof tbl[0] /*取得数 组有多少个元素*/ int A,B,C,D,E,F; struct ele { char vn; /***********SPACE***********/ int ________________; }tbl[]={{'A',&A},{'B',&B},{'C',&C},{'D',&D} ,{'E',&E},{'F',&F}},t; main() { int k,j,m; /***********SPACE***********/ for(k=0;k<________________;k++) { printf("Enter data for %c\n",tbl[k].vn); scanf("%d",tbl[k].vp); } m=N-1; while(m>0) { for(k=j=0;j /***********SPACE***********/ if(*tbl[j].vp<________________) { t=tbl[j]; tbl[j]=tbl[j+1]; tbl[j+1]=t; k=j; } /***********SPACE***********/ ________________; } for(k=0;k printf("%c(%d)",tbl[k].vn,*tbl[k].vp); printf("\n"); getch(); } 答案: 【1】*vp 【2】N 【3】*tbl[j+1].vp 或*tbl[ j + 1 ].vp 【4】m=k 401)./*------------------------------------------------------- 【程序填空】 --------------------------------------------------------- 功能:输入某年某月某日,判断这一天是这一年的第几天? -------------------------------------------------------*/ main() { int day,month,year,sum,leap; printf("\nplease input year,month,day\n"); 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) 或year%4 == 0 && year%100 != 0 【4】leap==1&&month>2 或 leap == 1 && month>2 或 leap == 1 && 2 402)./*-------------------------- ----------------------------- 【程序填空】 -------------------------------------- ------------------- 功能:输入三个整数x,y,z,请把这三个数由 小到大输出。 ---------------------------------------------------- ---*/ main() { int x,y,z,t; scanf("%d%d%d",&x,&y,&z); /***********SPACE***********/ if (x>y){________________} /***********SPACE***********/ if(x>z){________________} /***********SPACE***********/ if(y>z){________________} printf("small to big: %d %d %d\n",x,y,z); } 答案: 【1】t=x;x=y;y=t; 【2】t=z;z=x;x=t; 【3】t=y;y=z;z=t; 403)./*----------------------------------------- -------------- 【程序填空】 ---------------------------------------------------- ----- 功能:输出9*9口诀。 ---------------------------------------------------- ---*/ main() { int i,j,result; printf("\n"); /***********SPACE***********/ for (i=1;________________;i++) { /***********SPACE***********/ for(j=1;j<10;________________) { result=i*j; /***********SPACE***********/ printf("%d*%d=%-3d",i,j,_____________ ___); } printf("\n"); } } 答案: 【1】i<10 或10>i 【2】j++ 或++j 或j=j+1 【3】result 404)./*------------------------------------------------------- 【程序填空】 --------------------------------------------------------- 功能:从键盘上输入两个复数的实部与虚部,求出并输出它们的 和、差、积、商。 -------------------------------------------------------*/ #include void main() { float a,b,c,d,e,f; printf("输入第一个复数的实部与虚部:"); scanf("%f, %f",&a,&b); printf("输入第二个复数的实部与虚部:"); scanf("%f, %f",&c,&d); /***********SPACE***********/ ________________; f=b+d; printf("相加后复数:实部:%f,虚部:%f\n",e,f); e=a*c-b*d; /***********SPACE***********/ ________________; printf("相乘后复数:实部:%f,虚部:%f\n",e,f); e=(a*c+b*d)/(c*c+d*d); /***********SPACE***********/ ________________; printf("相除后复数:实部:%f,虚部:%f\n",e,f); } 答案: 【1】e=a+c 或e=c+a 【2】f=a*d+b*c 或f= a*d + b*c 或f= a * d + b * c 【3】f=(b*c-a*d)/(c*c+d*d) 或f=(b*c-a*d) / (c*c+d*d) 或f=( b * c - a * d ) / ( c * c + d * d ) 405)./*------------------------------------------------------- 【程序填空】 --------------------------------------------------------- 功能:要求输出结果为: A,B 65,66 -------------------------------------- -----------------*/ #include void main() { /***********SPACE******** ***/ char a,________________; /***********SPACE******** ***/ a=________________; b='b'; a=a-32; /***********SPACE******** ***/ b=b-________________; printf("%c, %c\n%d,%d\n",a, b,a,b); } 答案: 【1】b 【2】'a' 或97 【3】32 406)./*-------------------------- ----------------------------- 【程序填空】 -------------------------------------- ------------------- 功能:从键盘输入一个字符串, 将小写字母全部转换成大写字 母, 然后输出到一个磁盘文件“test” 中保存。输入的字符串 以!结束。 -------------------------------------- -----------------*/ #include "stdio.h" #include main() { FILE *fp; char str[100]; int i=0; /***********SPACE******** ***/ if((fp=fopen("test",_________ _______))==NULL) { printf("cannot open the file\n"); exit(0); } printf("please input a string:\n"); /***********SPACE***********/ gets(________________); while(str[i]!='!') /***********SPACE***********/ { if(str[i]>='a'&&________________) str[i]=str[i]-32; fputc(str[i],fp); i++; } /***********SPACE***********/ fclose(________________); fp=fopen("test","r"); fgets(str,strlen(str)+1,fp); printf("%s\n",str); fclose(fp); } 答案: 【1】"w" 【2】str 【3】str[i]<='z' 或'z'>=str[i] 【4】fp 407)./*----------------------------------------- -------------- 【程序填空】 ---------------------------------------------------- ----- 功能:有五个学生,每个学生有3门课的成绩, 从键盘输入以上数 据(包括学生号,姓名,三门课成绩),计算 出平均成绩, 设原有的数据和计算出的平均分数存放在磁 盘文件"stud" 中。 ---------------------------------------------------- ---*/ #include "stdio.h" struct student { char num[6]; char name[8]; int score[3]; float avr; } stu[5]; main() { int i,j,sum; FILE *fp; /*input*/ for(i=0;i<5;i++) { printf("\n please input No. %d score:\n",i); printf("stuNo:"); scanf("%s",stu[i].num); printf("name:"); scanf("%s",stu[i].name); sum=0; /***********SPACE***********/ for(j=0;________________;j++) { printf("score %d.",j+1); scanf("%d",&stu[i].score[j]); /***********SPACE***********/ sum+=stu[i].________________; } stu[i].avr=sum/3.0; } fp=fopen("stud","w"); /***********SPACE***********/ for(i=0;i<5;________________) /***********SPACE***********/ if(fwrite(&stu[i],sizeof(________________ ),1,fp)!=1) printf("file write error\n"); fclose(fp); } 答案: 【1】j<3 或3>j 【2】score[j] 【3】i++ 或++i 或i=i+1 【4】struct student 408)./*------------------------------------------------------- 【程序填空】 --------------------------------------------------------- 功能:输入两个整数,求他们的按位与。-------------------------------------------------------*/ #include void main() { int x,y,z=0,a,b,k=1; scanf("%d,%d",&x,&y); while(x>0&&y>0) { a=x%2; /***********SPACE******** ***/ x=________________; b=y%2; y=y/2; /***********SPACE******** ***/ z=z+________________; k=k*2; } /***********SPACE******** ***/ ________________("z=%d\n" ,z); } 答案: 【1】x/2 【2】a*b*k 或 a * b * k 【3】printf 409)./*-------------------------- ----------------------------- 【程序填空】 -------------------------------------- ------------------- 功能:输入数组,最大的与第一 个元素交换,最小的与最后一个 元素交换,输出数组。 -------------------------------------- -----------------*/ main() { int number[10]; input(number); max_min(number); output(number); } input(number) int number[10]; { int i; /***********SPACE******** ***/ for(i=0;i<9;_______________ _) scanf("%d,",&number[i]); scanf("%d",&number[9]); } /***********SPACE***********/ max_min(________________) int array[10]; { int *max,*min,k,l; int *p,*arr_end; /***********SPACE***********/ arr_end=________________; max=min=array; for(p=array+1;p if(*p>*max) max=p; /***********SPACE***********/ else if(________________) min=p; k=*max; l=*min; *p=array[0];array[0]=l;l=*p; *p=array[9];array[9]=k;k=*p; return; } output(array) int array[10]; { int *p; for(p=array;p printf("%d,",*p); printf("%d\n",array[9]); } 答案: 【1】i++ 或i=i+1 或++i 【2】array 【3】array+10 或10+array 【4】*p<*min 或*min>*p 410)./*----------------------------------------- -------------- 【程序填空】 ---------------------------------------------------- ----- 功能:有n个整数,使其前面各数顺序向后 移m个位置,最后m个数 变成最前面的m个数 ---------------------------------------------------- ---*/ main() { int number[20],n,m,i; printf("the total numbers is:"); scanf("%d",&n); printf("back m:"); scanf("%d",&m); for(i=0;i scanf("%d,",&number[i]); scanf("%d",&number[n-1]); /***********SPACE***********/ move(________________); for(i=0;i printf("%d,",number[i]); printf("%d",number[n-1]); } /***********SPACE***********/ move(________________) int n,m,array[20]; { 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); } 答案: 【1】number,n,m 【2】array,n,m 【3】array+n-1 或array + n -1 【4】p-1 或p -1 411)./*------------------------------------------------------- 【程序填空】 --------------------------------------------------------- 功能:有n个人围成一圈,顺序排号。从第一个人开始报数(从1 到3报数),凡报到3的人退出圈子,问最后留下的是原来 第几号的那位。 -------------------------------------------------------*/ #define nmax 50 main() { int i,k,m,n,num[nmax],*p; printf("please input the total of numbers:"); scanf("%d",&n); p=num; /***********SPACE***********/ for(i=0;________________;i+ +) /***********SPACE******** ***/ *(p+i)=________________; i=0; k=0; m=0; while(m { /***********SPACE******** ***/ if(________________!=0) k++; if(k==3) { *(p+i)=0; k=0; m++; } i++; if(i==n) i=0; } /***********SPACE******** ***/ while(________________) p++; printf("%d is left\n",*p); } 答案: 【1】i 【2】i+1 或i + 1 【3】*(p+i) 或*( p + i ) 【4】*p==0 或*p == 0 412)./*-------------------------- ----------------------------- 【程序填空】 -------------------------------------- ------------------- 功能:写一个函数,求一个字符 串的长度,在main函数中输入 字 符串,并输出其长度。 -------------------------------------- -----------------*/ #include main() { int length(char *p); int len; char str[20]; 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 414)./*----------------------------------------- -------------- 【程序填空】 ---------------------------------------------------- ----- 功能:通过函数的递归调用计算阶乘。 ---------------------------------------------------- ---*/ long power(int n) { long f; if(n>1) /***********SPACE***********/ f=________________; else f=1; return(f); } main() { int n; long y; printf("input a inteager number:\n"); /***********SPACE***********/ scanf("%d",________________); y=power(n); /***********SPACE***********/ printf("%d!=%ld\n",n,________________ ); getch(); } 答案: 【1】power(n-1)*n 或power( n - 1 ) * n 或n*power(n-1) 【2】&n 【3】power(n) 或y 415)./*------------------------------------------------------- 【程序填空】 --------------------------------------------------------- 功能:数组名作为函数参数,求平均成绩。-------------------------------------------------------*/ float aver(float a[ ]) /*定义求平均值函数,形参为一浮点型数组名*/ { int i; float av,s=a[0]; for(i=1;i<5;i++) /***********SPACE***********/ s+=________________[i]; av=s/5; /***********SPACE***********/ return ________________; } void main() { float sco[5],av; int i; printf("\ninput 5 scores:\n"); for(i=0;i<5;i++) /***********SPACE***********/ scanf("%f",________________); /***********SPACE***********/ av=aver(________________); printf("average score is %5.2f\n",av); getch(); } 答案:【1】a 【2】av 或(av) 【3】&sco[i] 或sco+i 【4】sco 416)./*-------------------------- ----------------------------- 【程序填空】 -------------------------------------- ------------------- 功能:计算个人与各科平均成绩 及全班平均成绩,并在屏幕上显 示出来。 -------------------------------------- -----------------*/ #define M 5 /*定义符号常量 人数为5*/ #define N 4 /*定义符号常量 课程为4*/ #include "stdio.h" main() { int i,j; void aver(float sco[M+1][N+1]); static float score[M+1][N+1]={{78,85,83, 65}, {88,91,89,93}, {72,65,54,75},{86,88,75,60},{ 69,60,50,72}}; aver(score); clrscr(); printf("学生编号课程1 课程2 课程3 课程4 个人平均\n"); for(i=0;i { printf("学生%d\t",i+1); /***********SPACE******** ***/ for(j=0;j<________________; j++) printf("%6.1f\t",score[i][j]); printf("\n"); } for(j=0;j<8*(N+2);j++) printf("-"); printf("\n课程平均"); for(j=0;j printf("%6.1f\t",score[i][j]); printf("\n"); getch(); } void aver(float sco[][N+1]) { int i,j; /***********SPACE***********/ for(i=0;i<________________;i++) { for(j=0;j { sco[i][N] += sco[i][j]; sco[M][j] += sco[i][j]; sco[M][N] += sco[i][j]; } /***********SPACE***********/ sco[i][N] ________________ N; } for(j=0;j /***********SPACE***********/ sco[M][________________] /= M; sco[M][N]=sco[M][N]/M/N; } 答案: 【1】N+1 或1+N 或 5 【2】M 或5 【3】/= 【4】j 417)./*----------------------------------------- -------------- 【程序填空】 ---------------------------------------------------- ----- 功能:利用全局变量计算长方体的体积及三 个面的面积。 ---------------------------------------------------- ---*/ int s1,s2,s3; int vs(int a,int b,int c) { int v; /***********SPACE***********/ v=________________; s1=a*b; /***********SPACE***********/ s2=________________; s3=a*c; return v; } main() { int v,l,w,h; clrscr(); printf("\ninput length,width and height:"); /***********SPACE***********/ scanf("%d%d%d",________________,&w ,&h); /***********SPACE***********/ v=________________; printf("v=%d s1=%d s2=%d s3=%d\n",v,s1,s2,s3); getch(); } 答案: 【1】a*b*c 或 a * b * c 【2】b*c 或 b * c 【3】&l 【4】vs(l,w,h) 或vs( l , w , h ) 418)./*------------------------------------------------------- 【程序填空】 --------------------------------------------------------- 功能:用函数调用方式,实现字符串的复制。-------------------------------------------------------*/ void string_copy(char *str_from, char *str_to) { int i=0; /***********SPACE***********/ for(; (*(________________)=*(str_from+i))!=' \0'; i++) ; } main() { static char array_str1[20]="I am a teacher."; char array_str2[20]; /***********SPACE***********/ ________________(array_str1, array_str2); /***********SPACE***********/ ________________("array_str2=%s\n",arr ay_str2); } 答案: 【1】str_to+i 或i+str_to 【2】string_copy 【3】printf 419)./*-------------------------- ----------------------------- 【程序填空】 -------------------------------------- ------------------- 功能:seek()函数:判断是否有 不合格成绩;形参:1个,指 向由3个int型元素组成的1维数 组的行指针变量返回值: (1)有不合格成绩,则返回指向 本行首列的一个(列)指针; (2)没有有不合格成绩,返回值 为指向下一行的一个 (列)指针 -------------------------------------- -----------------*/ int *seek( int (*pnt_row)[3] ) { int i=0, *pnt_col; /***********SPACE******** ***/ ________________=*(pnt_ro w+1); for(; i<3; i++) if(*(*pnt_row+i)<60) { pnt_col=*pnt_row; break; /*退出循环*/ } /***********SPACE******** ***/ return(________________); } main() { static int grade[3][3]={{55,65,75},{65, 75,85},{75,80,90}}; int i,j,*pointer; for(i=0; i<3; i++) { /***********SPACE******** ***/ pointer=seek(_____________ ___); if(pointer==*(grade+i)) { printf("No.%d grade list: ", i+1); for(j=0; j<3; j++) /***********SPACE***********/ printf("%d ",*(________________)); printf("\n"); } } } 答案: 【1】pnt_col 【2】pnt_col 【3】grade+i 或i+grade 【4】pointer+j 或j+pointer 420)./*----------------------------------------- -------------- 【程序填空】 ---------------------------------------------------- ----- 功能:计算某日是当年的第几天。 ---------------------------------------------------- ---*/ #include struct { int year; int month; int day; }data; /* 定义一个结构并声明对象为data */ void main() { int days; printf("请输入日期(年,月,日):"); scanf("%d, %d, %d", &data.year, &data.month, &data.day); switch(data.month) { case 1:days = data.day; break; /***********SPACE***********/ case 2:days = data.day+________________; break; case 3:days = data.day+59; break; case 4:days = data.day+90; break; /***********SPACE***********/ case 5:days = data.day+________________; break; case 6:days = data.day+151; break; case 7:days = data.day+181; break; case 8:days = data.day+212; break; case 9:days = data.day+243; break; case 10:days = data.day+273; break; case 11:days = data.day+304; break; case 12:days = data.day+334; break; } /***********SPACE***********/ if(data.year%4==0&&data.year%100!=0_ _______________data.year%400==0) if(data.month>=3) /***********SPACE***********/ days =________________; printf("%d月%d日是%d年的第%d天.\n", data.month, data.day, data.year, days); } 答案: 【1】31 【2】120 【3】|| 【4】days + 1 或1+days 或++days 421)./*------------------------------------------------------- 【程序填空】 --------------------------------------------------------- 功能:输入学生成绩并显示。 -------------------------------------------------------*/ # include struct student { char number[6]; char name[6]; int score[3]; } stu[2]; void output(struct student stu[2]); void main() { int i, j; /***********SPACE******** ***/ for(i=0; i<2; ________________) { printf("请输入学生%d的成绩: \n", i+1); printf("学号:"); /***********SPACE******** ***/ scanf("%s", ________________.number); printf("姓名:"); scanf("%s", stu[i].name); for(j=0; j<3; j++) { printf("成绩%d. ", j+1); /***********SPACE******** ***/ scanf("%d", ________________.score[j]); } printf("\n"); } output(stu); } void output(struct student stu[2]) { int i, j; printf("学号姓名成绩1 成绩2 成绩3\n"); for(i=0; i<2; i++) { /***********SPACE******** ***/ ________________("%-6s%-6 s", stu[i].number, stu[i].name); for(j=0; j<3; j++) printf("%-8d", stu[i].score[j]); printf("\n"); } } 答案: 【1】i++ 或++i 或i=i+1 【2】&stu[i] 【3】&stu[i] 【4】printf 422)./*----------------------------------------- -------------- 【程序填空】 ---------------------------------------------------- ----- 功能:文件操作。 ---------------------------------------------------- ---*/ # include # include void main() { /* 定义一个文件指针fp */ /***********SPACE***********/ ________________ *fp; char ch, filename[10]; printf("Please input the name of file: "); scanf("%s", filename); /* 输入字符串并赋 给变量filename */ /* 以读的使用方式打开文件filename */ /***********SPACE***********/ if((fp=fopen(filename, "________________")) == NULL) { printf("Cannot open the file.\n"); exit(0); /* 正常跳出程序*/ } /* 关闭文件*/ /***********SPACE***********/ ________________; } 答案: 【1】FILE 【2】r 【3】fclose(fp) 423)./*----------------------------------------- -------------- 【程序填空】 ---------------------------------------------------- ----- 功能:考查字符串数组的应用。输出26个英 文字母。 ---------------------------------------------------- ---*/ #include void main (void) { char string[256]; int i; /***********SPACE***********/ for (i = 0; i < 26; ________________) /***********SPACE***********/ string[i] = ________________; string[i] = '\0'; /***********SPACE***********/ printf ("the arrary contains %s\n",________________); } 答案: 【1】i++ 或++i 或i=i+1 或i+=1 【2】'A' + i 或i+'A' 或65 + i 或i+65 【3】string 424)./*------------------------------------------------------- 【程序填空】 --------------------------------------------------------- 功能:输出结果为: * * * * * * * * * * * * * * * * * * * * -------------------------------------------------------*/ main() { /***********SPACE***********/ static char ________________={'*','*','*','*','*'}; int i,j,k; char space=' '; for(i=0;i<5;i++) { printf("\n"); /***********SPACE***********/ for(j=1;j<=3*i;j++) printf("%1c",________________); /***********SPACE***********/ for(k=0;k<________________;k++) printf("%3c",a[k]); } printf("\n");; } 答案: 【1】a[5] 或a[] 【2】space 或' ' 【3】5 或=4 425)./*------------------------------------------------------- 【程序填空】 -------------------------------------- ------------------- 功能:当输入“2,5”的时候输出 为“2 5 5” -------------------------------------- -----------------*/ #include #define max 100 main() { int f[max],i,j,k,m; scanf("%d,%d",&k,&m); /***********SPACE******** ***/ for(i=0;i<=_______________ _;i++)f[i]=0; /***********SPACE******** ***/ f[________________]=1; for(i=k;i<=m;i++) /***********SPACE******** ***/ for(j=i-k;j<=i-1;j++)f[i]_____ ___________f[j]; printf("%d%10d%10d\n",k,m, f[m]); } 答案: 【1】m 【2】k-1 或k -1 【3】+= 或=1+ 426)./*-------------------------- ----------------------------- 【程序填空】 -------------------------------------- ------------------- 功能:百马百担问题:有100匹 马,驮100担货,大马驮三担, 中 马驮2担,两匹小马驮一担,求 大、中、小马各多少匹? -------------------------------------- -----------------*/ #include main() { int hb,hm,hl,n=0; /***********SPACE***********/ for(hb=0;hb<=100;hb+=_____________ ___) /***********SPACE***********/ for(hm=0;hm<=100-hb;hm+=_________ _______) { /***********SPACE***********/ hl=100-hb-________________; /***********SPACE***********/ if(hb/3+hm/2+2*________________==1 00) { n++; printf("hb=%d,hm=%d,hl=%d\n",hb/3,h m/2,2*hl); } } printf("n=%d\n",n); getch(); } 答案: 【1】3 【2】2 【3】hm 【4】hl 427)./*----------------------------------------- -------------- 【程序填空】 ---------------------------------------------------- ----- 功能:百鸡问题:100元买100只鸡,公鸡一 只5元钱,母鸡一只3 元钱,小鸡一元钱三只,求100元钱能买公 鸡、母鸡、小鸡 各多少只? ---------------------------------------------------- ---*/ #include main() { int cocks,hens,chicks; cocks=0; while(cocks<=19) { /***********SPACE***********/ ________________=0; /***********SPACE***********/ while(hens<=________________) 习题7 7.1选择题。 (1)下列对字符串的定义中,错误的是: A 。 A) char str[7] = "FORTRAN"; B) char str[] = "FORTRAN"; C) char *str = "FORTRAN"; D) char str[] = {'F','O','R','T','R','A','N',0}; (2)以下程序段的输出结果是:____D_________ char a[] = "ABCDE" ; char *p = NULL; for (p=a; p main() { static char a[5]; a = "abcde" ; printf("%s\n", a); } B) #include <> main() { static char a[7]= "goodbye!"; printf("%s\n", a) ; } C) #include <> main() { char a[5] = "abcde"; printf("%s\n", a) ; } D) #include <> main() { static char a[]="abcde"; printf("%s\n", a) ; } (4)阅读下列函数,函数功能为___A_____。 void Exchange(int *p1, int *p2) { int p; p = *p1; *p1 = *p2; *p2 = p; } A)交换*p1和*p2的值B)正确,但无法改变*p1和*p2的值 C)交换*p1和*p2的地址 D)可能造成系统故障 程序填空题 导读:在程序填空题中,已经给出了程序的主干,读者首先要理解程序的思路,再选择正确的内容填入空白处,使程序完成既定的功能。这类习题的设计就是要引导读者逐步掌握编程的方法。本节习题的难度适中,可能有些典型的程序在课堂上已经有所接触,读者一定要独立完成它,这样就可以逐步提高自己的编程能力。在程序设计语言学习的中期,读者对程序设计已经有了初步的了解,而自己编写程序又不知从何处入手,此时解答此类题目可以避免盲目性,从而提高学习的效率。 【】下面程序的功能是不用第三个变量,实现两个数的对调操作。#include <> main() { int a,b; scanf("%d%d",&a,&b); printf("a=%d,b=%d\n",a,b); a= ①; b= ②; a= ③; printf("a=%d,b=%d\n",a,b); } 【】下面程序的功能是根据近似公式:π2/6≈ 1/12+1/22+1/32+ …… +1/n2,求π值。 #include <> double pi(long n) { double s=; long i; for(i=1;i<=n;i++) s=s+ ①; return( ②); } 【】下面的程序的功能是求一维数组中的最小元素。 findmin(int *s,int t,int *k) { int p; for(p=0,*k=p;p C语言程序设计试题1 一、单项选择题 1.C语言规定,在一个源程序中main函数的位置______d___ 。 A.必须在最开始B.必须在最后 C.必须在预处理命令的后面D.可以在其他函数之前或之后 2.以下选项中,_________d__ 是C语言关键字 A.printf B.include C.fun D.default 3.已知有声明"int a=3,b=4,c;",则执行语句"c=1/2*(a+b);"后,c的值为____a_ 。 A.0 B.3 C.3.5 D.4 4.设指针变量占4个字节的内存空间,若有声明"char *p="123";int c;",则执行语句 "c=sizeof(p);"后,c的值为__d__ A.1 B.2 C.3 D.4 5.已知有声明"int a=3,b=4;",下列表达式中合法的是_d___。 A.a+b=7 B.a=|b| C.a=b=0 D.(a++)++ 6.已知有声明"char s[20]="Hello";",在程序运行过程中,若要想使数组s中的内容修改为"Good",则以下语句中能够实现此功能的是___d_。 A.s="Good"; B.s[20l="Good"; C.strcat(s,"Good"); D.strcpy(s,"Good"); 7.已知有声明"int a[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};",若需要引用值为12的数组元素,则下列选项中错误的是_a___ 。 A.*(a+2)+3 B.*(*(a+2)+3) C.*(a[2]+3) D.a[2][3] 8.已知有声明"int n;float x,y;",则执行语句"y=n=x=3.89;"后,y的值为_b___ 。 A.3 B.3.0 C.3.89 D.4.0 9.已知有声明"int a=12,b=15,c;",则执行表达式"c=(a||(b-=a))"后,变量b和c的值分别为 __b__。 A.3,1 B.15,12 C.15,1 D.3,12 10.下面的函数定义正确的是_____d________ A)float fun (float x ; float y) {return x*y;} B)float fun (float x,y) {return x*y;} C)float fun (x,y) {int x,y;return x*y;} D)int fun (int x, int y) {return x*y;} 11.某程序需要使用一个代表常数3.14的符号常量名P,以下定义中正确的是_d___。 A.#define P 3.14; B.#define P(3.14) C.#define P=3.14; D.#define P 3.14 12.下列四个选项中,属于C语言关键字的是__c__ 。 A.Float B.single C.double D.real 13.已知某编译系统中signed int类型数据的长度是16位,该类型数据的最大值是_D___。 A.32767 B.32768 C.127 D.65535 导出题库试题(1~100) 共计104道试题 一、程序填空答案(104题) 【程序填空】 1功能:求两个非负整数的最大公约数和最小公倍数。 【1】r != 0 或r 【2】r=m%n 或r=m-m/n*n 【3】n 【4】gcd,lcm 或n,lcm 2功能:下面的程序是求1!+3!+5!+……+n!的和。 【1】s=0 【2】i+=2 或i=i+2 或i++,i++ 【3】j<=i 或i>=j 或jj 【4】f= f * j 3功能:将一个字符串中下标为m的字符开始的全部字符复制成为另 一个字符串。 【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) 4功能:以下程序是用选择法对10个整数按升序排序。 【1】#define N 10 【2】k=I 【3】j 第一章1、一个C程序可能出现的错误有(A)A,以上都包括 B,逻辑错误 C,运行错误 D,语法错误 2、C程序中一般可以包含几个函数(D) A.1个 B.多个 C.0个 D.至少一个 3.C语言属于程序设计语言的哪个类别(B) A.机器语言 B.高级语言 C.面向对象语言 D.汇编语言 4.以下关于C语言描述错误的是(B) A.一个C程序总是从main函数开始执行 B.一个C程序可以包含多个main函数 C.每个语句的最后必须有一个分号 D.C语言的注释符是以"/*"开始并以"*/"结束 5、在调试过程中,逻辑错误是指(C) A.所书写的语句,不符合C的语法。 B.在从obj生成exe文件的过程中,如果函数名书写错误,可能产生的错误。 C.程序的运行结果不符合题目要求。 D.在exe文件的执行过程中,产生运行异常。 第二章 1、16位的二进制数可以表示的整数的范围是(C) A.[-32768,32768] B.[-32767,32768] C.[-32768,32767] D.[-32767,32767] 2、C语言中的实型数据包括(A) A.float和double B.int和float C.float和char D.int和double 3、以下不合法的字符常量是(C) A.'2' B.'A' C.'ab' 4、在以下各组标识符中,均是合法的C语言标识符是(A) A.abc,A_4d,_student,xyz_abc B.auto,12-a,a_b,ab5.x C.A_4d,_student,xyz_abc,if D.abc,a_b,union,scan 5、若有定义:chara;intb;floatc;doubled; 则表达式a*b+d-c值的类型为(A) A.char B.float C.double D.int 6、类型修饰符unsigned不能修饰(D) A.char B.longint C.int D.float 7、若有定义:doublex=1,y; 执行语句,则y的值是(B) A,1 B,2.0 C语言程序设计 期末考试试题及其答案 一、单项选择题(本大题共20题,每题2 分,共40分) 1、以下不是C语言的特点的是( ) A、C语言简洁、紧凑 B、能够编制出功能复杂的程序 C、C语言可以直接对硬件进行操作 D、C语言移植性好 2、以下不正确的C语言标识符是( ) A、ABC B、abc C、a_bc D、ab.c 3、一个C语言程序是由( ) A、一个主程序和若干子程序组成 B、函数组成 C、若干过程组成 D、若干子程序组成 4、一个算法应该具有“确定性”等5个特性,对另外4个特性的描述中错误的是( ) A、有零个或多个输入 B、有零个或多个输出 C、有穷性 D、可行性 5、设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为( ) A、int B、float C、double D、不确定 6、在C语言中,char型数据在内存中的存储形式是( ) A、补码 B、反码 C、源码 D、ASCII码 7、有如下程序,输入数据:12345M678<cR>后( #include 三、程序填空题 导读:在程斥填空题中,已经给出了程序的主干,读者首先要理解程序的思路, 再选择正确的内容填入空白处,使程序完成既定的功能。这类习题的设计就是要引导读者逐步堂握编程的方法。本节习题的难度适中,可能有些典型的程序在课堂上己经有所接触,读者一定要独立完成它,这样就可以逐步提高自己的编程能力。在程序设计语言学习的中期,读者对程序设计已经有了初步的了解,而白己编写程序乂不知从何处入手,此时解答此类题目可以避免盲目性,从而提高学习的效率。 【3.1】下面程序的功能是不用第三个变量,实现两个数的对调操作。 ttinclude for(i=0; i<10; i++) scanf &a[i]); findmin(a, 10, k); printf ("%d, %d\n", *k, a L*kJ); } 【3.4】下面程序的功能是计算1-3+5-7+……-99+101的值。 main() { int i, s=0: for(i=l; i<=101: i+=2) {①; s二s+t: ②; } printf ("%d\n", s); } [3.5]有以下程序段: s=l. 0; for(k=1: k<=n: k++) s=s+l. 0/(k*(k+1)); printf ("%f\n", s); 填空完成下述程斥,使之与上述程序的功能完全相同。 s=0. 0: ①; k=0; do { s二s+d; ②; d=1.0/(k*(k+l)); }while(③); printf ("%f\n", s); [3.6]下而程用的功能是从键盘上输入若干学生的学习成绩,统计并输出最高成绩和最低成绩,当输入为负数时结束输入。 main () ;、float x, amax, amin; scanf &x); amax=x: amin=x; 指针 一单项选择题(每题2分,共40分) 1 以下叙述中错误的是_B__。 A 在程序中凡是以“#”开始的语句行都是预处理命令行 B 预处理命令行的最后不能以分号表示结束 C #define MAX是合法的宏定义命令行 D C程序对预处理命令行的处理是在程序执行的过程中进行的 2 若程序中有宏定义行:#define N 100 ,则以下叙述中正确的是__B_。 A 宏定义行中定义了标识符N的值为整数100 B 在编译程序对C源程序进行预处理时用100替换标识符N C 对C源程序进行编译时用100替换标识符N D 在运行时用100替换标识符 3 若有如下宏定义: #define N 2 #define y(n) ((N+1)*n) 则执行下列语句:z=4*(N+y(5));后的结果是_B__。 A 语句有错误 B z值为68 C z值为60 D z值为180 4 以下程序运行后的输出结果是_A__。 #define F(X,Y) (X)*(Y) main() { int a=3,b=4; printf("%d\n",F(a++,b++)); } A 12 B 15 C 16 D 20 5 以下程序运行后的输出结果是_C__。 #define f(x) (x*x) main() { int i1,i2; i1=f(8)/f(4); i2=f(4+4)/f(2+2); printf("%d,%d\n",i1,i2); } A 64,28 B 4,4 C 4,3 D 64,64 6 若已定义a为int型变量,则__D_是对指针变量p的正确说明和初始化。 A int p=&a; B int *p=a; C int *p=*a; D int *p=&a; 7 已知下列说明语句: static int a[]={2,4,6,8} static int *p[]={a,a+1,a+2,a+3}; int **q; q=p; 则表达式**(q+2)的值是_A__。 A 6 B 2 C 4 D 8 8 下面是一个初始化指针的语句:int *px=&a;,其中指针变量的名字应该__C_。 A *px B a C px D &a 9 若指针px为空指针,则_B__。。 c语言程序设计期末试题B(含答案) 一单项选择题(每小题1分,共10分) 1. A 2. C 3. D 4. A 5. B 1.以下4组用户定义标识符中,全部合法的一组是() A)_total clu_1 sum B)if -max turb C)txt REAL 3COM D)int k_2 _001 2.以下程序的输出结果是() #include 面向对象程序设计期末综合练习二(填空题) 填空题 1.C++ 语言是在 _________语言的基础上发展起来的。 2.C++ 语言的编译单位是扩展名为 __________的 __________文件。 3.行尾使用注释的开始标记符为 __________ 。 4.多行注释的开始标记符和结束标记符分别为__________ 和 __________。 5.用于输出表达式值的标准输出流对象是_________。 6.用于从键盘上为变量输入值的标准输入流对象是________。 7.一个完整程序中必须有一个名为 ________的函数。 8.一个函数的函数体就是一条 _________语句。 9.当执行 cin 语句时,从键盘上输入每个数据后必须接着输入一个________符,然后才能继续输入下一个数据。 10.在 C++程序中包含一个头文件或程序文件的预编译命令为__________。 11.程序中的预处理命令是指以______字符开头的命令。 12.一条表达式语句必须以 ______ 作为结束符。 13.在#include 命令中所包含的头文件,可以是系统定义的头文件,也可以是 ________定义的头文件。 14.使用 #include 命令可以包含一个头文件,也可以包含一个______文件。 15.一个函数定义由 ________和 ________两部分组成。 16.若一个函数的定义处于调用它的函数之前,则在程序开始可以省去该函数的______语句。 17. C++头文件和源程序文件的扩展名分别为______和 ______。 18.程序文件的编译错误分为 ________和 ________两类。 19.当使用 _______保留字作为函数类型时,该函数不返回任何值。 20.当函数参数表用 ______保留字表示时,则表示该参数表为空。 21 .从一条函数原型语句“int fun1(void);”可知,该函数的返回类型为______,该函数带有______ 个参数。 22.当执行 cout 语句输出 endl 数据项时,将使 C++显示输出屏幕上的光标从当前位置移动到 ________的开始位置。 23.假定 x=5,y=6,则表达式 x++*++y 的值为 __________ 。 24.假定 x=5,y=6,则表达式x--*--y的值为__________。 25.假定 x=5,y=6,则执行表达式 y*=x++ 计算后, x 和 y 的值分别为 __________和 __________ 。 26.假定 x=5,y=6,则执行表达式 y+=x-- 计算后, x 和 y 的值分别为 __________和 __________ 。 27.C++ 常数 0x145 对应的十进制值为 __________。 28.C++ 常数 0345 对应的十进制值为 __________ 。 29.十进制常数 245 对应的十六进制的 C++表示为 __________。 30.十进制常数 245 对应的八进制的 C++表示为 __________ 。 31.signed char类型的值域范围是________至__________之间的整数。 32.int和float类型的数据分别占用_________和__________个字节。 33.float和double类型的数据分别占用_________和________个字节。 34.bool和char类型的数据分别占用_________和________个字节。 35.unsigned short int和int类型的长度分别为_________和________。 C语言程序设计试题(第1套) 一.单项选择题(30分,每题2分) 1.用C语言编写的代码程序______。 A、可立即执行 B、是一个源程序 C、经过编译即可执行 D、经过编译解释才能执行 2. C语言中用于结构化程序设计的三种基本结构是______。 A、顺序结构、选择结构、循环结构 B、if、switch、break C、for、while、do-while D、if、for、continue 3. 以下选项中合法的实型常数是______。 A、B、E-3 C、.2E0 D、 4. 假定x和y为double型,则表达式x=2,y=x+3/2的值是______。 A、B、3 C、D、 5. ch是字符型变量,下面不正确的赋值语句是______。 A、ch = 65; B、ch="a"; C、ch ='\ n'; D、ch= 9+ '0'; 6. 下列有关C语言程序书写格式的说法哪个是错误的 A、C程序的书写格式比较自由,一个语句可以占多行,一行也可以有多个语句。 B、C语句必须要有分号。 C、C语言程序的标识符必须使用小写字母。 D、用{ } 括起来的部分,通常表示了程序的某一层次结构,称为块。 7.下面程序段所表示的数学函数关系是______。 x= -1; if (a!=0) if (a>0) x=1; else x=0; -1 (a<0) 1 (a<0) A、x= 0 (a=0) B、x= -1 (a=0) 1 (a>0) 0 (a>0) 0 (a<0) -1 (a<0) C、x= -1 (a=0) D、x= 1 (a=0) 1 (a>0) 0 (a>0) 8. 以下关于do-while循环的不正确描述是______。 A) do-while的循环体至少执行一次 B) do-while的循环体可以是复合语句 C) 在do-while循环体中,一定要有能使while后面表达式的值变为零("假")的操作 D) do-while循环由do开始,用while结束,在while(表达式)后面不能写分号 9. 以下程序执行后sum的值是______。 A) 15 B) 14 C) 不确定 D) 0 main() { int i , sum=0; for(i=1;i<6;i++) sum+=i; printf("%d\n",sum); } 10.若有说明语句:int a[][3]={1,2,3,4,5,6}; 则a数组第一维的大小是。 A. 1 B. 2 C.3 D. 无确定值 11. C语言允许函数值类型的缺省定义,此时该函数值隐含的类型是______。 A、float型 B、long型 C、int型 D、double型 12.下面正确的函数定义形式为 A、double fun(int x;int y) B、double fun(int x,int y); C、double fun(int x,y) D、double fun(int x,int y) 13.以下程序运行后,输出结果是______。 #define ADD(x) x+x 《C语言程序设计》模拟试卷一 一、单项选择题(每题2分,共30分) 1、下列有关C语言的叙述中错误的是()。 A) C语句必须以分号结束 B) 任何一个C程序中有且只有一个主函数 C) 复合语句在语法上可被看作一条语句 D) C程序中对数据的任何操作都可由运算符实现 2、以下不能定义为用户标识符的是()。 A) MAIN B) _HJ C) 2ong D) LINE1 3、下列符号中用来表示C语言中的回车换行的是()。 A) \r B) \n C) \b D) \t 4、如有如下定义:int a=1,则语句printf(“%d,%d”, a, ++a);的运行结果为()。 A) 1, 1 B) 1, 2 C) 2, 2 D) 2, 1 5、已知ch为字符型变量,下面表达式中正确的是()。 A) ch=’\xff ’B) ch=’\ff ’C) ch=’ ff ’D) ch=” ff ” 6、以下能正确定义一维数组的是()。 A) int a[5]={0,1,2,3,4,5}; B) int a[5]=”012345”; C) char a[ ]=”012345”;D) char a[5]={0,1,2,3,4,5}; 7、以下语句中能正确定义变量并赋初值的是()。 A) char c=65; B) float f=f+1.1; C) double x=12.3e3.6; D) int m=n=2.0; 8、在执行下列程序时输入:1357924,则程序的运行结果为()。 main( ) { int x, y; scanf(“%2d%2d”,&x,&y); printf(“%2d”,x*y); } A) 13 B) 1357 C) 74 D) 741 9、执行下列程序段后输出的结果是()。 一、填空共219题 第1题题号:422 设有以下结构类型说明和变量定义,则变量a在内存所占字节数是【1】 . Struct stud { char num[6]; int s[4]; double ave; } a,*p; 答案: 1). 22 第2题题号:533 设x和y均为int型变量,则以下for循环中的scanf语句最多可执行的次数是【1】. for (x=0,y=0;y!=123&&x<3;x++) scanf ("%d",&y); 答案: 1). 3 第3题题号:496 静态变量和外部变量的初始化是在【1】阶段完成的,而自动变量的赋值是 在【2】时进行的. 答案: 1). 编译 2). 函数调用 第4题题号:96 已知a=13,b=6, a&b的十进制数值为【1】. 答案: 1). 4 第5题题号:398 程序段int k=10; while(k=0) k=k-1循环体语句执行【1】次. 答案: 1). 0 第6题题号:651 设w=5;w+= -2;则w的值为【1】. 答案: 1). 3 第7题题号:258 下面程序段的输出结果是【1】. int a=12; a=a&0377;pritnf("%d\n",a); 答案: 1). 12 第8题题号:457 设a,b,c,t为整型变量,初值为a=3,b=4,c=5,执行完语句t=!(a+b)+c-1&&b+c/2 后,t的值是【1】. 答案: 1). 1 第9题题号:402 设a取二进制数00101101,若想通过a^b运算使a的高4位取反,低4位不变,则b的 二进制数是【1】. 答案: 1). 11110000 第10题题号:311 若所用变量均已正确定义,则执行下面程序段后的值是【1】. for(i=0 ; i<2 ; i++ ) printf("YES"); printf("\n"); 答案: 1). YESYES 一.填空 1. 每个C程序都必须有且仅有一个________ 函数。 2. C语言程序开发到执行通常要经过6个阶段即编辑、预处理、________、链接、加载和执行。 3. 软件是程序,以及______、使用和维护所需要的所有文档。 4. 国标中规定:“计算机程序是按照具体要求产生的适合于计算机处理的_________”。 5. 程序设计语言按照书写形式,以及思维方式的不同一般分为低级语言和________两大类。 6. C语言是由________组成的。 7. C语言的函数可分为主函数main、标准库函数和_________。 8. 一个函数是由两部分组成的,即:________和函数体。 9. 编译是将C语言所编写的源程序________成机器代码,也称为建立目标代码程序的过程。 10. 程序是由某种程序设计语言编制出来,体现了编程者的控制思想和对计算机执行操作 的要求。不同的任务功能,就会需求不同的软件程序,如:控制计算机本身软硬件协调工作,并使其设备充分发挥效力,方便用户使用的系统软件程序,称为操作系统;而为办公自动化(OA)、管理信息系统(MIS)、人工智能、电子商务、网络互联等等应用而开发的软件程序,统称为_________。 11. 机器语言是以__________形式表示的机器基本指令的集合,是计算机系统唯一不需要翻译可以直接识别和执行的程序设计语言。 12. 与机器语言相比,使用汇编语言来编写程序可以用_______来表示指令的操作码和操作对 象,也可以用标号和符号来代替地址、常量和变量。 13. 在编译程序之前,凡以____开头的代码行都先由预处理程序预处理。 14. C程序的执行均是由执行_________开始。 15. 函数体即为包含在{}内的部分。它分为________和为完成功能任务由若干个C 语句 组成的执行部分。 16. C语言程序中一条简单语句是以________字符作为结束符的。 17. C语言是结构化、________的程序设计语言。 18. 由于计算机硬件不能直接识别高级语言中的语句,因此,必须经过“_______程序”,将用高级语言编写的程序翻译成计算机硬件所能识别的机器语言程序方可执行。 19. 用高级语言编写的程序需翻译成计算机硬件所能识别的机器语言程序方可执行。所以 说,用高级语言进行程序设计,其编程效率高,方便易用,但_______没有低级语言高。 20. 2012-2013学年二学期C语言期末考试试卷(A卷)班级:___________学号:___________姓名:___________得分:___________ 题号一二三四五六七八九十成绩复核得分 阅卷 题目部分,(卷面共有24题,100分,各大题标有题量和总分) 一、填空题(24小题,共100分) 1. 以下程序的功能是计算下面函数的值。请填空。 #include 3. 已定义一个含有30个元素的数组s,函数fav1的功能是按顺序分别赋予各元素从2开始的偶数,函数fav2则按顺序每五个元素求一个平均值,并将该值存放在数组w中。请填空。 #define SIZE 30 fav1(float s[]) { int k,i; for(k=2,i=0;i 三、程序填空题 导读:在程序填空题中,已经给出了程序的主干,读者首先要理解程序的思路,再选择正确的内容填入空白处,使程序完成既定的功能。这类习题的设计就是要引导读者逐步掌握编程的方法。本节习题的难度适中,可能有些典型的程序在课堂上已经有所接触,读者一定要独立完成它,这样就可以逐步提高自己的编程能力。在程序设计语言学习的中期,读者对程序设计已经有了初步的了解,而自己编写程序又不知从何处入手,此时解答此类题目可以避免盲目性,从而提高学习的效率。 【3.1】下面程序的功能是不用第三个变量,实现两个数的对调操作。 #include 【3.2】下面程序的功能是根据近似公式:π2/6≈ 1/12+1/22+1/32+ …… +1/n2,求π值。 #include C语言程序设计的试题及答案 C语言程序设计的试题及答案C语言程序设计的试题及答案第一章基础知识 一、填空 1.每个C程序都必须有且仅有一个________函数。 2.C语言程序开发到执行通常要经过6个阶段即编辑、预处理、________、链接、加载和执行。 3.软件是程序,以及______、使用和维护所需要的所有文档。 4.国标中规定:“计算机程序是按照具体要求产生的适合于计算机处理的_________”。 5.程序设计语言按照书写形式,以及思维方式的不同一般分为低级语言和________两大类。 6.C语言是由________组成的。 7.C语言的函数可分为主函数ain、标准库函数和_________。 8.一个函数是由两部分组成的,即:________和函数体。 9.编译是将C语言所编写的源程序________成机器代码,也称为建立目标代码程序的过程。 10.程序是由某种程序设计语言编制出来,体现了编程者的控制思想和对计算机执行操作的要求。不同的任务功能,就会需求不同的软件程序,如:控制计算机本身软硬件协调工作,并使其设备充分发挥效力,方便用户使用的系统软件程序,称为操作系统;而为办公自 动化、管理信息系统、人工智能、电子商务、网络互联等等应用而开发的软件程序,统称为_________。 11.机器语言是以__________形式表示的机器基本指令的集合,是计算机系统唯一不需要翻译可以直接识别和执行的程序设计语言。 12.与机器语言相比,使用汇编语言来编写程序可以用_______来表示指令的操作码和操作对象,也可以用标号和符号来代替地址、常量和变量。 13.在编译程序之前,凡以____开头的代码行都先由预处理程序预处理。 14.C程序的执行均是由执行_________开始。15.函数体即为包含在{}内的部分。它分为________和为完成功能任务由若干个C语句组成的执行部分。 16.C语言程序中一条简单语句是以________字符作为结束符的。 17.C语言是结构化、________的程序设计语言。 18.由于计算机硬件不能直接识别高级语言中的语句,因此,必须经过“_______程序”,将用高级语言编写的程序翻译成计算机硬件所能识别的机器语言程序方可执行。 19.用高级语言编写的程序需翻译成计算机硬件所能识别的机器语言程序方可执行。所以说,用高级语言进行程序设计,其编程效率高,方便易用,但_______没有低级语言高。 20.第一个系统体现结构化程序设计思想的教学工具语言是_______语言。 二、程序填空题(每空2分,共20分) 1.下列程序是求100之内的能被7整除的自然数之和。请在横线处填入适当的语句,将程序补充完整。 #include int i,j; for(i=0; (1) ;i++) { j=i*10+6; if( (2) ) continue; else cout<c语言程序设计试题答案
C语言程序设计程序填空题库及答案
C语言程序设计试题1
c语言程序填空题
C语言程序设计期末考试选择题题库
C语言程序设计期末考试试题(含答案)
c语言程序填空题1
C语言程序设计习题集(3)
c语言程序设计期末试题B(含答案)
C语言程序设计期末练习填空题.docx
C语言程序设计试题第1套(山东建筑大学)
C语言程序设计模拟试题1附答案
大学计算机C语言程序设计(填空题)
C语言程序设计试题集与答案解析
C语言练习题填空题1
c语言程序填空题完整
C语言程序设计的试题及答案
C语言程序填空题-20分