for(i=0;i<6;i++)putchar(c[i]); printf(“\\n”);} 如果从键盘上输入: ab<回车> c<回车> def<回车>
则输出结果为_C__。 A)a b c d e f B)a b c d C)ab c d D)abcdef
4、下列程序执行后的输出结果是__C__。 main(){ char x=0xFFFF;printf(“%d\\n”,x--);}
A)-32767 B)FFFE C)-1 D)-32768 5、有如下程序段: int a=14,b=15,x; char c=’A’;
x=(a&&b)&&(c<’B’);
执行该段程序后,x的值为__D__。 A)true B)false C)0 D)1 6、下列程序执行后的输出结果是__A__。 main(){ in x=’f’;printf(“%c\\n”,’A’+(x-‘a’+1));} A)G B)H C)I D)J
7、在执行以下程序时,如果从键盘上输入:ABCdef<回车>,则输出为__B_。 main(){ char ch; while((ch=getchar())!=’\\n’){ if(ch>=’A’&&ch<=’Z’) ch=ch+32; else if(ch>=’a’&&ch<=’z’)ch=ch-32; printf(“%c”,ch);}}
A)ABCdef B)abcDEF C)abc D)DEF
填空题
1、已知大写字母A的ASCII码值是65,小写字母a的ASCII码值是97,则用八进制表示的字符常量’\\101’是____。A
2、下面程序的输出结果是____。aceg main(){ int i; for(i=’A’;i<’I’;i++,i++) printf(“%c”,i+32); printf(“\\n”);}
七、函数
典型考题
1、若程序中定义了以下函数:
double myadd(double a,double b){ return(a+b);} 将其放在调用语句之后,则在调用之前应该对函数进行说明,以下选项中错误的说明是____。 A
A)double myadd(double a,b) B)double myadd(double,double)
C)double myadd(double b,double a) D)double myadd(double x,double y) 2、有以下程序:
char fun(char x,char y){ if(x printf(“%c\\n”,fun(fun(a,b),fun(b,c)) } 程序运行结果是_D__。 A)函数调用出错 B)8 C)9 D)7 3、有以下程序: void f(int v,int w){ int t; t=v;v=w;w=t;} main(){ int x=1,y=3,z=2; if(x>y) f(x,y); else if(y>z) f(y,z); else f(x,z); printf(“%d,%d,%d\\n”,x,y,z);} 执行后的输出结果是__C_。 A)1,2,3 B)3,1,2 C)1,3,2 D)2,3,1 4、若已知定义的函数有返回值,则以下该函数调用的叙述中错误是__D___。 A)函数调用可以作为独立的语句存在。 B)函数调用可以作为一个函数的实参。 C)函数调用可以出现在表达式中。 D)函数调用可以作为一个函数的形参。 5、有以下函数定义: void fun(int n,double x){……} 若以下选项中的变量都已经正确定义并赋值,则对函数fun的正确调用语句是_C__。A)fun(int y,double m); B)k=fun(10,12.5); C)fun(x,n); D)void fun(n,x); 6、下列函数定义中,出现编译错误的是__B__。 A)max(int x,int y,int B)int max(int x,y){int C)max(int x,int y){int D)int max(int *z){*z=x>y?x:y;} z;z=x>y?x:y;return z;} z;z=x>y?x:y;return(z);} y){return(x>y?x:y);} 7、有以下程序: fun(int a,int b){if(a>b) return(a);else return(b);} main(){int x=3,y=8,z=6,r;r=fun(fun(x,y),2*z);printf(“%d\\n”,r);} 程序运行后的输出结果是__D__。 A)3 B)6 C)8 D)12 8、有以下程序: int f1(int x,int y){return x>y?x:y;} int f2(int x,int y){return x>y?y:x;} main(){int x,int a=4,b=3,c=5,d,e,f;d=f1(a,b);d=f1(d,c);e=f2(a,b);e=f2(e,c);f=a+b+c-d-e;printf(“%d,%d,%d\\n”,d,f,e);} 程序运行后的输出结果是__C___。 A)3,4,5 B)5,3,4 C)5,4,3 D)3,5,4 9、有以下程序: void f(int x,int y){int t;if(x main(){int a=4,b=3,c=5;f(a,b);f(a,c);f(b,c);printf(“%d,%d,%d\\n”,a,b,c);} 程序运行后的输出结果是:__D__。 A)3,4,5 B)5,3,4 C)5,4,3 D)4,3,5 填空题 1、函数fun的功能是计算xn。 double fun(double x,int n){int i;double y=1;for(i=1;i<=n;i++) y=y*x; return y;} 主函数已正确定义m、a、b变量并赋值,并调用fun函数计算:m=a4+b4-(a+b)3。实现这一计算的函数调用语句为______。m=fun(a,4)+fun(b,4)-fun(a+b,3); 2、以下程序的功能是调用函数fun计算:m=1-2+3-4+…+9-10,并输出结果。请填空。 int fun(int n){int m=0,f=1,i; for(i=1;i<=n;i++){m+=i*f;f=______;}return m;} f=(-1)*f main(){printf(“%d\\n”,_____);} fun(10) 3、补全程序,使程序能正确运行。 ____(double,double); double max main(){double x,y;scanf(“%lf”%lf,&x,&y);printf(“%lf\\n”,max(x,y);) double max(double a,bouble b){return(a>b?a:b);} 4、有以下程序: int f(int x,int y){return(y-x)*x;} main(){int a=3,b=4,c=5,d;d=f(f(3,4),f(3,5));printf(“%d\\n”,d);} 程序运行后的输出结果是_____。9 八、指针 选择题 1、设有定义:int n=0,*p=&n,**q=&p;下列选项中,正确的赋值语句是_D_。 A)p=1 B)*q=2 C)q=p D)*p=5 2、有以下程序: void fun(char *a,char *b){a=b;(*a)++;} main(){char c1=’A’,c2=’a’,*p1,*p2;p1=&c1;p2=&c2;fun(p1,p2);printf(“%c%c\\n”,c1,c2);} 程序运行后的输出结果是_A__。 A)Ab B)aa C)Aa D)Bb 3、有以下程序: #include main(){printf(“%d\\n”,NULL);} 程序运行后的输出结果是__A_。 A)0 B)1 C)-1 D)NULL没定义,出错 4、若程序中已包含头文件stdio.h,以下选项中,正确运用指针变量的程序段是_D__。 A)int *i=NULL; B)float *f=NULL; scanf(“%d”,i); *f=10.5; 5、已经定义以下函数: fun(int *p){return *p;} C)char t=’m’,*c=&t; *c=&t; D)long *L; L=’\\0’; 该函数的返回值是_C__。 A)不确定值 B)形参p中存放的值 C)形参p所指存储单元中的值 D)形参p的地址值 6、有以下程序段: main(){int a=5,*b,**c;c=&b;b=&a;…} 程序在执行了c=&b;b=&a;语句后,表达式**c的值是__C_。 A)变量a的地址 B)变量b中的值 C)变量a中的值 D)变量b的地址 7、已经定义以下函数: fun(char *p2,char *p1){while((*p2=*p1)!=’\\0’){p1++;p2++;}} 函数的功能是_A___。 A)将p1所指字符串复制到p2所指内存空间 B)将p1所指字符串的地址赋给指针p2 C)对p1和p2两个指针所指字符进行比较 D)检查p1和p2两个指针所指字符串中是否有’\\0’ 8、有以下程序段: #include int a=4,b=3,*p,*q,*w;p=&a;q=&b;w=q;q=NULL; 则以下选项中错误的语句是__A__。 A)*q=0 B)w=p C)*p=a D)*p=*w 9、有以下程序: int *f(int *x,int *y){if(*x<*y) return x;else return y;} main(){int a=7,b=8,*p,*q,*r;p=&a;q=&b;r=f(p,q);printf(“%d,%d,%d\\n”,*p,*q,*r);} 程序运行后的输出结果是_B___。 A)7,8,8 B)7,8,7 C)8,7,7 D)8,7,8 填空题 1、下面的sstrcpy()函数实现字符串复制,即将t所指字符串复制到s所指内存空间中,形成一个新字符串s。请补全程序。 void sstrcpy(char *s,char *t){while(*s++=____);} *t++ main(){char str1[100],str2[]=”abcdefgh”;sstrycpy(str1,str2);printf(“%s\\n”,str1);} 2、以下程序的运行结果是___。 efgh #include char *ss(char *s){return s+strlen(s)/2;} main(){char *p,*str=”abcdefgh”;p=ss(str);printf(“%s\\n”,p);} 补充 1、对于基类型相同的2个指针变量,不能进行的运算是_C__。 A)< B)= C)+ D)- 2、有如下程序段 int *p,a=10,b=1;p=&a;a=*p+b;执行该程序段后,a的值为_B__。 A)12 B)11 C)10 3、以下正确的程序段是_C__。 A)int *p; B)int *s,k; scanf(“%d”,p); *s=100; D)编译出错 C)int *s,k; char *p,c; s=&k;p=&c;*p=’a’; D)int *s,k; char *p,c;s=&k; p=&c;s=p;*s=1; 4、若有以下程序段:double r=99,*p=&r;*p=r;则以下正确的叙述是_D_。 A)以上两处的*p含义相同,都是给指针变量p赋值 B)在double r=99,*p=&r;中,把r的地址赋给了p所指的存储单元 C)语句*p=r;把变量r的值赋给指针p D)语句*p=r;将变量r的值赋给指针p所指的存储单元 5、有以下函数:char *fun(char *p){return p;}该函数的返回值是_B_。 A)无确切的值 B)形参p中存放的地址值 C)一个临时存储单元的地址 D)形参p自身的地址值 6、下列程序执行后的输出结果是_B__。 int b=2; int func(int *a){b+=*a;return(b);} main(){int a=2,res=2;res+=func(&a);printf(“%d\\n”,res);} A)4 B)6 C)8 D)10 7、下列程序的输出结果是_A__。 void func(int *a,int b[]){b[0]=*a+6;} main(){int a,b[5];a=0;b[0]=3;func(&a,b);printf(“%d\\n”,b[0]);} A)6 B)7 C)8 D)9 8、若有以下调用语句,则不正确的fun函数首部是_D__。 main(){int a[50],n; …… fun(n,&a[9]); ……} A)void fun(int m,int x[]) C)void fun(int p,in *s) B)void fun(int s,int h[41]) D)void fun(int n,int a) 数组 选择题 1、有以下程序:int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;b=p[5]; b中的值是_D__。 A)5 B)6 C)8 D)9 2、有以下程序: void swap1(int c[]){int t,t=c[0];c[0]=c[1];c[1]=t;} void swap2(int c0,intc1){int t,t=c0;c0=c1;c1=t;} main(){int a[2]={3,5},b[2]={3,5};swap1(a);swap2(b[0],b[1]); printf(“%d,%d,%d,%d\\n”,a[0],a[1],b[0],b[1]);} 其输出结果是_B__。 A)5,3,5,3 B)5,3,3,5 C)3,5,3,5 D)3,5,5,3 3、有以下程序: void sum(int *a){a[0]=a[1];} main(){int aa[10]=(1,2,3,4,5,6,7,8,9,10),i; for(i=2;i>=0;i--) sum(&aa[i]); printf(“%d\\n”,aa[0]);} 程序运行后的输出结果是__A__。 A)4 B)3 C)2 D)1 4、有以下程序: int f(int b[][4]){ int i,j,s=0;for(j=0;j<4;j++){i=j;if(i>2)i=3-j;s+=bb[i][j];}return s;} main(){int a[4][4]={{1,2,3,4},{0,2,4,6},{3,6,9,12},{3,2,1,0}};printf(“%d\\n”,f(a);) 程序运行后的输出结果是_D__。 A)22 B)11 C)18 D)16 5、有以下程序: void sort(int a[],int n) {int i,j,t; for(i=0;i sort(aa);for(i=0;i<10;i++)printf(“%d”,aa[i]);printf(“\\n”);} 其输出结果是_C__。 A)1,2,3,4,5,6,7,8,9,10 B)10,9,8,7,6,5,4,3,2,1 C)9,2,7,4,5,6,3,8,1,10 D)1,10,3,8,5,6,7,4,9,2 6、以下不能正确定义二维数组的选项是_D__。 A)int a[2][2]={{1},{2}} B)int a[][2]={1,2,3,4} C)int a[2][2]={{1},2,3} D)int a[2][]={{1,2},{3,4}} 7、若有定义:int *p[3];,则以下叙述中正确是_元素_B_。 A)定义一个基类型为int的指针变量p,该变量具有三个指针 B)定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针 C)定义了一个名*p的整型数组,该数组含有三个int类型元素 D)定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型 8、有以下程序: main(){int m[][3]={1,4,7,2,5,8,3,6,9};int i,j,k=2;for(i=0;i<3;i++)printf(“%d”,m[k][i]);} 程序运行后的输出结果是_C__。 A)456 B)258 C)369 D)789 A) B) C) D) A) B) C) D)