江西理工大学C复习参考题(结课考试)

《C语言程序设计》复习参考资料一. 选择题1.以下关于运算符优先顺序的描述中正确的答案是〔 〕 A.关系运算符< 算术运算符< 赋值运算符< 逻辑与运算符 B.逻辑 运算符< 关系运算符< 算术运算符< 赋值运算符 C.赋值运算符< 逻辑与运算符< 关系运算符< 算术运算符 D.算术运算符< 关系运算符< 赋值运算符< 逻辑与运算符2.如下选项中合法的变量名是_________ A.#define B.intC. a594_3 D. abs(x)3.以下正确的描述是〔 〕 A. break语句的作用是完毕整个循环的执行B.在C程序中,注释说明只能位于一条语句的后面C.在循环体使用break语句或continue语句的作用一样 D.从多层循环嵌套中退出时, 只能使用goto语句4.以下说确的是〔 〕 A.#define 和 printf 都是 C 语句 B.#define 是C语句,而printf不是 C.假如程序中要调用数学函数,必须在文件开头输入语句 #include “〞 D. #define 和 printf 都不是 C 语句5.下面的函数定义正确的答案是______________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;}6.执行下面语句后的输出为( ) int i=-1; if (i<=0) printf(“****\n〞) else printf(“%%%%\n〞) A). **** B). %%%% C). %%%%c D). 有语法错误,不能正确执行7.以下程序的输出结果是( ) void main( ) {int k=17; printf("%d, %o, %x \n ", k, k, k ); }A). 17, 21, 11 B). 17, 17, 17 C). 17, 0x11, 021 D). 17, 21, 18.以下不正确的表示是 〔 〕A〕#define是宏定义命令 B〕宏定义只是做简单的置换,不做正确性检查 C〕宏定义是C语句,必须在行末加分号 D〕printf是C语句,但#define不是。
9.一个C语言程序是由〔 〕 A) 一个主程序和假如干子程序组成 B)假如干子程序组成C) 假如干过程组成 D) 函数组成10.C语言规定,在一个源程序中,main()函数的位置〔 〕意 D.必须在系统调用的库函数的后面 11.以下对二维数组a的正确说明是〔 〕 A) int a[3][]; B) floatf a(3,4); C) char a[1][3]; D) float a(3)(5); 12.假如有说明: int a[3][2]={10};如此下面正确的表示是〔 〕 A〕只有元素a[0][0]可得到初值10 B〕此说明语句不正确: C〕数组a中各元素都可得到初值,但其值不一定为0 D〕数组a中每个元素均可得到初值10 13.以下表示不正确的答案是〔 〕 A) 一个C源程序可由一个或多个函数组成 B) 一个C源程序必须包含一个main函数 C) C程序的根本组成单位是语句D) 只能在循环体和switch语句体使用break语句14.为了防止在嵌套的条件语句If一else中产生二义性,C语言规定else子句总是与〔 〕配对。
A)缩排位置一样的if B)其之前最近的未配对的if C) 之后最近的if D)同一行上的if15. 能正确表示a和b同时为正或同时为负的逻辑表达式是( )A)(a>=0||b>=0)&&(a<0||b<0)B)(a>=0&&b>=0)||(a<0&&b<0) C)(a+b>0)&&(a+b<=0) D) (a-b>0)&&(a-b<=0)16.x =5,ch='A',y=0,如此表达式(x > = y && ch<'a'&&!y) 的值是 〔 〕A)0 B)语法错C)1 D)"假" 17. 如下关于单目运算符++、--的表示中正确的答案是〔 〕A) 它们的运算对象可以是任何变量和常量B) 它们的运算对象可以是char型变量和int型变量,但不能是float型变量C) 它们的运算对象可以是int型变量,但不能是double型变量和float型变量D) 它们的运算对象可以是char型变量、int型变量和float型变量18.下面的程序( ) void main(){ int x=3;do { printf(“%d\n〞,x-=2); } while(!(--x));} A). 输出的是1 B). 输出的是1和-2 C). 输出的是3和0 D). 是死循环19.如下程序:void main( ){ int a=6; printf(“%d\n〞,(a+=3,2*a)); }执行后,输出结果是( )A) 9B) 6C) 2D) 1820.假如有以下说明和语句,请选出哪个是对C数组元素的正确引用( ) int c[4][5], (*cp)[5]; cp=c; A). cp+1 B). *(cp+3) C). *(cp+1)+3 D). *(*cp+2)21.下面程序的输出是( ) main() { int x=023;printf("%d\n", --x); } A). 17 B). 18 C). 23 D). 2422.执行如下程序的结果是( )main() { float x=1,y; y=++x*++x; printf(“%f\n〞,y); } A). 9.000000 B). 6.000000 C). 1.000000 D). 程序有错误23.下面程序的输出是( )main() { int a[10]={1,2,3,4,5,6,7,8,9,10}, *p=a;printf("%d\n", *(p+2) ); }A). 3 B). 4 C). 1 D). 224.执行下面程序中的输出语句后,a的值是( ) main(){ int a; printf("%d\n", (a=3*5,a*4,a+5) ); }A). 65 B). 20 C). 15 D). 1025.下面程序的输出是( )main() { int a=-1, b=4, k;k=(a++<=0)&&(!(b--<=0)); printf("%d %d %d \n", k, a, b ); } A). 0 0 3 B). 0 1 2 C). 1 0 3 D). 1 1 226.设有如下的程序段: char str[]="Hello"; char *ptr; ptr=str; 执行完上面的程序段后,*(ptr+5)的值为( )A). '0' B). '\0' C). 不确定的值 D). '0'的地址27.在宏定义中,用宏名PI代替一个( ) A).单精度数 B).双精度数C).常量 D).字符串28.假如i是整型变量,pb是根本型为整型的指针变量,如此正确的赋值表达式是〔 〕 A). pb=&i B). pb=i C). *pb=&i D). *pb=*i29. 有以下程序段int m=0,n=0; char c=’d’; scanf("%d%c%d",&m,&c,&n); printf("%d,%c,%d\n",m,c,n);假如从键盘上输入:6D6<回车>,如此输出结果是〔 〕A) 0,d,6 B) 6,d,6 C) 6,D,6 D) 6,D,030.printf〔〕函数中用到格式符%-7s ,其中数字7表示输出的字符串占用7列。
如果字符串长度小于7,如此输出按方式 〔 〕A)从左起输出该字串,右补空格 B)按原字符长从左向右全部输出 C)右对齐输出该字串,左补空格 D)输出错误信息31.以下能正确地定义整型变量a,b和c 并为其赋初值3的语句是〔 〕 A) int a=3,b=3, c= 3; B) int a,b, c= 3; C) a= 3,b=3,c=3; D) a= b= c=3; 32. 以下程序的输出结果是( )void main( ) {int x=6,y=6,i; for(i=2;x>4;y=++i)printf("%d,%d ",x--,y);}A) 5,5 5,3 B) 6,6 2,3 C) 6,5 5,2 D) 6,6 5,333.以下程序的输出结果是( )void main( ) {int w=4; int fun(int k); fun(w);printf("\n"); }fun(int k) {if(k>0) fun(k-1); printf("%d ",k); } A) 4 3 2 1 B) 0 1 2 3 4 C) 1 23 4 D) 4 3 2 1 034.下面程序的输出是( )main() { int x=023;printf("%d\n", --x); }A). 17 B). 18 C). 23 D). 2435.以下程序的输出结果是( )main() { char ch[3][4]={ "123","456","78"},*p[3]; int i; for(i=0;i<3;i++) p[i]=ch[i]; for(i=0;i<3;i++) printf("%s",p[i]);} A). 123456780 B). 123 456 780 C). 12345678 D). 14736.下面程序的输出结果为( ) char *alpha[6]={"ABCD","EFGH","IJKL", "MNOP","QRST","UVWX"}; char **p;void main() {int i; p=alpha; for(i=0;i<4;i++) printf("%c",(*p)[i]); printf("\n"); } A). EIMC B). ABCD C). EFGH D). AEIM37.根据下面的定义,能打印出字母M的语句是( ) struct person {char name[9]; int age;}; struct person class[10]={ "John",17, "Paul",19,"Mary",18, "Adam",16 }A). printf("%c\n",class[3].name); B). printf("%c\n",class[3].name[1]);C). printf("%c\n",class[2].name[1]); D). printf("%c\n",class[2].name[0]);38. 有以下程序void main( ){ int p[7]={11,13,14,15,16,17,18},i=0,k=0; while(i<7&&p[i]%2){k=k+p[i]; i++;} printf("%d\n",k);}执行后输出结果是〔 〕A) 58 B) 56 C) 45D) 2439. 以下程序的输出结果是( )void main( ) { int i,x[3][3]={9,8,7,6,5,4,3,2,1},*p; p=&x[1][1]; for(i=0;i<6;i+=3) printf("%d ",p[i]); }A) 5 2 B) 5 1 C) 5 3 D) 9 740.以下程序的输出结果是( ) # include A) (x>=1) && (x<=10) &&(x> =50) && (x<=60) B) (x>=1) || (x<=10) || (x>=50) || (x<=50) C) (x>=1) && (x<=10)|| (x>= 50) && (x<=60) D) (x > =1)||(x< =10) && (x> =50)||(x<=60) 61.以下程序的输出结果是( ) # include A.*((*q+1)[2] B. *(*(q+5)) C.*(*(q+1)+2) D.(*q+1)+268.设int x[]={1,3,5,7,9,11,13},*p=x;如此不能正确引用数组元素的表达式是〔 〕A.*(p--) B. *(--p) C.*(p++) D.*(++p)69. 有以下函数char *fun(char *p){ return p;}该函数的返回值是〔 〕A. 无确切的值 B. 形参p中存放的地址值C. 形参p自身的地址值 D. 编译有错70. 在下面的引用定义中,正确的答案是〔 〕A. int x,&y; y=x;B.int x,&y=x ; C. int &y=x,x;D.float z; int x,y=&z;71.执行下面程序段后,a的值为〔 〕int a,b;for(b=1,a=1;b<=20;b++){ if(a>=10) break; if (a%2==1) { a+=5; continue;} a-=3; }A. 2 B. 6 C. 10 D. 872. 执行如下程序段后,变量i的值为〔 〕。 define MA(x,y) ((x)*(y))int i=5;i=MA(i,i+1)-7;A. 30B.23 C. 19D.173.假如有以下的说明: struct person {char name[20]; int age; char sex; }a={"li ning",20,'m'},*p=&a; 如此对字符串li ning的引用方式不可以是( ) A. (*p).name C. a.name D. p->name74. 假如程序中定义了以下函数 double myadd(double a,double b) { return (a+b) ;}并将其放在调用语句之后,如此在调用之前应该对该函数进展说明,以下选项中错误的说明是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);75.假如有以下的说明和语句,如此在执行for语句后,*(*(pt+1)+2)表示的数组元素是( ) int t[3][3],*pt[3],k; for(k=0;k<3;k++) pt[k]=&t[k][0];A. t[2][0] B. t[2][2] C. t[1][2] D. t[2][1]76.在C语言中,080是〔 〕A.八进制数 B.十进制数C.十六进制数 D.非法数77. 整型变量i定义后赋初值的结果是〔 〕。 int i=2.8*6 ;A.12 B.16C.17 D.1878.for(i=0,x=0; !x&&i<=3;i++)循环的次数为〔 〕A.4 B.5 C.1D. 无限循环79.假如有如下程序段:{ int a=2,b=-1,c=2;if (a0; D. i++ ;82.以下不能对二维数组a 进展正确初始化的语句是( )A.int a[2][3]={0};B.int a[ ][3]={{1,2},{0}};C.int a[2][3]={{1,2},{3,4},{5,6}};D.int a[ ][3]={1,2,3,4,5,6};83.以下合法的if语句是〔 〕。 A. if(a=b) c++; C. if(a=>b) c++; D. if(a==b) c++;84.字符串常量“I love china〞在存中存在需要〔 〕字节注:每个单词之间有一个空格A.10 B.12C. 13 D. 14二. 填空题1.C语言源程序的扩展名为.c,可执行文件的扩展名为_______________exe2.数组 int a[3][5];共定义了______个数组元素153.C程序由函数构成,C程序总是从_______开始执行.main()4. C语言中,用__________ 关键字来包含如之类的头文件 include5.函数的返回值是通过函数中的________________语句来获得的return6.至少执行一次循环体的循环语句是do—while 语句7.对于不带返回值的函数,应当用关键字______________定义函数void8.多分支结构的程序,通常选用_________语句来实现 switch9.假如char ch[]="25yi6"有以下语句,如此编译后分配给数组ch的存占用的字节数为________。 610.下面运算符 < , ++ = 按照优先级从高到低排列顺序为___ < = ,11.假如char str[8]={“tony〞};int k=strlen(str);如此k的值为____________412.______________是声明结构体类型的关键字struct13.int a[3][4]={{7,5},{5,8},{0,6,9,3}};如此编译后a[1][2]= __________014.静态局部变量应该用关键字____________来进展声明static15.用数组名作为函数调用的实参,如此传递给形参的是_____数组的首地址16.假如有说明:int a[][3]={1,2,3,4,5,6,7};如此a数组第一维的大小是________317.C语言提供三种逻辑运算符,按优先级上下它们分别是 > && > ||18.getchar() 函数的功能是从标准输入设备读取下一个字符19.写出下面表达式的值 6*4/7+8%3_______ 5x=5 ; y=2; (x++)+y _________ 7 8-4>=5+3________06>4-2 ? 4%2: 3 _______ 0 x=2,y=2; x||!y______1x=3 ; x+=x-=2 _______ 220.下面invert函数的功能是将一个字符串str的容颠倒过来,请填空。 include 三. 程序阅读题1.以下程序的运行结果是 _________________1#include