1、 . ?C语言程序设计?复习参考资料 一. 选择题 1.以下关于运算符优先顺序的描述中正确的选项是〔 C 〕。 A.关系运算符< 算术运算符< 赋值运算符< 逻辑与运算符 B.逻辑 运算符< 关系运算符< 算术运算符< 赋值运算符 C.赋值运算符< 逻辑与运算符< 关
2、系运算符< 算术运算符 D.算术运算符< 关系运算符< 赋值运算符< 逻辑与运算符 2.以下选项中合法的变量名是_____C____ A. #define B. int C. a594_3 D. abs(x) 3.以下正确的描述是〔 A 〕。 A. break语句的作用是完毕整个循环的执行 B.在C程序中,注释说明只能位于一条语句的后面 C. 在循环体内使用break语句或continue语句的作用一样 D. 从多层循环嵌套中退出时, 只能使用goto语句 4.以下说法正确的选项是〔 C〕 A.#d
3、efine 和 printf 都是 C 语句。 B.#define 是C语句,而printf不是。 C.假设程序中要调用数学函数,必须在文件开头输入语句 #include “math.h〞 D. #define 和 printf 都不是 C 语句。 5.下面的函数定义正确的选项是______D________ A〕 float fun (float x ; float y) {return x*y;} B〕 float fun (float x,y) {return x*y;} C〕 float fun (x,y)
4、{int x,y;return x*y;} D〕 int fun (int x, int y) {return x*y;} 6.执行下面语句后的输出为( D ) int i=-1; if (i<=0) printf(“****\n〞) else printf(“%%%%\n〞) A). **** B). %%%% C). %%%%c D). 有语法错误,不能正确执行 7.以下程序的输出结果是( A ) void main( ) {
5、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, 1 8.以下不正确的表达是 〔 C 〕 A〕#define是宏定义命令 B〕宏定义只是做简单的置换,不做正确性检查 C〕宏定义是C语句,必须在行末加分号 D〕printf是C语句,但#define不是。 9.一个C语言程序是由〔 D 〕
6、 A) 一个主程序和假设干子程序组成 B)假设干子程序组成 C) 假设干过程组成 D) 函数组成 10.C语言规定,在一个源程序中,main()函数的位置〔 C 〕。 A.必须在最开场 B.必须在最后 C.可以任意 D.必须在系统调用的库函数的后面 11.以下对二维数组a的正确说明是〔 C 〕。 A) int a[3][]; B) floatf a(3,4); C) char a[1][3]; D)
7、 float a(3)(5); 12.假设有说明: int a[3][2]={10};那么下面正确的表达是〔 D 〕 A〕只有元素a[0][0]可得到初值10 B〕此说明语句不正确:。 C〕数组a中各元素都可得到初值,但其值不一定为0。 D〕数组a中每个元素均可得到初值10 13.以下表达不正确的选项是〔 C 〕。 A) 一个C源程序可由一个或多个函数组成 B) 一个C源程序必须包含一个main函数 C) C程序的根本组成单位是语句 D) 只能在循环体内和switch语句体内使用break语句 14.为了防止在嵌套的条件语
8、句If一else中产生二义性,C语言规定else子句总是与〔 B 〕 配对。 A) 缩排位置一样的if B) 其之前最近的未配对的if C) 之后最近的if D) 同一行上的if 15. 能正确表示a和b同时为正或同时为负的逻辑表达式是( 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,那么表达式
9、x > = y && ch<'a'&&!y) 的值是 〔 C 〕 A) 0 B) 语法错 C) 1 D) "假" 17. 以下关于单目运算符++、--的表达中正确的选项是〔 B 〕 A) 它们的运算对象可以是任何变量和常量 B) 它们的运算对象可以是char型变量和int型变量,但不能是float型变量 C) 它们的运算对象可以是int型变量,但不能是double型变量和float型变量 D) 它们的运算对象可以是char型变量、int型变量和float型变量 18.下面的程序( B ) vo
10、id 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)); } 执行后,输出结果是( D ) A) 9 B) 6 C)
11、 2 D) 18 20.假设有以下说明和语句,请选出哪个是对C数组元素的正确引用( D ) int c[4][5], (*cp)[5]; cp=c; A). cp+1 B). *(cp+3) C). *(cp+1)+3 D). *(*cp+2) 21.下面程序的输出是( B ) main() { int x=023; printf("%d\n", --x); } A). 17 B). 18 C). 23 D). 24 22.执行以下程序的结果是( B )
12、 main() { float x=1,y; y=++x*++x; printf(“%f\n〞,y); } A). 9.000000 B). 6.000000 C). 1.000000 D). 程序有错误 23.下面程序的输出是( A ) 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
13、 D). 2 24.执行下面程序中的输出语句后,a的值是( B ) main() { int a; printf("%d\n", (a=3*5,a*4,a+5) ); } A). 65 B). 20 C). 15 D). 10 25.下面程序的输出是( C ) 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).
14、 0 1 2 C). 1 0 3 D). 1 1 2 26.设有如下的程序段: char str[]="Hello"; char *ptr; ptr=str; 执行完上面的程序段后,*(ptr+5)的值为( C ) A). '0' B). '\0' C). 不确定的值 D). '0'的地址 27.在宏定义# define PI 3.14159中,用宏名PI代替一个( C ) A).单精度数 B).双精度数 C).常量 D).字符串 28.假设i是整型变量,pb是根本型为整
15、型的指针变量,那么正确的赋值表达式是〔 A 〕 A). pb=&i B). pb=i C). *pb=&i D). *pb=*i 29. 有以下程序段 int m=0,n=0; char c=’d’; scanf("%d%c%d",&m,&c,&n); printf("%d,%c,%d\n",m,c,n); 假设从键盘上输入:6D6<回车>,那么输出结果是〔 C 〕 A) 0,d,6 B) 6,d,6 C) 6,D,6 D) 6,D,0 30.printf〔〕函数中用到格式符%-7s ,
16、其中数字7表示输出的字符串占用7列。如果字符串 长度小于7,那么输出按方式 〔 A 〕 A) 从左起输出该字串,右补空格 B) 按原字符长从左向右全部输出 C) 右对齐输出该字串,左补空格 D) 输出错误信息 31.以下能正确地定义整型变量a,b和c 并为其赋初值3的语句是〔 A 〕 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. 以下程序的输出结果是( D ) void main( ) {
17、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,3 33.以下程序的输出结果是( B ) 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
18、); } A) 4 3 2 1 B) 0 1 2 3 4 C) 1 2 3 4 D) 4 3 2 1 0 34.下面程序的输出是( B ) main() { int x=023; printf("%d\n", --x); } A). 17 B). 18 C). 23 D). 24 35.以下程序的输出结果是( C ) main() { char ch[3][4]={ "123","456","78"},*p[3]; int i; for(i=0;i<3;
19、i++) p[i]=ch[i]; for(i=0;i<3;i++) printf("%s",p[i]); } A). 123456780 B). 123 456 780 C). 12345678 D). 147 36.下面程序的输出结果为( B ) char *alpha[6]={"ABCD","EFGH","IJKL", "MNOP","QRST","UVWX"}; char **p; void main( ) {int i; p=alpha;
20、for(i=0;i<4;i++) printf("%c",(*p)[i]); printf("\n"); } A). EIMC B). ABCD C). EFGH D). AEIM 37.根据下面的定义,能打印出字母M的语句是( D ) struct person {char name[9]; int age;}; struct person class[10]={ "John",17, "Paul",19, "Mary",18, "Adam",16 }
21、 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++;} p
22、rintf("%d\n",k); } 执行后输出结果是〔 D 〕 A) 58 B) 56 C) 45 D) 24 39. 以下程序的输出结果是( A ) 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 7 40.以下程序的输出结果是(
23、A )
# include 24、 }
A). ihgfedcba B). abcdefghi
C). abcdedcba D).ihgfefghi
41.void main( )
{int i,a[]={5,6,9,11};
for (i=0;i<4;i++)
{ if (a[i]%2==0) continue;
printf("%d ",a[i]);
}
}
执行后输出结果是( C )
A) 编译出错 B 6 25、 C) 5 9 11 D) 5 6 9 11
42.以下对数组的定义正确的选项是( D )
A〕 int x(10); B〕 int x[5]={0,1,2,3,4,5};
C〕 int n=10; x[n]; D〕 int x[ ]= {0,1,2,3,4};
43. 以下表达中不正确的选项是( B )
A〕switch是多分支构造语句
B) continue语句的作用是使程序的执行流程跳出包含它的所有循环
C) break 语句只能用在循环体内和switch语句体内
D 26、〕 在循环体内使用break语句和continue语句的作用不一样
44.如下程序:
void main( )
{ int i=1,j=2,k=3;
if((j++|| k++)&&i++)
printf("%d,%d,%d\n",i,j,k);
}
执行后输出结果是( D )
A) 1,2,3 B) 2,2,4 C) 2,3,4 D) 2,3,3
45.以下表达中,不正确的选项是( C )
A〕 算法应该具有有穷性、确定性以及有效性等特点
B) 算法可以用传统流程图、 27、N-S流程图以及伪代码等形式来描述
C) 根本构造只有顺序、选择、循环3种构造
D〕 构造化程序设计的思想是自顶向下、逐步细化、模块化设计以及构造化编码
46.在C语言中,函数返回值的类型最终取决于( D )
A) 函数定义时形参的类型 B)return语句中表达式值的类型
C) 调用函数时主函数所传递的实参类型 D)函数定义时在函数首部所说明的函数类型
47. 以下程序的输出结果是( C )
void main()
{int i;
for(i='a';i<'i';i++,i++)
printf( 28、"%c",i-32);
printf("\n");
}
A) 编译不通过,无输出 B) aceg C) ACEG D) ABCDEFGI
48.假设有以下的说明:
struct person
{char name[20];
int age;
char sex;
}a={"li ning",20,'m'},*p=&a;
那么对字符串li ning的引用方式不可以是( B )
A). (*p).name B). p.name C). a.name D). p- 29、>name
49.下面的程序输出是( B )
int m=13;
int fun2(int x,int y)
{int m=3;
return(x*y-m);
}
main()
{int a=7,b=5;printf("%d\n",fun2(a,b)/m);}
A). 1 B). 2 C). 7 D). 10
50.下面的程序输出是( A )
main()
{ int x=100,a=10,b=20,ok1=5,ok2=0;
if(a 30、 if(b!=15)
if(!ok1)
x=1;
else
if(ok2) x=10;
x=-1;
printf("%d \n", x ); }
A). -1 B). 0 C). 1 D). 不确定的值
51.假设有以下定义:
int a[ ]={1,2,3,4,5,6,7,8,9,10}, *p=a;
那么值为3的表达式是〔 A 〕
A). p+=2,*(p++) B). p+=2,*++p
C). 31、 p+=3,*p++ D). p+=2, ++*p
52.下面程序的输出是( A )
int aa[3][3]={ {2},{4},{6} };
void main()
{int i, *p=&aa[0][0];
for(i=0;i<2;i++)
{ if(i==0)
aa[i][i+1]= *p+1;
else
++p;
printf("%d", *p ); }
}
A). 23 B). 26 C). 33 D). 36
32、
53.下面程序的输出是( D )
void prtv(int *x)
{ printf("%d\n", ++*x ); }
void main()
{ int a=25; prtv(&a); }
A. 23 B. 24 C. 25 D. 26
54. 以下程序的运行结果是( B )
void main( )
{char a[10]={'1','2','3','4','5','6','7','8','9','\0'};
char *p;
int i=8;
p=a+i;
p 33、rintf("%s\n",p-2);
}
A) 6 B) 789 C) '6' D) 678
55.执行以下3条语句之后,那么k的值是____C___
int x=4,y=7 ; x++ ;y+=2 ;k=y%x;
A〕 1 B〕 2 C〕4 D〕3
56.以下程序段
for ( k = 0, m = 4; m ; m - = 2 )
for( n = 1; n< 4 ; n++) k++;
34、 循环体语句〞 k ++;〞 执行的次数是______C________
A〕16 B〕12 C〕 6 D〕 8
57.在C语言中(以16位PC机为例),5种根本数据类型的存储空间长度的排列顺序为〔 C 〕
A) char=int<1ong int<=float 35、SCII码为十进制数65,且c2为字符型,那么执行语句c2='d'十'1'一'3';后,c2
中的值为〔 A 〕
A)b B) 68 C) 不确定的值 D) f
59.表达式18/4*sqrt(4.0)/8值的数据类型为: 〔 C 〕
A) int B)float C)double D)不确定
60.能正确表示"当x 的取值在[1,10]和[50,60]X围内为真,否那么为假"的表达式是〔 C 〕。
A) (x>=1) && (x<=10) &&(x> =50) && (x<=60)
36、 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.以下程序的输出结果是( D )
# include 37、str+3,p1+3);
printf("%s",str);
}
A). AfghdEFG B). Abfhd C). Afghd D). Afgd
62.以下程序的输出结果是( A )
main()
{int i;
for(i=1;i<6;i++)
{ if(i%2) {printf("#");continue;}
printf("*");
}
printf("\n");
}
A). #*#*# B). ##### C). ***** D). *#*#*
38、63.能表示10≤a≤15 的关系表达式是〔 C 〕
A.a>=10 or a<=15 B.a>=10||a<=15
C.a>=10&&a<=15 D.a>=10 & a<=15
64. 以下程序段中与语句k=a>b?(b>c?1:0):0;功能等价的是( A )
A. if((a>b) &&(b>c) ) k=1; B. if((a>b) ||(b>c) ) k=1
else k=0;
C. if(a<=b) k=0; D. if(a>B) k=1;
e 39、lse if(b<=c) k=1; else if(b>C) k=1;
else k=0;
65.设int x[]={2,4,6,8},y,*p=&x[1];那么执行语句 y=(*--p)++;后数组元素x[0]的值为
( B ).
A. 2 B. 3 C. 4 D. 5
66.在下面关于函数的描述中错误的选项是〔 D 〕
A.在一个源文件中,如果函数定义在先,调用在后,那么不必声明该函数
B.如果一个函数在一个源文件里定义, 40、而调用在另一个源文件中,那么必须在调用之前
声明该函数
C.函数的声明应使用函数原型
D.在一个源文件中,如果自定义函数调用在先,定义在后,那么不必声明该函数
67. 假设有int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; int (*q)[3]=a;*q=a[0];那么能够
正确表示数组元素a[1][2]的表达式是〔 C 〕。
A. *((*q+1)[2] B. *(*(q+5)) C. *(*(q+1)+2) D. (*q+1)+2
68.设int x[]={1,3,5,7,9,11,13},*p=x; 41、那么不能正确引用数组元素的表达式是〔 B 〕
A.*(p--) B. *(--p) C.*(p++) D.*(++p)
69. 有以下函数
char *fun(char *p)
{
return p;
}
该函数的返回值是〔 B 〕
A. 无确切的值 B. 形参p中存放的地址值
C. 形参p自身的地址值 D. 编译有错
70. 在下面的引用定义中,正确的选项是〔 B 〕。
A. int x,&y; y=x; B. int x,&y=x ; 42、
C. int &y=x,x; D. float z; int x,y=&z;
71.执行下面程序段后,a的值为〔 C 〕。
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. 8
72. 执行以下程序段后,变量i的值为〔 B 〕。
#define M 43、A(x,y) ((x)*(y))
int i=5;
i=MA(i,i+1)-7;
A. 30 B. 23 C. 19 D. 1
73.假设有以下的说明:
struct person
{char name[20];
int age;
char sex;
}a={"li ning",20,'m'},*p=&a;
那么对字符串li ning的引用方式不可以是( B )
A. (*p).name B. p.name 44、C. a.name D. p->name
74. 假设程序中定义了以下函数
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(do 45、uble x,double y);
75.假设有以下的说明和语句,那么在执行for语句后,*(*(pt+1)+2)表示的数组元素是( C )
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是〔 D 〕
A.八进制数 B.十进制数 C.十六进制数 D.非法数
77. 整型变量i定义后赋初值的结果是〔 46、 B 〕。
int i=2.8*6 ;
A.12 B.16 C.17 D.18
78.for(i=0,x=0; !x&&i<=3;i++)循环的次数为〔 A 〕
A.4 B.5 C.1 D. 无限循环
79.假设有如下程序段:
{ int a=2,b=-1,c=2;
if (a 47、 A 〕
A.2 B.1 C. 3 D. 0
80.以下符号能用作C++标识符是的〔 D 〕。
A. xyz/2 B. 2xsale C. x-sale D. x_sale
81.以下非法的赋值语句是〔 B 〕。
A. n=(i=2,i++); B. ++(i+1); C.x=j>0; D. i++ ;
82.以下不能对二维数组a 进展正确初始化的语句是( C )
A.int a[2][3]={0};
48、 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语句是〔 D 〕。
A. if(a=b) c++;
C. if(a=>b) c++; D. if(a==b) c++;
84.字符串常量“I love china〞在内存中存在需要〔 C 〕字节。注:每个单词之间
有一个空格。
A.10 49、 B.12 C. 13 D. 14
二. 填空题
1.C语言源程序的扩展名为.c,可执行文件的扩展名为_______________。.exe
2.数组 int a[3][5];共定义了______个数组元素。15
3.C程序由函数构成,C程序总是从_______开场执行.main()
4. C语言中,用__________ 关键字来包含如stdio.h之类的头文件。 include
5.函数的返回值是通过函数中的________________语句来获得的。return
6.至少执行一次循环体的循环语句是 。do—w 50、hile 语句
7.对于不带返回值的函数,应当用关键字______________定义函数。void
8.多分支构造的程序,通常选用_________语句来实现。 switch
9.假设char ch[]="25yi6"有以下语句,那么编译后分配给数组ch的内存占用的字节数为
________。6
10.下面运算符 < , ++ = 按照优先级从高到低排列顺序为__ _。++ < = ,
11.假设char str[8]={“tony〞};int k=strlen(str);那么k的值为____________。4
12.______________是声明构造
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4009-655-100 投诉/维权电话:18658249818