c语言练习题t答案.docx

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语言练习题
一、选择题
1、C语言属于()语言。

A、低级
B、汇编
C、高级
D、面向对象
2、一个C语言程序总是从()开始执行。

A、书写顺序的第一个函数main()
B、书写顺序的第一条执行语句
C、主函数
D、不确定
3、把已经编辑好的源程序翻译成二进制目标代码的是()步骤。

A、编辑
B、编译
C、连接
D、执行
4、在C语言程序中,main()的位置()。

A、必须作为第一个函数
B、必须作为最后一个函数
C、可以任意位置
D、必须放在它所调用的函数之后
5、C语言中的标识符只能由字母、数字和下划线组成,且第一个字符(
)。

A、必须为字母
B、必须为下划线
C、必须为字母或下划线索
D、可以是字母、数字或下划线中的任一种
6、C语言程序由__________ 组成。

A.过程
B.函数
C.子程序
D.标识符
7、在C语言中, _______ 既不是保留字,也不是合法的标识符。

A.a+b
B. auto C・ char D・ a2
8、以下选项中正确的整型常量是()。

A.12.
B. -20
C. 078
D. 4E2
9、表达式________ 的值是整数类型。

A. 15/2+2.0
B. 15/2
C. 25/5.0
D. 0.5*10
10、在C语言中,不正确的int类型的常数是 __________
A. 32768
B. 0
C. 037
D. OXaf
11、以下选项中,不能作为合法常量的是______ 0
A. 1.2e04
B. 1.2e0.4
C. 1.2e+4
D. 1.2e0
12、设无符号int型数据在内存中占2个字节的存储空间,则其表示范围是
A. 0〜255
B. 0〜65535
C. -256〜255
D. -32768〜32767
13、C源程序要正确地运行,必须要有什么函数
A. printf函数
B.自定义的函数
C. main函数
D. scanf函数
14、设int类型的数据长度为2字节,则int类型数据的取值范围是_____ 。

A. 0〜255
B. 0〜65535
C. -256〜255
D. -32768〜32767
15、以下说法中正确的是________ o
A.C语言程序总是从源文件中的第一个函数开始执行
B.在C语言程序中,要调用的函数必须在main()函数中定义
C.C语言程序总是从main()函数开始执行
D.C语言程序中的main()函数必须放在程序的开始部分
16、为求出s=10!的值,则变量s的类型应当为_______ o
A. int
B. long
C. unsigned
D.以上三种类型均可
17、____ 是C语言的标准函数名。

A. putchar
B. case
C. while
D. long
18、在C语言中,表达式 ___ 的值是整数类型。

A. 55. 0
B. 34. 6+0. 4
C. 22. 3*10
D. 23%10
19、已知i、j、k是int型变量,设从键盘输入数据1, 2, 3〈回车〉使i的值是L j的值是2、k的值是3,以下选项中正确的输入语句是()o
A.scanf ( “%2d%2d%2d”,&i,&j, &k);
B.scanf (“%d %d %d”,&i,&j, &k);
C.scanf ( "%d, %d, %d",&i,&j, &k);
D.scanf ( " i=%d, j=%d, k=%d",&i, &j, &k);
20、C语言中的数据的基本类型包括______
A.整型、实型、字符型的逻辑型
B.整型、实型、字符型和结构体
C.整型、实型、字符型和枚举型
D.整型、实型、字符型和指针型
21、C语言程序中,若对函数类型未加显示说明,则函数的隐含类型是_o
A. void
B. doub1e
C. int
D. char
22、在一个源文件中定义的全局变量的作用域为
A.本文件的全部范围
B.本程序的全部范围
C.本函数的全部范围
D.从定义该变量开始至本文件结束
23、设已定义k是int型变量,则下面循环执行次数是_______ 。

k=10;
wh订e(k=0) k=k~l;
A.执行10次
B.无限循环
24. 设有以下定义 int a=0; double b=l. 25; char c => A';
#define d 2
main ()
void main() { int x scanf ( "%d" , &x) else printf ( “%d\n” 30.
设sl,s2是两个字符数组名,判断si 和s2中的字符串是否相等,应当
使 用( )。

B. if (strcmp(sl, s2)==0)
则下面语句中错误的是 () A. a++; B. b++
C. c++;
D. d++; 25. 在C 语言中,"***123***"是合法的.
.表示。

26.
27. A.字符 B.浮点数 C.字符串 .不是C 语言的标准函数名。

A. fabs
B. sinx
C. pow 下面程序的输出结果是( )o
D. A,B,C 都不对
D. sqrt { int x =010, y =10; printf
("%d, %d\n” , x—
A. 10, 10
B. 7, 9
C. 8, 10
D. 9,
28. C 语言中程序的基本单位是( )o
A.
程序行 B.语句 C. 函数
D.
字符
29. 下面程序运行时,如果从键盘上输入5, 则输出的结果是( )o
if (x ++< 5) printf ("%d\n" , x++);
A. 6
B. 7
C. 5 D ・4
A. if(sl==s2)
D. if (strcmp(sl, s2)= 0)
31.下列叙述中正确的是( )o
A.break语句只能用于switch语句
B.在switch语句中必须使用default
C.break 语句必须与switch 语句中的case 配对使用
D.在switch语句中,不一定使用break语句
32.设执行以下程序时从键盘上输入数据3和4,则输出结果是()o
A. 14 B・ 16 C. 18 D. 20
main ()
{ int a, b, c, s;
scanf ( "%d%d" , &a, &b);
s=a;
if (a<b) s=b;
s* 二s;
printf( "%d\n” , s);
}
33.以下程序的输出结果是()o
A. 0 E. 1 C. 5 D. 6
fun (int a , int b, int c)
{ c=a^b;
a=b;
b=a;
}
main ()
{int c=l; fun (2, 3, c);
printf( "%d\n" , c);
}
34.下面程序的输出结果是( )o
void main ()
{ int i二10;
switch (i)
case 9: i+=l;
case 10
:i+=l;
C. if(sl=s2)
case 11: i+=l;
case 12
i+二1;

}
printf ( “i=%d\n” , i
A.10 B 11 C. 12 D・ 13
35.以下语句序列中do-while循环的结束条件是()o
int n=0, p; do{scanf( "%d",&p);n++;}while(p! 12345 &&n〈10);
A.p的值不等于12345并且n的值小于10。

B.p的值等于12345并且n的值大于等于10。

C.p的值不等于12345或者n的值小于10。

D.p的值等于12345或者n的值大于等于10。

36.以下合法的字符型常量是()。

A. ” \xl3”
B. ” \018”
C. ” 65”
D. ” \n”
37.在C语言中,函数返回值的类型最终取决于()。

A.函数定义时在函数首部所说明的函数类型
B.return语句中表达式值的类型
C.调用函数时主函数所传递的实参类型
D.函数定义时形参的类型
38.若int i, j ;,则for (i=j=0; i<10&&j<8; i++, j+=3)控制的循环体执行的次数是()。

A. 9
B. 8 C^3 D. 2
39.以下描述错误的是(九
A.C程序中,函数可以直接或间接的调用自己
B.函数调用时,函数名必须与所调用的函数名字完全一致
C.函数说明语句中的类型必须与函数返回值的类型一致
D.实参数可以与形参个数不一致
40.阅读下面程序,则执行后的输出结果为
#include 〃stdio. h〃
fun (int a, int b)
{int s;
s二a*b/2;
printf (〃%d\n〃, s) ;}
main ()
{int a=10, b=16;
fun (a, b) ;}
A. 10
B. 16
C. 160 D・ 80
41 •阅读下面程序,则程序执行后的结果为
#include 〃stdio. h〃
main ()
{int a=4, b=6, c=7;
double d, fun (int, int, int)
d=fun (a, b, c)
printf (〃%lf\n〃,d) ;}
double fun (int a, int b, int c)
{double s;
s二a%b*c;
return s;}
A. 27
B. 27. 000000
C. 28
42.下列程序的输出结果是
#include 〃stdio. h〃
main ()
{ int i二6;
while (i--)
printf (〃%d〃,--i);
printf (〃\n〃);}
A. 531
B. 420
C. 654321
43.阅读下列程序,则执行结果是
#include 〃stdio. h〃D・ 28. 000000 D.死循环
main ()
{int a=0, b=0, c=0, i ;
for (i二0;i〈4;i++)
switch (i)
{case 0:a=i++;
case 1:b=i++;
case 2:c=i++;
case 3:i++;}
printf (〃%d, %d, %d, %d\n〃,a, b, c, i) ;}
A. 0, 1, 3, 4 B 1, 2, 3, 4 C・ 0, 1, 2, 5 D. 0, 2, 3, 4
44.语句int (*p)()的含义是
A.p是一个指向一维数组的指针变量
B.p是指针变量,它指向一个整型数据的指针
C・P是一个指向函数的指针,该函数的返回值为整型
D.以上答案都不对
45.以下程序的输出结果为()o
main ()
{ int i二010, j二10, *pi, *pj;
pi=&i; Pj=&j;
printf (〃%d. %d\n〃, *pi, *pj);
}
A. 10,10 B・ & 10 C. 010, 10 D. & 8
46.有以下程序
main ()
{
char a[7]=〃ab〃;
int i, j;
i=sizeof(a);
j=strien(a);
printf("%d %d\n", i, j);
} 程序运行后的输出结果是。

A. 2 2
B. 7 6
C. 7 2
D. 6 2
47.以下定义语句中,错误的是。

A. int a[ ] = {1, 2}
B. int a[ ] [3] = {1, 2, 3, 4, 5};
C.char s[10]= "test" ;
D. int n=5, a[n];
48.若要求从键盘读入含有空格字符的字符串,应使用函数
A. gets()
B. getc ()
C. getchar ()
D. scanf ()
49.有以下程序
main ()
{int a=l, b=3, c=5:
int *pl=&a, *p2=&b, *p=&c;
*p=*pl*(*p2);
printf("%d\n",c);
}
执行后的输出结果是。

A. 1
B. 3
C. 5
D. 4
50.以下程序的输出结果。

A. 0
B. 1
C. 2
D. 3
main( ) {static int a[5] = {l, 2, 3} ; printf ( "%d\n" ,a[3]); }
51.以下程序的输出结果。

A. 10
B. 15
C. 20
D. 21
main()
{
int i, j, s=0, a⑵[3]Ml, 2, 3, 4, 5, 6};
for (i=0; i<2; i++) for (j=0; j<3; j++) s=s+a[i][j]; printf( "%d\n" , s);
}
52.函数strlen( “AST\nO12\l\\”))的返回结果是。

A. 8
B. 9
C. 10
D. 11
函数strcmp( “ABCD”,“ABCDE”)的返回值是。

A. O
B.正数
C.负数
D.以上结果均不正确
53.常量NULL的值是()
A, 0 B. -1 C. 1 D. 2
54.以下不正确的字符串赋值或初始化的是()。

A. char *s; s= "string" ;
B. char s[ ]={ 's' , , 'r', 'i',,’g,, © };
C.char s[10] ; s= "string" ;
D. char s[]= "string";
55.int型变量在内存中占2个字节,若int a[10] = {0, 2, 4};则数组a所占字节数是
9
A. 3
B. 6
C. 10
D. 20
56.以下对C语言函数的描述中,正确的是。

A.调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参。

B.C函数既可以嵌套定义又可以递归调用。

C.函数必须有返回值,否则无法调用此函数。

D.函数递归调用的执行效率高,所以应尽量用递归调用来编写程序。

57.以下程序的输出结果是( )。

void main()
{ int i, a[20];
for (i=9; i>=0; i ------- ) a[i]=10-i;
printf ( "%d%d%d" , a[2], a[5], a[8]);
}
A. 852
B. 741
C. 258
D. 369
58.不合法的字符常量是。

A)'\t' B) “A” C) 'a' D) ' \x32'
59.属于合法的C语言长整型常量的是。

A) 5876273 B) 0L C) 2E10 D) (long)5876273
60.在C语言中,要求参加运算的数必须时整数的运算符是。

A) / B) * C) % D)=
61.在C语言中,字符型数据在内存中以形式存放。

A)原码B) BCD码C)反码D) ASCII码
62、是非法的C语言转义字符。

A) '\b' B) '\Oxf, C) '\037' D) '\''
62、与代数式(x*y)/(u*v)不等价的C语言表达式是。

A) x*y/u*v B) x*y/u/v C) x*y/(u*v) D) x/(u*v)*y
64、若int k=7, x=12;贝!J能使值为3的表达式是。

A) x%=(k%=5) B) x%=(k-k%5)
C) x%=k-k%5 D) (x%=k) — (k%=5)
65、为了计算s=10!(即10的阶乘),则s变量应定义为。

A) int B) unsigned C) long D)以上三种类型均可
66、以下所列的C语言常量中,错误的是。

A) OxFF B) 1.2e0. 5 C) 2L D) ' \72'
67、假定x和y为double型,则表达式x=2, y=x+3/2的值是。

A) 3.500000 B) 3 C) 2.000000 D) 3.000000
68、设变量n为float型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是。

A) n= (n*100+0.5)/100.0 B) m=n* 100+0. 5, n=m/100. 0
C) n^n* 100+0. 5/100. 0 D) n=(n/100+0. 5)*100. 0
69、以下合法的赋值语句是。

A) x=y=100 B) d ----------- C) x+y D) c=int(a+b)
70、下选项中不属于C语言的类型是。

A)signed short int B) unsigned long int
B)unsigned int D) long short
71、设以下变量均为int类型,则值不等于7的表达式是。

A) (x=y=6, x+y, x+1) B) (x=y=6, x+y, y+1)
C)(x=6, x+1, y=6, x+y) D) (y=6, y+1, x=y, x+1)
72、若fp是指向某文件的指针,且已读到文件末尾,则库函数feof(fp)的返回值是( )。

A. EOF
B. -1
C.非零值
D. NULL
73.求s=5%2的值,则变量s的值为()o
A. 2. 5
B. 1
C. 3
D.以上三种均可
)o
74.下列程序的输出结果是(
A. 4
B. 6
C. 8
D. 10
int b=2;
int func(int *a)
{ b +二*a; return(b);}
main ()
{ int a=2, res=2;
res +二func(&a);
printf(〃%d \n〃, res);
}
75.下列程序的输出结果是( )o
main ()
{ char a[10] = {9, 8, 7, 6, 5, 4, 3, 2, 1, 0}, *p=a+5; printf ( "%d” , *一p);
}
A.非法 E. a[4]的地址C・5 D.
76.以下程序的输出结果( )o main ()
{ static int a;
printf ( “%d\n” , a);
}
A・0氏1 C. 2 D. 随机值
77.若int i二10;执行下列程序后,变量i的正确结果是( )o switch (i) {
case 9: i+=l ;
case 10: i+=l ;
case 11: i+=l ;
defauIt :i+二1 ;
}
D・13
A. 10
B. 11
C. 12
78.下面程序的输出结果是( )o
main ()
{ int x =10, y =10;
printf ("%d, %d\n”,--x, y--);
}
A.10, 10
B. 9, 9
C. 10, 9 D・ 9, 10
79.设执行以下程序时从键盘上输入数据3和4,则输出结果是( )o main () { int a, b, c, s;
scanf ( "%d%d" , &a, &b);
s=a;
if(a<b) s=b;
s*=s;
printf( "%d\n" , s);
}
A. 14
B. 16
C. 18
D. 20
80.执行下面的程序段后,变量k中的值为( )o
int k=3, s[2];
s[0]=k; k 二s[l]*10;
A.不定值
B. 33
C. 30
D. 10
81.以下程序段( )o
do
{ x=x*x; }
while (!x);
A.是死循环
B.循环执行2次
C.循环执行1次
D.有语法错误
81.设有以下语句
typedef struct TT
{char c;
int a[4];
}CIN;
则下面叙述中正确的是()o
A.可以用CIN定义结构体变量
B. TT是struct类型的变量
C.可以用TT定义结构体变量
D. CIN是struct TT类型的变量
82.下面标识符中,不合法的用户标识符为非。

A、Pad
B、a_10
C、CHAR
D、a#b
83.下面标识符中,合法的用户标识符为
A、long
B、E2 C^ 3AB D、enum
84.以下的常数都是合法的C语言常量是。

A、一0
B、" 222 "
C、' 123'
D、" 12.
'/N‘7FF '\678z—OXlal
2E5 03 03e5
85.在C语言中,int、char和short三种类型数据所占用的内存。

A、均为2个字节
B、由用户自己定义
C、由所用机器的字长决定
D、是任意的
86.在C语言中,int类型数据范围是。

A、0 至255
B、0 至65535
C、-32768 至32767
D、-255 至255
87.以下不正确的转义字符是。

A、' //' BJ /' CJ 08U DJ \0,'
88.在C语言中,char型数据在内存中以形式存储的。

A、原码
B、补码
C、ASCII码
D、反码
89.以下运算符中优先级最低的算符为[1] C,优先级最高的为[2]B。

A、&&
B、&
C、,
D、!=
90.若有运算符:〈、* =、〈〈、%、sizof,则它们按优先级(由低至高)的正确排列次序为
A、* =—〈〈—>—% —sizeof B> >>—*=—> — % — sizeof
C、* =—>f〈〈—sizeoff %
D、*=f >f〈〈f %f sizeof
91.若有以下类型说明语句:char w; int x float y: double z:则表达式w*x+z-y
的结果为类型。

A、float B> char
C、int
D、double
92.设x、y为float型变量,则以下是不合法的赋值语句。

A、++x B> y = float (3)
C、x=y=2 = 0
D、x* = y+8
93.若x为int型变量,则执行下列语句后x的值为
x = 6;
x+ =X— =x*x;
A、36
B、-60
C、60
D、-24
94.若w=l, x = 2, y = 3, z = 4,则条件表达式x<x?w: y<z?w:y的结果为
A、4
B、3
C、2
95.设a和b均为int型变量,且a值为15, b值为240,则表达式(a& (B) &&b的结果为[1],表达式(a& (B) &b II b的结果为[2]。

[1]A、0 B、1
C、true
D、false
[2]A、0 B、1
C、true
D、false
此题不做
96.若x为unsigned int型变量,则执行语句后的x值。

x = 65535;
printf ( " %d\n " , x);
A、65535
B、1
C、无定值
D、—1
97.若有说明语句int i, j;且i的值为6,则执行语句j= ( + + i) +i + + ) 后j的值为。

A、4
B、14
C、13
D、15
98 •阅读以下程序:
main()
{ int x;
scanf(“%d”,&x);
if(x—<5) printf(“%d”' x);
else printf("%d"' x++);
}
程序运行后,如果从键盘上输人5,则输出结果是
A、3
B、4
C、5
D、6 99.有以下程序(此题不做)
main()
{ unsigned char a,b;
a=4l3; b=4&3;
printf(“%d %d\n”,a,b(;
}
执行后输出结果是: A 、
7 0 B 、0 7 100.有以下程序
main() {int i=l,j=l,k=2; if((j++ II k++)&&i++)
printf("%d,%d,%d\n",i,j,k); } 执行后输出结果是 A 、 1, 1, 2
2, 3 101.有以下程序 main() {int if(a>b>c) printf("%d\n",d);
else if((c-l>=d)==l)
printf("%d\n",d+l);
else printf("%d\n",d+2) } 执行后输出结果是 A 、2 B 、3 C 、4 102.有定义语句:int 后,x 的值不为3的是 A 、辻 C<a)店1; else f b<a) x=2; else 左3;
C 、if(a<3)x=3; if Q<2)左2; if ®<])左 1; C 、 1 1
D 、 43 0
1 X >0
103.有一函数,y =(0x = 0 B 、 2, 2, 1 C 、 2, 2, 2 D 、 2, a=5,b=4,c=3,d=2; D 、编译时有错,无结果
a=l,b=2,c=3,x;则以下选项中各程序段执行 B 、if (a<3)丘3;
else if (a<2) x=2;
else x=l;
D 、if (a<b)店b; if (b<c) uc;
if (c<a) ua; 以下程序段中不能根据X 值正确计算出y 值的是 A 、if (x>0) y=l; else if(x==0) y=0; else y=-l; B 、 y=0; if(x>0) y=l;
else if(x<0) y=-l;
-lx<0
C 、 y=0;
D 、 if(x>=0) if(x>=0);
if(x>0) y=l ; else y=-l; 104.
有以下程序 main()
{ int a=15,b=21,m=0; switch(a%3)
{ case 0:m++;break; case l:m++; switch(b%2) { default:m++; case 0:m++;break; } }
printf("%d\n",m); }
程序运行后的输出结果是 A 、 1 B 、 2 C 、 3 D 、 4
105. 有以下程序
main()
{
int a=3,b=4,c=5,d=2; if(a>b) if(b>c)
printf("%d",d++ +1); else
printf("%d",++d +1); printf("%d\n",d); }
程序运行后的输出结果是 A 、2 B 、3 C 、43 D 、44
106. 下列条件语句中,功能与其他语句不同的是 A 、 if(a) printf("%d\n",x); else printf("%d\n",y); B 、 if(a==0) printf("%d\n",y); else printf("%d\n",x); C 、 if (a!=0) printf("%d\n",x); else piintf("%d\n",y); D 、 if(a==0) printf(''%d\n",x); else printf("%d\n",v); 107. 有以下程序 —
main ()
{ int i=l, j=2, k=3;
if(i++==l&&(++j==3||k++==3)) printf ("%d %d %d\n", i, j, k);
if(x>0) y=l;
else y=0;
else y=-l;
程序运行后的输出结果是 A 、1 2 3 B 、2 3 4 C 、2
2 3 D 、2 3 3 108. 若执行下面的程序时从键盘上输入3和4,则输出是 A 、14 B 、16 C 、18
D 、20
main () { int a, b, s;
scanf (〃%d %d 〃,&a, &b); s =a;
if (a<b)s=b; s 二s*s;
printf (〃%d\n 〃,s) ;}
109. 下面的程序
A 、有语法错误不能通过编译 B> 输出* * * *。

C 、 可以通过编译,但是不能通过连接,因而不能运行。

D 、 输出# # # #。

main ()
{ int x=3, y=0, z=0;
if (x=y+z)printf(〃* * * *〃); else printf(〃# # # #〃);} 111. 若执行下面的程序时从键盘上输入5,则输出是
A 、7
B 、6
C 、5
D 、4
main () { int x;
scanf (〃%d 〃, &x);
if (x++>5) printf (〃%d\n 〃,x); else printf (〃%d\n 〃, x 一);}
112. 下面的程序片段所表示的数学函数关系是上面程序片段的输出结果是
y=-l; if (x!=0) if(x>0) y=l; else y=0
1
- 0 (x>0)
r -l(x<0) I
A 、y = H 0 (x=0)
I 1
- 1 (x>0) r 0 (x<0) I
C 、y = -I T (x=0)
r 1 (x<0) I
y = H -1 (x=0)
I 1
- 0 (x>0) r -1(x<0)
I
D 、 y = H 1 (x=0)
1
- 1 (x>0)
113.假定所有变量均已正确说明,下列程序段运行后x的值是
a=b=c=O;x=35;
if (!a) x一;else if (b);
if (c)x=3;
else x=4;
A、34
B、4
C、35
D、3
114.以下循环体的执行次数是
A、3 B> 2 C、1 D、0
main ()
{ int i, j; for(i=0, j=l; i<=j+l; i+=2, j—)printf (zz%d \n zz, i);
}
115.以下叙述正确的是
A、do-while语句构成的循环不能用其它语句构成的循环来代替。

B> do-
while语句构成的循环只能用break语句退出。

C、用do-while语句构成的循环,在while后的表达式为非零时结束循环。

D、用do-wh订e语句构成的循环,在wh订e后的表达式为零时结束循
环。

116.以下程序段
int a, y;
a=10; y=0;
do
{ a+二2; y+二a;
printf (/z a=%d y=%d\n zz, a, y); if(y>20) break;
{ wh订e(a=14);
程序段执行结果是
A、a=12 y=12 a=14 y=16 a=16 y=20 a=18 y=24
C、a=12 y=12
117.以下程序的输出结果是
main()
{ int num= 0;
while(num<=2)
{ num++; printf(“%d\n",num);}D、a=12 y=12 a=14 y=26 a=14
y=44
118. 以下程序的输出结果是
main()
{ int i, a[10]; for(i=9;i>=0;i —) a[i]=10-i; printf (“ %d%d%d”,a[2],a[5],a[8]); } A 、 258 B 、 741 C 、 852 D 、 369
119. 以下程序的输出结果是
main()
{ int a, b; for(a=l, b=l; a<=100; a++) { if(b>=10) break; 辻(b%3= =1) { b+=3; continue; } }
printf (“ %d\n”,a); }
A 、 101
B 、 6
C 、 5
D 、 4 120. 以下程序中,wh 订e 循环的循环次数是
main() { int i=0; while(i<10)
{ if(i<l) continue; if(i = =5) break;
i++;
}
} A 、 1 B> 10
121.
以下程序的输出结果是 main() { nt a=0,i=0; for(i=l;i<5;i++) { switch(i) { case 0: case 3:a+=2; case 1:
case 2:a+=3; default :a+=5; printf("%d\n",a); }
A 、1
3 4 B 、 1 C 、 1 2 3
D 、1 2
c 、6 D 、死循环,不能确定次数
A、31
B、13
C、10
D、20
122.以下程序的输出结果是
#include <stdio.h>
main()
{ int i=O,a=O;
while(i<20) { for(;;)
{ f((i%10)==0) break; else i-;
} i+=ll; a+=i;
}
printh("%d\n",a);
}
A、21
B、32
C、33
D、11
123.以下程序的功能是:按顺序读入10名学生4门课程的成绩,计算出每位学生的平均分并输出,程序如下:
main()
{ int n,k;
float score ,sum,ave;
sum=0.0;
for(n= 1 ;n<= 10;n++)
{ for(k= 1 ;k<=4;k++)
{ scanf(“%f&score); sum+=score;} ave=sum/4.0;
printf(66NO%d:%f\n,,,n,ave);
}
}
上述程序运行后结果不正确,调试中发现有一条语句出现在程序中的位置不正确。

这条语句是
A、sum=0. 0; sum+=score:
C^ ave=sun/4. 0; D、printf( "N0%d:%f\n" , n, ave);
124.有以下程序段
int n=0,p; do{scanf("%d",&p);n++;}while(p!=12345 &&n<3);
此处do一while循环的结束条件是
A、P的值不等于12345并且n的值小于3
B、P的值等于12345并且n的值大于等于3
C、P的值不等于12345或者n的值小于3
D、P的值等于12345或者n的值大于等于3
125.有以下程序
main ()
{ int i;
for(i=0;i<3;i++)
swit ch(i)
{ case 1: printf (〃%d〃,i);
case 2: printf(〃%d〃,i); defauIt: printf(〃%d〃,i);
}
}
执行后输出结果是
A、011122 B> 012 C、012020 D、120
126.有以下程序
main ()
{ int a=5, b=4, c=3, d=2;
if (a>b>c)
printf (〃%d\n〃, d);
else if ((c-l>=d) ==1)
printf(〃%d\n〃,d+1);
else
printf(〃%d\n〃,d+2)
}
执行后输出结果是
A、2
B、3
C、4
D、编译时有错,无结果
127.有以下程序
main ()
{ int i二0, s二0;
do{
if (i%2){i++;continue;}
i++;
s +=i;
}while (i<7);
printf (〃%d\n〃,s);
}
执行后输出结果是
A、16 B> 12 C、28 D、21
128 •请读程序:
#include〈stdio. h>
main ()
{ int n[2], i, j, k;
for(i=0;i<2;i++) n[i]=0;
k=2;
for(i=0;i<k;i++)
for(j=0;j<k;j++) n[j]=n[j]+l; printf("%d\n", n[k]); }
上面程序的输出结果是 A 、不确定的值 B 、3 C 、2 D 、1
129.请读程序片段: #include 〈stdio. h> main () { int a, b;
for(a=l, b=l;a<=100;a++) { if(b>=20) break; if (b%3 二二 1) {b+二 3; continue; } b-=5; }
printf (〃%d\n 〃, a); }
上面程序的输出结果是 A 、7 B 、8 C 、9
D 、10
130.设x 和y 均为int 型变量,则执行以下语句后的输出为 x=15; y=5;
printf ( ” %d\n " , x%= (y%=2));
A 、0
B 、1
C 、6
D 、 12 131. 若 m> x 、 y 、z 均为int 型变量, 则执行下面语句后的m 的值

m=l ; x = 2; y = 3; z=4; m= (m<x) ?m :
X ;
m= (m<y) ?m : y ; m= (1 tn<z) ?m : Z ;
A 、1
B 、 4
C 、2
D 、 3 132. 若 X 、y^ z 均为int 型变量,则扌 丸行以下语句后的输出结果为
z = 10);
y=%d, z=%d\n", x, y, z); x+y);
y= (x=10, x+5, printf ( ” x= %d, z= (x=10, y = 5,
printf ("x=%d, y=%d, z=%d\n", x, y, z);
promgram ? s name is c : \\tools'book. txt ”);
134.
若x 是int 型变量,y 是float 型变量,所用的scanf 调用格式为:scanf (“x=%d, y=%f”,&x, &y)则为了将数据10和66. 6分别赋给x 和y,
正确的输入为
135. 若w 、x 、y 、z 均为int 型变量,则为了使以下语句的输出:1234+123+12+1, 正确的输入为
scanf ( n %4d+%3d+%2d+% Id " , &x, &y, &z, &w); printf ( n %4d+%3d+%2d+%ld :, x, y, x, w); A 、1234123121 (回车)
B> 1234123412341234< 回车〉 C 、1234+1234+1234+1234〈回车〉
D 、1234+123+12 + K 回车〉
136. 若x 、y 均为irrt 型变量,z 为double 型变量,则以下不合法的scanf 函 数调用为。

A 、scanf ( ” %d, %lx, %le" , &x, &y, &z) B> scanf ( n %2d*%d%lf " ,
&x, &y, &z)
C 、 s canf ( " %x%*d%o " , &x, &y, &z)
D 、 s canf ( H %x%o%6・ 2f, &x, &y, &z)
137. 执行下面的程序段后,变量k 中的值为
A 、不定值 B> 33 C 、30 D 、10
int k=3, s[2];
s [0]=k; k 二 s[l]*10; 138. 下列程序执行后的输出结果是
A 、
The
promgam ? s name is B 、The promgam ? s name is C 、The promgam ? s name is D 、The promgam s name is
后的输出是
c : tools book ・ txt c : \tools book ・ txt c : \\tools book.txt c : \toolook ・ txt A 、x 10, y 15, z = 10 B> x 10, y 10, z = 10
x=10, y=5, z = 10 x=10, y = 5, z = 10
C 、x=10, y=10, z = 10
D 、x 10, y
10, z = 10
x=10, y = 5, z = 15
x=10, y=5, z = 5
133.执行语句 printf ( n The A 、x=10, y=66.6 (回车)
B 、10 66.6 (回车)
C 、10 () 66.6 (回车)
D 、x 10 (回车)y=66・6
A、you&me
B、you
C、me
D、err
mai ()
{ char arr[2][4]; strcpy (arr, "you"); strcpy (arr[1], "me"); arr [0] [3]=' &';
printf("%s \n", arr);
}
139.执行下列程序时输入:123〈空格〉456〈空格〉789〈回车〉,输出结果是
A、123,456, 789
B、1, 456, 789
C、1,23,456, 789
D、1,23,456
main ()
{ char s[100]; int c, i; scanf("%c", &c); scanf("%d", &i); scanf("%s", s); printf ("%c, %d, %s \n", c, i, s);
}
140.有如下程序
mainO
{ int a[3] [3] = {{1, 2}, {3, 4}, {5, 6}}, i, j, s=0; for(i=0;i<3;i++)
for(j=0;j<i;j++) s+=a[i][j] printf ( "%d\n" , s);
}
该程序的输出结果是(14)此题无正确答案
A、18
B、19
C、20
D、21 141.以下程序的输出结果是
A、1,5,9
B、1,4,7
C、3, 5, 7
D、3,6,9
main()
{ ht i,x[3][3]={l,2,3,4,5,6,7,8,9}; for(i=0;i<3;i++) piintf("%d,",x[i][2-i]);
}
143.以下程序的输出结果是
A、B、ABCD C、EFG D、EFGH
FGH EFG HJK IJKL
KL U o
M
main()
{ char w[][10]={ “ABCD”,”EFGH”,”UKL”,”MNOP”},k;
for(k=l;k<3;k++) printf("%s\n",w[k]); }
144.当执行下面的程序时,如果输入ABC,则输出结果是
A、ABC6789
B、ABC67
C、12345ABC6
D、ABC456789
# include "stdio.bT
#include "string.h"
main()
{ diar ss[10]=“l,2,3,4,5";
gets(ss); strcat(ss, “6789"); printf(“%s\n",ss);
}
145.有以下程序
main()
{ intaa[4][4]={{l,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};
int i,s=0
for(i=0;i<4;i++) s+=aa[i] [1];
printf(66%d\n,,,s);
}
程序运行后的输出结果是
A、11
B、19
C、13
D、20
146•假定int类型变量占用两个字节,其有定义:int x[10] = {0, 2,4}则数组x在内存中所占字节数是
A、3
B、6
C、10
D、20
147.以下程序的输出结果是
main()
{ int i, a[10];
for(i=9;i>=0;i—) a[i]=10-i;
printf(“ %d%d%d”,a[2],a[5],a[8]);
}
A、258
B、741
C、852
D、369
148.以下数组定义中不正确的是
A、int a⑵[3];
B、i nt b[][3] = {0, 1,2, 3};
C、i nt c[100][100]= {0};
D、int d[3][] = {{l,2}, {1,2,3}, {1,2,3,4}};
149.以下程序的输出结果是
main()
{ int a[4][4]={{l,3,5},{2,4,6},{3,5,7}}; printf(“%d%d%d%d\n”,a[O]
[3] ,a[l][2] ,a[2][l],a[3][0];
}
A、0650
B、1470
C、5430
D、输出值不定
150.以下程序的输出结果是
main()
{ int b[3][3]={0,l,2,0,l,2,0,l,2},i,j,t=l;
for(i=0;i<3;i++)
for(j=i;j<=i;j++) t=t+b[i][b[j][j]];
printf("%d\n",t);
}
A 、7
B 、7
C 、7
8 9 10
9 11 13 7
D 、
} A 、3
B 、4
C 、7
D 、9
151.
以下能正确定义一维数组的选项是 A 、int a[5] = {0, 1, 2, 3, 4, 5} ; B 、char a,[] = {0, 1, 2, 3, 4, 5}; C 、char a 二{'A',' ' C'} ; D 、int a [5]二〃0123〃; 152.
已有定义:char a[]二〃xyz 〃, b[]二{'
x',' y',' z' };,以下叙述中正确的是
A 、数组a 和b 的长度相同 B. a 数组长度小于b 数组长度 C 、a 数组长度大于b 数组长度 D 、上述说法都不对
153. 以下能正确定义二维数组的是
A 、int a[] [3] ; B> int a[] [3]二2{2*3};
C 、int a[] [3] = {};
D 、int a[2] [3] = {{1}, {2}, {3,4}}; 154. 在C 语言中,函数的隐含存储类别是
A 、auto B> static
C 、extern
D 、无存

类别
155. C 语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是
156. 以下函数值的类型是
fun ( float x ) { float y;
y= 3*x-4; return y; }
A 、int B>不确定 157.
设有以下函数:
f (int a) { int b=0;
static int c = 3; b++; C++; retum(a+b+c); }
如果在下面的程序中调用该函数,则输出结果是 main()
{ int a = 2 , i;
for(i=0; i<3 ; i++) printf(“%d\n”,f(a));
158. 以下程序的输出结果是
int f()
A 、 void
B 、int
C 、 float
D 、 double C 、 void D 、 float
{ static int i=0;
int s=l;
s+=i; i++;
return s;
}
main ()
{ int i,a=O;
for(i=0;i<5;i++) a+=f();
printf("%d\n",a);
}
A、20
B、24
C、25
D、15
159.若有以下程序
# nclude <stdio.h>
void f (nt n);
main()
{ void f(int n);
f(5);
}
void fint n)
{ printf("%d\n",n); }
则以下叙述中不正确的是
A、若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f
B>若在主函数前对函数f进行说明,则在主函数和其后的其它函数中都可
以正确调用函数f
C、对于以上程序,编译时系统会提示出错信息:提示对对f函数重复说明
D、函数f无返回值,所以可用void将其类型定义为无值型
160.以下程序的输出结果是
A、0 B. 29 C、31 D、无定值
fun(int x, nt y, nt z)
{ z=x*x+y*y; }
main()
{ int a=31;
fun(5,2,a); printf(6U%d,,,a);
}
161.有如下程序
int func(int a, int b)
{ return (a+b);}
main ()
{ int x=2, y=5, z=8, r;
r=func (func (x,y),z);
printf ( "%\d\n” , r);
162. 当调用函数时,实参是一个数组名,则向函数传送的是
A 、数组的长度
B 、数组的首地址
C 、数组每一个元素的地址
D 、数组每个元素中的值 163.
对于基类型相同的两个指针变量之间,不能进行的运算是
169. 设已有定义:char *st 二〃how are you";下列程序段中正确的是 A 、char
a[ll], *p; strcpy(p=a+l ,&st[4]);
该程序的输出的结果是
A 、 12
B 、 13
C 、14
D 、15 B 、 C 、+ D 、-
164.若有定义:int
aa[ 8];o 则以下表达式中不能代表数组元aa[l]的地址
的是 A 、 &aa[0]+1
B 、 &aa[l]
C 、&a>a,[0]++
D 、 aa+1
165.在说明语句:int *f();中,标识符f 代表的是
A 、一个用于指向整型数据的指针变量 氏一个用于指向一维数组的行指针
C 、 一个用于指向函数的指针变量
D 、 一个返回值为指针型的函数名 166.有如下说明
int a[10] = {l, 2, 3, 4, 5, 6, 7, 8, 9, 10}, *p 二a; 则数值为9的表达式是 A 、 *P+9 B 、 *(P+8) C 、 *P+二9 D 、P+8
167.以下函数返回a 所指数组中最小的值所在的下标值
fun (int
*a, int n) { int
i, j=0, p;
P 二 j ;
for(i=j;i<n;i++)
if (a[i]<a[p]) ____________
return (p);
}
在下划线处应填入的是 A 、i=p B> a[p]=a[i] C 、P=j D 、p 二i
168 •请选出正确的程序段 A 、 int *p; scanf p); B> int *s, k;
*s=100; C 、int *s, k; char *p, c; s 二&k; p=&c; *p 二'a ,;
D 、int *s, k; char *p, e; s=&k; p=&c; s=p; *s=l;
B^ char a[ll] ; strcpy (++a, st);
C、char a[ll]; strcpy(a, st);
D^ char a[], *p; strcpy(p=&a[l],st+2);
170.若已定义:
int a[ ] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9], *p=a, i ;
其中0WiW9,则对a数组元素不正确的引用上
A^ a[p-a] B^ *(&a[i]) C^ p[i] D、a[10]
二、填空题
1.C语言中的语句是以 ____ 分号_____ 符号结束的。

2.C程序中可以有多个函数,但C程序总是从—主函数_ —开始执行。

3.结构化程序设计所规定的三种基本控制结构是顺序结构、选择构
和____________ 循环结构。

4.在C语言中表示回车换行的转义字符是 _________ 。

5.sizeof运算符的作用是 ______ ,在Turbo c编译系统中sizeof(long)的值是___________ 4 ____ , sizeof(float)的值是_______ 4 ___ , sizeof (double)的值是_____________ 。

6.整型变量a,b,c,分别为3,4,5,计算表达式a=16+(b++)-(++c)后,a的值是
________________ o
7.在16位PC机环境下,字符常量'a,在内存中应占1个字节,字符串"a " 应占2个字节。

8.在16位PC机环境下,int类型数据应占2个字节,short类型数据应占2 个字节,lonx类型数据应占4个字节,double类型数据应占8个字节。

9.若有说明char si二'077 \ s2= " \";则si中包含1个字符,s2中包含_个字符。

10.设x为float型变量,设y为double型变量,设a为int型变量,设b为long型变量,设c为char型变量,则表达式x + y*a/x+b/y + c的结果为_____ double ___ 类型。

11.设a、c^ x、y^ z均为int型变量,请在下面对应的_____ 上写出各表达式的结果。

(1)a— (c = 5, c+5, c/2); ________ 2 ____
(2)x= (y= (z = 6)十2) /5; _________ 1
(3)18+ (x=4) *3;___________ 30 _____
12.若有说明int x = 10, y = 20;请在下面对应的.上写出各printf语句的
输出结果。

(1)printf ( ” %3x\n”,x+y); ____________ 30 ________________
(2)printf ( ” %30\n ”,x*y);________________ %30 _____________
(3)printf ( ” %30\n ”,x%y, x, y);______________ %30 __________
(4)printf ( ” %30\n ”,(x%y, x —y, x+y)) ___________ %30 ________
13.下面程序的功能是:计算1到10之间奇数之和及偶数之和,请填空。

#include〈stdio. h>
main ()
{ int a, b, c, i;
a=c=0;
for(i二0;i<10;i+二2)
{ a+=i;
b二i+1; ______
c+
}
printf C偶数之和=%d\n zz, a);
printf (zz奇数之和二%d\n〃, c-11);
14.下面程序的功能是:输出100以内能被3整除且个位数为6的所有整数,请
填空。

#include〈stdio. h>
main ()
{ int i, j;
for (i=0; i〈二9 _________ ; i ++)
{ j二i*10+6;
i f ( i%3!=0 __________ ) cont inue;
printf j);
}
}
13.下列程序的输出结果是0 。

void fun(int *n)
{ while( ^n)—); printf(“ %d",++(*ii));
}
main()
{ int a=100; fun(&a);
}
14.以下程序的输出结果是10 。

main()
{ int arr[ ={30,25,20,15,10,5}, *p=arr;
P++;
printf(“ %d\n”,*(p+3));
}
15.以下程序的输出结果是____________ o
main()
{ diar *p="abcdefgh",*r;
long *q; q=(long*)p;
q++; r=(char*)q; printf("%s\n",r);
}
16.以下程序的输出结果是1。

main() { nt x=0;
sub(&x,8,l);
printf(”%d\n",x);
}
sub(int *a,int n,int k)
{ if(k<=n) sub(a,n/2,2*k);
*a+=k;
}
• 17.若fp已正确定义为一个文件指针,dl.dat为二进制文件,请填空,以便为“读”而打开此文件:fp=fopen( “d.dat”,”rb”) _____________ );。

18.下面程序把从终端读入的文本(用@作为文本结束标志)输出到一个名为bi. dat
的新文件中。

请填空。

#include "stdio.h"
FILE *fp;
{ char ch;
if( (fp=fopen ( “bi.dat”,”w”___________ ) )= = NULL)exit(O);
while( (ch=getchar()) !='@') fputc (ch,fp);
fclose(fp);
}
19.以下程序段打开文件后,先利用fseek函数将文件位置指针定位在文件末
尾,然后调用ftell函数返回当前文件位置指针的具体位置,从而确定文件长度,请填空。

FILE *myf; ling fl;
myf= fopen _________ (“testf
fseek(myf,O,SEEK_END); fl=ftel(myf); fclose(myf);
printf ( “%d\n” , f 1);
20.以下程序运行后的输出结果是52________ o
main()
{ int i=10, j=O;
do
{ j=j+i; i-;
while(i>2);
printf(“%d\n”,j);
}。

相关文档
最新文档