习题一1. 以下常量中正确的是。
A. ’abc’B. ’\x123’C. 3.145E-1.2D.”a”2. 设有“int a;”,以下不能正确表达数学关系10<a<15的表达式是。
A. 10<a<15B. a==11||a==12||a==13||a==14C. a>10&&a<15D. !(a<=10)&&!(a>=15)3. 以下程序段的输出结果是。
int a=0,b=4,k=2;k=a+1>0||(++a<0)&&(!(b--<=0));printf(”%d,%d,%d”,k,a,b);A. 1,1,3B. 1,1,4C. 1,0,3D. 1,0,44.若有“int a=5; a+=a-=-a*a;”,则a的值是。
5. 以下所列语句中,合法的语句是。
A. a=1,b=2B. ++a;C. a=a+1=5;D. y=int(a);6. 以下所列字符常量中,不合法的是。
A. ’\0xff’B. ’\65’C. ’$’D.’\x1a’7. 设有定义“float y=3.45678; int x;”,则以下表达式中能实现将y中数值保留小数点后2位,第3位四舍五入的表达式是。
A. y=(y*100+0.5)/100.0B. x=y*100+0.5,y=x/100.0C. y=y*100+0.5/100.0D. y=(y/100+0.5)*100.08. 以下程序段输出结果是。
int a=10,b=11,c=12,s;s=a++<=10&&b--<=2&&c++;printf(”%d,%d,%d,%d”,s,a,b,c);A. 0,11,10,13B. 1,11,10,13C. 0,11,10,12D. 1,11,10,129. 设有语句“int a=2,b=3,c=2; a+=b*=(++b-c++);”,变量b的值是。
习题二1. 以下关于if语句的错误描述是。
A. 条件表达式可以是任意的表达式B. 条件表达式只能是关系表达式或逻辑表达式C. 条件表达式的括号不可以省略D. 与else配对的if语句是其之前最近的未配对的if语句2. 以下叙述中不正确的是。
A. 一个变量的作用域完全取决于变量说明语句的位置B. 外部变量可以在函数以外的任何位置定义C. 内部变量的生存期只限于本次函数调用,无法将内部变量的值保存至函数的下一次调用D. 用static说明一个外部变量是为了限制其他编译单位的引用3. 以下程序的输出结果是。
main(){ extern int x;printf(”%d”,x+=2); fun1(2);}int x=1;fun1(int x){ printf(”%d”,x++); fun2(2); }fun2(void){ printf(”%d”,x);int x=5; printf(”%d”,x);}4. 以下不致造成死循环的语句是。
A. for(y=0,x=1;x>++y;x=i++)i=x;B. for(;;x+=i);C. while(x=8)x--;D. for(i=10,sum=0;sum<=i;)sum=--i;5. 以下程序输出结果是。
main(){ printf(”%d”,fun(5)); }fun(int n){ if(n==1) return 1;return n-fun(n-1);}6. [程序]main(){ int j,k,s,m;for(k=1;k<10;k++){ s=1; m=k+2;for(j=k;j<m;j++,k++) s+=j;}printf(”s=%d,k=%d”,s,k);}程序输出结果s= ,k= 。
7. 若有宏定义:#define N 2#define Y(n) ((N+1)*n)则执行语句“z=2*(N+Y(N+2));”后,z的值是。
8. 以下程序输出结果是。
#define T(x,y,z) x*y*z/4main(){ int a=1,b=3,c=5;printf(”%d”,T(b+a,a*++b,a+b+c));}习题三1. 若有“int a[][4]={1,2,3,4,5,6,7,8,9,10},*p=*(a+1);”,则值为9的表达式是。
A. p+=3,*p++B. p+=4,*(p++)C. p+=4,*++pD. p+=4,++*p2. 设有以下函数定义,则返回的函数值是。
main(){int x,*y; y=fun(&x); …}int *fun(int *a){int *t; *a=99; t=a; return t;}A. 无确切的值B. 形参a的地址C. 主函数中变量x的地址D. fun函数中变量t的地址3.[程序]main(){ int s,p[9]={1,2,3,4,5,6,7,8,9};printf(”\n%d”,add(p,5));}add(int *p,int n){ if(n==1) return *p;else return *p+add(p+1,n-1);}程序输出结果是。
4. [程序]int *swap(int *a, int *b){ int *p;p=a; a=b; b=p;return a;}main(){ int x=3,y=4,z=5;swap(swap(&x,&y),&z);printf(”%d,%d,%d”,x,y,z);}程序输出结果是。
5. [程序]fun(int n,int *s){ int f1,f2;if(n==1||n==2) *s=1;else{ fun(n-1,&f1); fun(n-2,&f2);*s=2*f1+f2+1; printf(”\n%d,%d”,f1,f2);}}main(){ int x;fun(4,&x); printf(”\nx=%d”,x);}程序运行时输出的第一行是,第二行是,最后一行是。
6. 如有以下定义int y[4][4]={1,2,3,4,5,6,7,8,9,10},*py1=y[1],(*py2)[4]=y;则不能正确引用值为7的数组元素的表达式是。
A. *(y[1]+2)B. *(y+1)+2C. py1[2]D. py2[1][2]7. [程序]main(){ int i,p[3][3]={1,2,3,4,5,6,7,8,9},*p1[3],(*p2)[3];for(i=0;i<3;i++) p1[i]=p[i];p2=p;for(i=1;i<3;i++)printf(”\n%d,%d”,*(*(p1+i)+1)+1,*(*++p2+1)+1);}程序运行时输出的第一行是,第二行是。
8. [程序]main(){ int i,j,a[3][3]={1,1},*p1,*p2,*p3;p1=a[0]; p2=a[0]+1; p3=a[0]+2;for(i=2;i<9;i++)func(p1++,p2++,p3++);for(i=0;i<3;i++)for(j=0;j<3;j++){ printf(”%d,”,a[i][j]); printf(”\n”); }}func(int *q1,int *q2,int *q3){ *q3=*q1+*q2; }程序运行时输出的第一行是,第二行是,第三行是。
9. [程序]main(){ int i,p[9]={1,2,3,4,5,6,7,8,9},*p1[3],**p2;for(i=0;i<3;i++) p1[i]=&p[6-3*i];p2=p1+2;for(i=1;i<3;i++)printf(”%d,%d\n”,*(++p1[i]+2)+1,*(*p2--+1)+2);}程序运行时输出的第一行是,第二行是。
10.[程序]fun(int *s,int n1,int n2){ int t;while(n1<n2){ t=*(s+n1);*(s+n1)=*(s+n2);*(s+n2)=t;n1++; n2--;}}main(){ int a[10]={1,2,3,4,5,6,7,8,9,0},i,*p=a;fun(p,0,3); fun(p+3,1,6);for(i=0;i<10;i++){ if(i%5==0) printf(”\n”);printf(”%d”,a[i]);}}程序输出的第一行是,第二行是。
习题四1. 设有基类型相同的两个指针变量,则不能对它们进行运算。
A. +B. -C. ++D. --2. 语句能正确完成赋字符串的功能。
A. char s[4];s[0]=”string”;B. char *s;gets(s);C. char *s[]=”string”;D. char *s;strcpy(s,”string”);3.以下程序的输出结果是。
enum week{SUN=7,MON=1,WED,TUS,THS,FRI,SAT};main(){ printf(”%d”,hour(FRI,SUN));}hour(int x,int y){ if(y>x) return 24*(y-x);else return –1;}4. [程序]char *fun(char *s){ int i,j;for(i=j=0;s[i]!=’\0’;i++)if(s[i]!=’c’) s[j++]=s[i];s[j]=’\0’; return s;}main(){ printf(”%s”,fun(”chance”)); }程序输出结果是。
5. 以下说法中正确的是。
A. 一个结构中只能包含一种数据类型B. 不同结构中的成员不能有相同的成员名C. 两个结构变量不可以进行比较D. 关键字typedef用于定义新的数据类型6. 下列程序段执行后变量j的值是。
int j;char *s=”x\045\””;for(j=0;*s++;j++);A. 7B. 3C. 4D. 57. 设有以下说明和语句,则值为210的表达式是。
struct s{ int a; int *b; };int x0[]={110,120},x1[]={210,220};struct s x[]={{100},{200}},*p=x;x[0].b=x0; x[1].b=x1;A. *p->bB. (++p)->aC. *(p++)->bD. *(++p)->b8. 设有“char s[]=”Program”,*p=s;”,则以下叙述中正确的是。