C语言填空题整理
一.(25)
116、以下程序运行后的输出结果是__3____。
main()
{ int p=30;
printf("%d\n",(p/3>0 ? p/10 :p%3));
}
66、若想通过以下输入语句使a=5.0,b=4,c=3,则输入数据的形式应该是__5.0,4,c=3____。 int b,c; float a;
scanf("%f,%d,c=%d",&a,&b,&c)
27、请在以下程序第一行的下划线处填写适当内容,使程序能正常运行。
_double max或extern double max_____( double,double);
main()
{ double x,y;
scanf("%1f%1f",&x,&y);
printf(%1f\n",max(x,y));
}
double max(double a,double b)
{ return(a>b ? a:b);}
57、以下程序的输出结果是__246____。
void fun()
{
static int a = 0;
a += 2;
printf("%d",a);
}
main()
{
int cc;
for(cc = 1;cc < 4; cc++) fun();
printf("\n");
}
43、以下程序运行后的输出结果是_81_____。
#define S(x) 4*x*x+1
main()
{ int i=6,j=8;
printf("%d\n",S(i+j));
}
73、以下函数inverse的功能是使一个字符串按逆序存放。inverse(str)
char str[];
{
char m;
int i,j;
for(i=0,j=strlen(str);i m=str[i]; str[i]=_str[j-1]_____; _str[j-1]=m_____; } } 144、以下程序的输出结果_efgh_____。 #include #include char *fun(char *t) { char *p=t; return(p+strlen(t)/2); } main() { char *str="abcdefgh"; str=fun(str); puts(str); } 67、下列程序的输出结果是__5 6____。 int t(int x,int y,int cp,int dp) { cp=x * x+y*y; dp=x*x-y*y; } main( ) { int a=4,b=3,c=5,d=6; t(a,b,c,d); printf("%d %d\n",c,d); } 19、若有如下结构体说明: struct STRU { int a,b;char c: double d; struct STRU *p1,*p2; }; 请填空,以完成对t数组的定义,t数组的每个元素为该结构体类型。 __struct STRU____t[20] 100、以下程序用来统计文件字符的个数,请填空。 #include "stdio.h" main() { FILE *fp; long num=O; if((fp=fopen("fname.dat","r"))==NULL) { PRINTF("Open error\n");exit(0);} while(__fgetc(fp)!=EOF或!feof(fp)____) {num++; } printf("num=%ld\n",num); fclose(fp); } 93、以下程序段用于构成一个简单的单向链表,填空。 struct STRU { int x,y; float rate; __struct STRU *____ p; }a,b; a.x=0;a.y=0;a.rate=0;a.p=&b; b.x=0;b.y=0;b.rate=0;b.p=NULL; 42、以下程序从终端读入数据到数组中,统计其中正数的个数,并计算它们之和,请填空。main() { int i,a[20],sum,count; sum=count=0; for(i=0;i<20;i++) scanf("%d",_&a[i]_____ ); fro(i=0;i<20;i++) { if(a[i]>0) { count++; sum+= _a[i]_____ ; } } printf("sum=%d,count=%d\n",sum,count); } 74、以下函数fun用于求两个整数a和b的最大公约数。fun(a,b) int a,b; {int i,j,m,n; if(a>b) {m=a;a=b;__b=m____;} i=a;j=b; while((n=_j%i_____)!=0) {j=i;i=_n_____;} return(i); } 41、以下程序中, for循环体执行的次数是____4__。#define N 2 #define M N+1 #define K M+1*M/2 main() { int i; for(i=1;i { ... } ... } 49、以下程序运行后的输出结果是_13431_____。struct NODE { int k; struct NODE *link; }; main() { struct NODE m[5],*p=m,*q=m+4; int i=0; while(p!=q){ p->k=++i; p++; q->k=i++; q--; } q->k=i; for(i=0;i<5;i++) printf("%d",m[i].k); 二.(12) 95、以下程序的输出结果是_261_____。 main() { int a=177; printf("%o\n",a); } 83、以下程序通过函数指针p调用函数fun,请在填空栏内,写出定义变量p的语句。 void fun(int*x,int*y) { …… } main() { int a=10,b=20; __void (*p)() 或void(*p)(int*, int*)____ p=fun; p(&a,&b); …… } 17、下列程序的输出结果是__0____。 void fun(int *n) { while((*n)--); printf("%d",++(*n)); } main() { int a=100; fun(&a); } 29、以下程序运行后的输出结果是__30 25____。 int a=5; fun(int b) { static int a=10; a+=b++; printf("%d ",a); } main() { int c=20; fun(c); a+=c++; printf("%d\n",a); } 117、以下程序的功能是输出如下形式的方阵: 13 14 15 16 9 10 11 12 5 6 7 8 1 2 3 4 请填空。 main() { int i,j,x; for(j=4;j_>0_____;j--) { for(i=1;i<=4;i++) { x=(j-1)*4+__i__; printf("%4d",x); } printf("\n"); } 92、若有定义语句:char s[100],d[100];int j=0,i=0;且s中已赋字符串,请填空以实现拷贝。(注:不使用逗号表达式) while(s[i]){d[j]=_s[i++]_____;j++;} d[j]=0; 37、下面rotate函数的功能是:将n行n列的矩阵A转置为A',例如: |1 2 3 4 | |5 6 7 8 | 当A=|9 10 11 12| |13 14 15 16| |1 5 9 13| |2 6 10 14| 则A'=|3 7 11 15| |4 8 12 16| 请填空。 #define N 4 void rotate(int a[][]) { int i,j,t; for(i=0;i for(j=0;_j<=i_____;j++) {t=a[i][j]; ___a[i][j]=a[j][i]___; a[j][i]=t; } } 52、已知字符A的ASCII码为65,以下程序运行后的输出结果是__67G____。 main() { char a,b; a='A'+'5'-'3'; b=a+'6'-'2'; printf("%d%c\n",a,b); } 115、已有文本文件test.txt,其中的内容为:Hello,everyone!。以下程序中,文件test.txt已正确为"读"而打开,由此文件指针fr指向文件,则程序的输出结果是_Hell_____。 #include main() { FILE *fr; char str[40]; ...... fgets(str,5,fr); printf("%s\n",str); fclose(fr); } 10、函数mycmp(char *s,char *t)的功能是比较字符串s和t的大小,当s等于t时返回0,当s>t返回正值,当s mycmp( char *s,char *t) { while (*s==*t) { if (*s=='\0')return 0; ++s;++t; } return(_*s=*t_____); } 136、以下程序的功能是:利用指针指向三个整型变量,并通过指针运算找出三个数中的最大值,输出到屏幕上。请填空。 main() { int x,y,z,max,*px,*py,*pz,*pmax; scanf("%d%d%d",&x,&y,&z); px=&x; py=&y; pz=&z; pmax=&max; *pmax=x______; if(*pmax<*py) *pmax=*py; if(*pmax<*pz) *pmax=*pz; printf("max=%d\n",max); } 46、已知字符A的ASCII代码值为65,以下程序运行时若从键盘输入:B33<回车>,则输出结果是__1 B____。#include main() { char a,b; a=getchar();scanf("%d",&b); a=a-'A'+'0';b=b*2; printf("%c %c\n",a,b); } 三.(11) 6、以下程序通过函数SunFun和f(x),x=0到10,这里f(x)=x^2+1,由F函数实现,请填空。 main() { printf("The sun=%d\n",SunFun(10));} SunFun(int n) { int x,s=0; for(x=0;x<=n;x++)s+F(______); return s; } F(int x) { return (______);} 131、下面程序的运行结果是__18____。 #include int f (int a[], int n) { if(n>1) return a[0]+f(a+1,n-1); else return a[0]; } main() {int aa[10]={1,2,3,4,5,6,7,8,9,10}, s; s=f (aa+2,4); printf("%d\n",s); } 97、以下程序的输出结果是_efgh_____。 main() { char *p="abcdefgh",*r; long *q; q=(long*)p; q++; r=(char*)q; printf("%s\n",r); } 141、执行以下程序时输入1234567 #include main() { int a=1,b; scanf("%2d%2d",&a,&b); printf("%d %d\n",a,b); } 79、若有以下结构类型说明和变量定义,则变量a在内存所占字节数是_22_____。 struct stud { char num[6]; int s[4]; double ave; } a,*p; 40、以下程序运行后的输出结果是_*2*4*6*8*_____。 main() { char a[]="123456789",*p; int i=0; p=a; while(*p) { if(i%2==0) *p='*'; p++;i++; } puts(a); } 158、以下程序按下面指定的数据给x数组的下三角置数,并按如下形式输出,请填空。 4 3 7 2 6 9 1 5 8 10 #include main() { int x[4][4],n=0,i,j; for(j=0;j<4;j++) for(i=3;i>=j; _i- -_____) {n++;x[i][j]= __n___;} for(i=0;i<4;i++) { for(j=0;j<=i;j++) printf("%3d",x[i][j]); printf("\n"); } } 135、以下程序的功能是:求出数组x中各相邻两个元素的和依次存放到a数组中,然后输出。请填空。main() { int x[10],a[9],i; for(i=0;i<10;i++) scanf("%d",&x[i]); for( _i=1____; i<10;i++) a[i-1]=x[i]+ x[i-1]______; for(i=0;i<9;i++ ) printf("%d",a[i] ) ; printf("\n" ); } 12、下列程序中字符串中各单词之间有一个空格,则程序的输出结果是_How does she _____。 # include main( ) { char str1[ ]="How do you do", *p1=str1; strcpy(str1+strlen(str1)/2,"es she"); printf("%s\n",p1); 156、以下程序的输出结果是__3____。 #include #define N 5 int fun(int *s,int a,int n) { int j; *s=a; j=n; while(a!=s[j]) j--; return j; } main() { int s[N+1]; int k; for(k=1;k<=N;k++) s[k]=k+1; printf("%d\n",fun(s,4,N)); } 9、以下程序的输出结果是___7___。 #define MAX(x,y) (x)>(y)?(x):(y) main() { int a = 5, b = 2,c = 3, d = 3, t; t = MAX(a + b, c + d)*10; printf("%d\n", t); } 四.(9) 149、以下程序的输出结果是_13_____。 #include void fun(int x) { if(x/2>0) fun(x/2); printf("%d",x); } main() { fun(3); printf("\n"); } 153、若整型变量a和b中的值分别为7和9,要求按以下格式输出a和b的值: a=7 b=9 请完成输出语句:printf("_a=%d\nb=%d_____",a,b); 。 139、设有说明 struct DATE { int year;int month;int day;}; 请写出一条定义语句,该语句定义 d 为上述结构体类型变量,并同时为其成员 year、month、day依次赋初值2006、10、1:_struct DATE d={2006,10,1};_____。 123、以下isprime函数的功能是判断形参a是否为素数,是素数,函数返回1,否则返回0。请填空。 int isprime(int a) { int i; for(i=2;i<=a/2;i++) if(a%i==0) _return 0_____; _if(i>a/2) return 1_____; } 128、以下程序的功能是:将输入的正整数按逆序输出。例如:若输入135则输出531。请填空。 #include main() { int n, s; printf ("Enter a number: "); scanf ("%d",&n); printf ("Output: "); do { s = n%10; printf ("%d",s); n=n/10______; } while (n!=0); printf ("\n"); } 154、以下程序的输出结果是_1_____。 #include main() { int i,j,sum; for(i=3;i>=1;i--) { sum=0; for(j=1;j<=i;j++) sum+=i*j; } printf("%d\n",sum); } 152、设变量a和b已正确定义并赋初值。请写出与a-=a+b等价的赋值表达式__a=-b____。 137、以下程序的输出结果是__10____。 int fun(int *x,int n) { if(n==0) return x[0]; else return x[0]+fun(x+1,n-1); } main() { int a[]={1,2,3,4,5,6,7}; printf("%d\n",fun(a,3)); } 24、以下程序的输出结果是_16_____。 #define MCRA(m) 2*m #define MCRB(n,m) 2*MCRA(n)+m main() { int i=2,j=3; printf("%d\n",MCRB(j,MCRA(i))); } 34、下面程序的运行结果是:____6__。 int f(int a[],int n) { if(n>1) return a[0]+f(&a[1],n-1); else return a[0]; } main() { int aa[3]={1,2,3},s; s=f(&aa[0],3); printf("%d\n",s); } 7、以下程序中,函数SumColumMin的功能是:求出M行N列二维数组每列元素中的最小值,并计算它们的和值。和值通过形参传回主函数输出。请填空。 #define M 2 #define N 4 void SumColumMin(int a[M][N],int *sum) { int i,j,k,s=0; for(i=0;i { k=0; for(j=1;j if(a[k][i]>a[j][i])k=j; s+=____a[k][i]__ ; } _____sum_ =s; } main() { int x[M][N]={3,2,5,1,4,1,8,3},s; SumColumMin(_____x,&s_); printf("%d\n",s); } 109、若有程序 main() { int i,j; scanf("i=%d,j=%d",&i,&j); printf("i=%d,j=%d\n ",i,j); } 要求给i赋10,给j赋20,则应该从键盘输入______。 60、下列程序的运行结果是__4,8____。 main() { union EXAMPLE { struct { int x; int y; } in; int a; int b; }e; e.a=1;e.b=2; e.in.x=e.a*e.b; e.in.y=e.a+e.b; printf("%d,%d\n",e.in.x,e.in.y); } 102、mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。请填空。 int mystrlen(char *str) { int i; for(i=0;______!='\0';i++); return( ______ ); } 47、以下程序中,fun函数的功能是求3行4列二维数组每行元素中的最大值。请填空。 void fun(int,int,int(*)[4],int *); main() { int a[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i; fun(3,4,a,b); for(i=0;i<3;i++) printf("%4d",b[i]); printf("\n"); } void fun(int m,int n,int ar[][4],int *br) { int i,j,x; for(i=0;i { x=ar[i][0]; for(j=0;j ______=x; } } 94、以下程序段打开文件后,先利用fseek函数将文件位置指针定位在文件末尾,然后调用ftell函数返回当前文件位置指针的具体位置,从而确定文件长度,请填空。 file *myf; long f1; myf=__ __("test.t","rb"); fseek(myf,(),SEEK_END);f1+ftell(myf); fclose(myf); printf("%1d\n",f1); 119、以下程序的输出结果是_30_____。 main() { int a[3][3]={{1,2,9},{3,4,8},{5,6,7}},i,s=0; for(i=0;i<3;i++) s+=a[i][i]+ a[i][3-i-1]; printf("%d\n",s); }