1、C语言基础习题及答案 C语言基础习题及答案 C语言基础习题及答案 一、选择题 1.设a的值为15,n的值为5,则进行a%=(n%=2)运算后,a的值为。 2.设有类型说明 unsigned int a65535; , 按%d格式输出a的值,其结果是。B.-1D.-327673.下列运算符中优先级最高的是。 A.?:B.&C.+D.!= 4. 以下程序输出的结果是。 main( ) int a= -1,b=4,k; k=!(+a 5.下面的程序执行后,变量a的值是。 #define SQR(x) x*x main() int a=10,k=2,m=1;a/=SQR(k+m)/SQR(k+m);p
2、rintf( 6设有int i;则表达式i=1,+i,+i|+i,i的值为 。 7设有int i;则表达式(i=1,i=10)?i+|+i:+i的值为 。 8.设有int a=10,11,12,*p=&a0;则执行完*p+;*p+=1;后a0,a1,a2的值依次是 。 ,11,12,12,12 ,12,12,11,12 9.设有int i, j, k; 则表达式i=1,j=2,k=3, i&j&k 的值为 ( A )。 10.设有说明int s2=0,1,*p=s; 则下列错误的C语句是 ( A )。 +=1; +=1; C.*p+; D.(*P)+; 1 11.以下叙述正确的是( D )。
3、A.可以把define和if定义为用户标识符 B.可以把if定义为用户标识符,但不能把define定义为用户标识符 和if都不能定义为用户标识符 D.可以把define定义为用户标识符,但不能把if定义为用户标识符 12. 以下程序的输出结果是。void prtv(int *x) printf( main() int a=25; prtv(&a); D.以上均不对 13. 设有以下说明语句struct ex int x; float y;char z; example; 则下面的叙述中不正确的是。 ex是结构体类型 ,y,z都是结构体成员名 是结构体类型的关键字 是结构体类型名 14. 下列叙
4、述中正确的是。 语言的函数可以嵌套定义 语言的子程序有过程和函数两种 语言编译时不检查语法 语言中,根据函数能否被其它源文件调用,被区分为内部函数和外部函数 15. 若有说明:int i,j=7,*p=&i;则与i=j;等价的语句是。 =*p;=*p; =&j;D.*p=*&j; 16. 以下程序的输出结果是。 main() char st20= printf( 2 17. 不合法的main函数命令行参数表示形式是。 (int argv,char *arge) (int arc,char *arv) (int argc,char *argv) (int a,char *c) 18. 若有说明语
5、句:int a,b,c,*d=&c;则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是。 ( 19. 以下程序段的输出结果是( A )。 char s= printf( 20. 以下程序的输出结果是。 main() int x10,y10,i;for(i0;x8 ;y+i)printf( 1 9 29 9 08 7 610 9 1 21. 设a和b均为double型变量,且a=、b=,则表达式(int)a+b/b的值是。 22. 以下定义语句中正确的是。 A. int a=10,*b=&a; B. float a=b=; C. char a=Ab=B; D. float *a,b=&a;
6、 23. 有以下程序 main() char str10= printf( 3 程序运行后的输出结果是。 A. ing B. Bejing C. ngD. China 24. 下列关于单目运算符+、-的叙述中正确的是。 A.它们的运算对象可以是char型变量、int型变量和float型变量 B.它们的运算对象可以是char型变量和int型变量,但不能是float型变量 C.它们的运算对象可以是int型变量,但不能是double型变量和float型变量 D.它们的运算对象可以是任何变量和常量 25. 设a=5、b=6、c=7、d=8、m=2、n=2,执行(m=ab)&(n=cd) 后n的值为。
7、二、填空题 语言中静态变量和外部变量的初始化是在_编译_阶段完成的。 2.设a为整型变量,初值为12,执行赋值表达式a+=a-=a*a后,a的值是_-264_。 3.设a和x都为整型变量,执行赋值表达式x=(a=3,6*3)后,x值为_18_。 4.设整型变量a 的值为1,在16位微机中用16进制打印a的值是_ffff_。 5.在内存中供用户使用的存储空间可分为三个区:存储程序的程序区,存储数据的静态存储区和动态存储区。在静态存储区中存放的数据是_全局变量和_局部静态_变量。 语言提供的预处理功能主要有三种:宏定义,文件包含和条件编译。 条件编译命令有三种基本形式: #ifdef 标识符 #_
8、ifndef_标识符 #_if _表达式程序段1 程序段1程序段1#else#else#else程序段2 程序段2程序段2#endif#endif#endif 7.类型定义:int a10,*p; 执行赋值语句pa;之后,那么p+5是_ a5的地址_,*(p+5)是_ a5_。 ,第2空答a5的值也可) 三、判断题 4 1、若有说明int c;则while(c=getchar();是正确的C语句。 2、int i,*p=&i;是正确的C说明语句。 3、7&3+12的值是15。 4、while 1 i,j; 一定是错误的C说明。 5、for( ; ; )S中的语句S必执行无穷多次。 6、unsi
9、gned 和void 在C中都是保留的。 7、int If=0;会出现编译错误。 8、char str10; 是错误的说明语句。 9、构成C程序的基本单位是函数。 10、所有被调用的函数一定要在调用之前进行定义。 11、语句int *p; *p=0;存在着潜在的危险。 12、语句int *p; p=0;是错误的。 13、int *p3;定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针。 14、print可以作为变量名使用。 15、if (a=0) i=1; 是合法的C语句。 四、阅读程序题 1.【程序】 swap1(int x,int y) int w; w=x; x
10、=y; y=w; swap2(int *p1,int *p2) int *p; p=p1; p1=p2; p2=p; swap3(int *pa, int *pb) int p; p=*pa; *pa=*pb; *pb=p; main() int a,b; int *ptr1,*ptr2; a=5; b=7; ptr1=&a; ptr2=&b; swap1(*ptr1,*ptr2); printf( swap2(ptr1,ptr2); printf( printf( 5 swap3(ptr1,ptr2); printf( printf( 【运行结果】 data1=5 data2=7 data3
11、=5 data4=7 data5=5 data6=7 data7=7 data8=5 data9=7 data10=5 2.【程序】 int a3=1,2,3,4,5,6; main() int i,j,(*p)3; p=a; printf( printf( for (i=0; i printf( printf( 【运行结果】 1 2 3 4 5 6 1 2 3 4 5 6 3.【程序】 main() int i,n=0; for( i=2;i if(i%3) continue;n+; while(!i);n+; printf( 6 【运行结果】 n=4 4.以下程序运行后的输出结果是_。 【
12、程序】 main () char a= char *p1,*p2; int k; p1=a; p2=b; for(k=0;k if(*(p1+k)=*(p2+k) printf( 【运行结果】 gae 5. 【程序】 #include void main() int i,j,k,a=5,m66; i=1; k=(a+1)/2; for (j=1;j for (i=1;i for (j=1;j mik=j; if (j%a=0) i=(i%a)+1;continue; k=(k%a)+1; i-; if (i=0) i=a; 【运行结果】 17 241815 2357 1416 46 13 20
13、22 10 12 19 213 11 18 2529 7 C语言基础习题及答案 一、选择题 1.设a的值为15,n的值为5,则进行a%=(n%=2)运算后,a的值为。 2.设有类型说明 unsigned int a65535; , 按%d格式输出a的值,其结果是。B.-1D.-327673.下列运算符中优先级最高的是。 A.?:B.&C.+D.!= 4. 以下程序输出的结果是。 main( ) int a= -1,b=4,k; k=!(+a 5.下面的程序执行后,变量a的值是。 #define SQR(x) x*x main() int a=10,k=2,m=1;a/=SQR(k+m)/SQR
14、(k+m);printf( 6设有int i;则表达式i=1,+i,+i|+i,i的值为 。 7设有int i;则表达式(i=1,i=10)?i+|+i:+i的值为 。 8.设有int a=10,11,12,*p=&a0;则执行完*p+;*p+=1;后a0,a1,a2的值依次是 。 ,11,12,12,12 ,12,12,11,12 9.设有int i, j, k; 则表达式i=1,j=2,k=3, i&j&k 的值为 ( A )。 10.设有说明int s2=0,1,*p=s; 则下列错误的C语句是 ( A )。 +=1; +=1; C.*p+; D.(*P)+; 1 11.以下叙述正确的是
15、( D )。 A.可以把define和if定义为用户标识符 B.可以把if定义为用户标识符,但不能把define定义为用户标识符 和if都不能定义为用户标识符 D.可以把define定义为用户标识符,但不能把if定义为用户标识符 12. 以下程序的输出结果是。void prtv(int *x) printf( main() int a=25; prtv(&a); D.以上均不对 13. 设有以下说明语句struct ex int x; float y;char z; example; 则下面的叙述中不正确的是。 ex是结构体类型 ,y,z都是结构体成员名 是结构体类型的关键字 是结构体类型名
16、14. 下列叙述中正确的是。 语言的函数可以嵌套定义 语言的子程序有过程和函数两种 语言编译时不检查语法 语言中,根据函数能否被其它源文件调用,被区分为内部函数和外部函数 15. 若有说明:int i,j=7,*p=&i;则与i=j;等价的语句是。 =*p;=*p; =&j;D.*p=*&j; 16. 以下程序的输出结果是。 main() char st20= printf( 2 17. 不合法的main函数命令行参数表示形式是。 (int argv,char *arge) (int arc,char *arv) (int argc,char *argv) (int a,char *c) 18
17、. 若有说明语句:int a,b,c,*d=&c;则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是。 ( 19. 以下程序段的输出结果是( A )。 char s= printf( 20. 以下程序的输出结果是。 main() int x10,y10,i;for(i0;x8 ;y+i)printf( 1 9 29 9 08 7 610 9 1 21. 设a和b均为double型变量,且a=、b=,则表达式(int)a+b/b的值是。 22. 以下定义语句中正确的是。 A. int a=10,*b=&a; B. float a=b=; C. char a=Ab=B; D. float *
18、a,b=&a; 23. 有以下程序 main() char str10= printf( 3 程序运行后的输出结果是。 A. ing B. Bejing C. ngD. China 24. 下列关于单目运算符+、-的叙述中正确的是。 A.它们的运算对象可以是char型变量、int型变量和float型变量 B.它们的运算对象可以是char型变量和int型变量,但不能是float型变量 C.它们的运算对象可以是int型变量,但不能是double型变量和float型变量 D.它们的运算对象可以是任何变量和常量 25. 设a=5、b=6、c=7、d=8、m=2、n=2,执行(m=ab)&(n=cd)
19、后n的值为。 二、填空题 语言中静态变量和外部变量的初始化是在_编译_阶段完成的。 2.设a为整型变量,初值为12,执行赋值表达式a+=a-=a*a后,a的值是_-264_。 3.设a和x都为整型变量,执行赋值表达式x=(a=3,6*3)后,x值为_18_。 4.设整型变量a 的值为1,在16位微机中用16进制打印a的值是_ffff_。 5.在内存中供用户使用的存储空间可分为三个区:存储程序的程序区,存储数据的静态存储区和动态存储区。在静态存储区中存放的数据是_全局变量和_局部静态_变量。 语言提供的预处理功能主要有三种:宏定义,文件包含和条件编译。 条件编译命令有三种基本形式: #ifdef
20、 标识符 #_ifndef_标识符 #_if _表达式程序段1 程序段1程序段1#else#else#else程序段2 程序段2程序段2#endif#endif#endif 7.类型定义:int a10,*p; 执行赋值语句pa;之后,那么p+5是_ a5的地址_,*(p+5)是_ a5_。 ,第2空答a5的值也可) 三、判断题 4 1、若有说明int c;则while(c=getchar();是正确的C语句。 2、int i,*p=&i;是正确的C说明语句。 3、7&3+12的值是15。 4、while 1 i,j; 一定是错误的C说明。 5、for( ; ; )S中的语句S必执行无穷多次。
21、 6、unsigned 和void 在C中都是保留的。 7、int If=0;会出现编译错误。 8、char str10; 是错误的说明语句。 9、构成C程序的基本单位是函数。 10、所有被调用的函数一定要在调用之前进行定义。 11、语句int *p; *p=0;存在着潜在的危险。 12、语句int *p; p=0;是错误的。 13、int *p3;定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针。 14、print可以作为变量名使用。 15、if (a=0) i=1; 是合法的C语句。 四、阅读程序题 1.【程序】 swap1(int x,int y) int w; w=x; x=y; y=w; swap2(int *p1,int *p2) int *p; p=p1; p1=p2; p2=p; swap3(int *pa, int *pb) int p; p=*pa; *pa=*pb; *pb=p; main() int a,b; int *ptr1,*ptr2; a=5; b=7; ptr1=&a; ptr2=&b; swap1(*ptr1,*ptr2); printf( swap2(ptr1,ptr2); printf( printf( 5
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1