当前位置:文档之家› C语言

C语言

1.在计算机上,可以直接运行的程序是[A]
A.机器语言程序
B.高级语言程序
C.汇编语言程序
D.C语言源程序

2.一个C语言程序总是从[D]开始执行
A.第一行
B.第一个函数
C.最后一个函数
D.主函数
3.关于C语言中函数描述,正确的是[C]
A.main函数必须位于文件的开头
B.注释说明只能位于一条语句的后面
C.嵌套调用和递归调用均可
D.嵌套定义和嵌套调用均可
不允许嵌套定义
float f( float a[ ] , int n )
{ ……
char c (char * p , int a )
{……}
……}
允许嵌套调用:定义一个函数中包含调用另一函数的语句
允许递归调用:定义一个函数中包含调用本函数的语句
4.下面说法正确的是[A]
A.main函数可以在自定义函数后
B. main函数必须在系统库函数后
C.若有定义int (*f)( ),则函数f( )为int型
D. C语言的源程序由语句组成

5.结构化程序设计不包括[A]
A.最优化
B.自顶而下,逐步细化
C.模块化设计
D.结构化编码
6. C语言中函数返回值的类型是由[B]决定的
A.return语句中的表达式类型 P160(3)
B. 定义函数时所指定的函数类型
C.调用函数时临时指定
D. 对被调用函数申明时指定

7. 下列调用函数的说法中不正确的是[C]
A.主调函数和被调函数可以不在同一文件中
B. 实际参数和形式参数可以同名
C.函数间传递数据不可以使用全局变量
D. 若形参和实参都是数组名,则为地址传递
8.void作为函数的参数时,表示[B]
A.该函数无返回值
B.函数无参数
C.实参可为任意值
D.该函数可返回任意值

9.以下正确的描述是[D]
A.数组、结构体、共用体和枚举类型都是构造
类型
B.数组和枚举类型是基本类型
C.数组不是构造类型
D.枚举类型是基本类型
10. 用数组名作为实参,传递给形参的是[A]
A.数组的首地址
B. 数组元素的个数
C.数组的第一个元素的值
D.数组的全部元素的值

11. int (*f)();的含义为[C] (本次考纲之外)
A.函数f()为int型
B.函数f()为int型指针
C.f为指向函数的指针变量,该函数返回一个int型值
D.函数 f() 返回一个指向int型数据的指针
12.C语言的编译系统对宏命令是[C]
A.和源程序中其他成份同时进行编译,且展
开时不占用运行时间,只占用编译时间
B.在程序连接时进行处理
C.在对源程序中其他成份正式编译之前进行
预处理,且展开时不占用

运行时间,只占
用编译时间
D.在程序运行时进行替换处理
?
文件包含处理命令和条件编译命令也是在对源程序中其他成份正式编译之前进行预处理
13.对于结构化程序设计三种基本结构,它们具有一些共同点,其中不包含[D]:
A.先判断后执行
B.单入口,单出口
C.程序中没有执行不到的语句
D.无死循环

14.结构化程序设计三种基本结构不包含[C]:
A.选择结构
B.循环结构
C.数据结构
D.顺序结构
15.下面对typedef 不正确的叙述是[D]
A.用typedef 可以定义各种类型名,但
不能定义变量
B.使用typedef 有利于程序的通用和移

C.用typedef 只是将已存在的类型用一
个新的标识符表示
D.用typedef可以增加新类型
16.以下叙述正确的是[C]
A. #define是C语句,但printf不是
B.printf是C语句 ,但#define不是
C. #define和printf都不是C语句
D.#define和printf都是C语句
17.设有如下定义:
typedef int *INTEGER;
INTEGER p,*q;
则以下正确的是:[B]
A.p是int形变量
B.p是基类型为int的指针变量
C.q是基类型为int的指针变量
D.程序中可用INTEGER代替int类型名
18.以下[C]的数据类型都是基本的数据类型
A.整形、实型、逻辑型、枚举类型
B.整形、实型、字符串型、枚举类型
C.整形、实型、字符型、枚举类型
D.整形、实型、指针类型、枚举类型

19.以下数据类型中,不属于构造类型的是[C]
A.数组型
B.结构型
C.枚举型
D.共用型
20.在C语言中,[D]类型变量的所有成员以覆盖方式共享存储单元
A.数组型
B.结构型
C.枚举型
D.共用型

21.算术表达式 描述为C语言表达式,不正确的是[C]
A.a/b/c
B.a/(b*c)
C.a/b*c
D.(a/b)/c
22.标识符的正确定义是[D]
A.标识符不区分大小写
B.标识符不能描述常量
C. 类型名也是标识符
D.标识符是用户定义的,可以做为变量名

23.以下[C]组中的标识符都是合法的C语言用户标识符
A. 12x1 B. abs-1 C. scanf D. x2
p_10 ¥3 CHAR q
stu f1#t char1 unsigne

d
24. int 、unsigned int类型数据的取值范围分别是[A]
A.-32768~32767和 0~65535
B.–256 ~255和-32768~32767
C. -32768~32767 和0~255
D.–32768~32768和 0~65536

25.以下[ D ]是正确的变量名:
A. 5f B. if C. f.5 D. _f5

26.以下正确的是[ D ]
A. ‘a’*’b’是不合法的
B. ”a”+”b”是合法的
C.若定义int a,b;则(a+b)++是合法的
D.强制类型转换运算的优先级高于算术运算
33.C语言中,对于存储类型为[C]的变量,只有在使用它们时才占用内存单元
A. static和auto
B.register和extern
C. auto和register
D. register和static

34.对于数组a,正确的定义为[C]
A. int a(10) B.int n=10,a[n]
C.#defind SIZE 10 D. int n; n=10;
int a[SIZE] int a[n];
35.合法的字符常量是[C]
A. ’\ 0268’ B.’xy’
C.’\x8c’ D.” \n ”

36.以下[D]是正确的常量:
A. E-5 B.1E5 .1
C.’a12’ D. 32766L

37.合法的字符常量是[B]
A. ’好’ B.’\\’
C.’\x41’ D.” A ”

27.合法的常量是[B]
A.314.15e2.0 B. – .0314 e –2
C. – e –2 D.’\xah’
28.合法的常量是[B]
A.2e3.5 B. – .5 e –3
C. – e –3 D.’\xfg’

29.合法的字符常量是[C]
A. ’\ 084’ B.’ab’
C.’\x4a’ D.” \0 ”

30.字符串 ”m \ x4a \ \ \ np \ 102q”的长度是[B]字节
A. 16 B.7 C.15 D. 9
31.定义数组:
char s[ 20]= ”m \ x4a \ \ \ np \ 102q”
则分配给数组的存储空间是[A]字节
A. 8 B.15 C.7 D. 20

32 .若有定义:char s [10 ]=”%d\ 0 a\ 101”;则 strlen ( s ) 的值为[C]
A. 10 B.9 C. 2 D. 无答案
?
”%d\ 0 a\ 101”存放在内存占多少字节? 6
38 .以下程序段运行后屏幕输出为[B]:
char s[ ]=“abc\0def”;
printf(“%d,”,strlen(s));
printf(“%s”,s);
A. 8,abc B.3 ,abc
C.7,abcdef D.3,abcdef

39.以下程序段运行后屏幕输出为[B]:
char s[ ]=“abcdef”;
char t[ ]=“xyz”;
strcpy(s,t);
printf(“%c”,s[2]);
A. c B.z C.\0 D. d
40. ”a” 在内存中以[B]个字节存放
A. 1 B.2 C.8 D. 16
‘\0’ 在内存中以[A]个字节存放
A. 1 B.2 C.8 D. 16

41.pr

intf (”%d,%d,%d\n”,010,0x10,10);输出结果是[D]
A. 10,10,10 B.16,8,10
C.无答案 D. 8,16,10

42.下列运算符的优先级按从高到低的顺序是[C]
A. << + && !=
B. != << + &&
C. + << != &&
D. + != << &&

43.已知a=10,b=20,则表达式 !aA. 真 B. 假
C. 1 D.0
44.若有定义int x;下面与赋值语句x=x%2= =0?1:0;不等价的if语句是[B]
A. if(x%2!=0) x=0; else x=1;
B. if(x%2) x=1; else x=0;
C. if (x%2= =0) x=1; else x=0;
D. if(x%2) x=0; else x=1;

45 .以下不正确的if语句是[C]:
A. if(x==y)x+=y;
B.if(x>y&&x!=y); x+=y;
C.if (x!=y)scanf(“%d”,&x) else canf(‘%d”,&y);
D.if(x46.若有定义:int i,j,k;float x,y;
以下[C ]是不合法的赋值语句:


A. ++i ; B.k = x = = y ;
C.x = x+y=1; D.k= (i = j =0 ) ;


以下[C]是正确的表达式



A. x%5 B.(i+j)++
C.B=(float)i*(x=3) D. x= --i=j
47. 下面叙述正确的是[B ]:
A.2/3与2.0/3.0等价
B.(int)2.0/3 与2/3等价
C.++5与6等价
D. ‘A’与”A”

48.若有定义:int i=10,j=20,则表达式:
i>=j||iA. 1 B.变量i的值
C. 0 D.变量j的值
49.若有定义:float w=2.53; int a,b;则合法的switch语句是[C]
A.switch ((int)w) B. switch (a+b)
{case 2.0:printf(”*\n”); {case 2 printf(”*\n”);
case 2.53:printf(”**\n”);} default printf(”**\n”);}
C.switch (w+1.76) D.switch (a);
{case 2 :printf(”*\n”); {case ’49’rintf(”*\n”);
default : printf(”\n”); case 2:printf(”**\n”);
case ’49’:printf(”***\n”);} default : printf(”\n”);}

50.数学关系式 (x+1)≤(y++)≤z 可用C语言表达式[C]表示
A. (x+1) <= (y++) <=z
B. (x+1) <= (y++) AND (y++) <=z
C. (x+1) <= (y++) && (y++) <=z
D.(x+1) <= (y++) & (y++) <=z
51.已知int a=3,b=5;
则表达式a&&!b的值为[C]
A.3 B.2 C.0 D.1

则表达式a==0&&b!=1的值为[D]
A.3 B.5 C.1 D.0

则表达式!a||b的值为[A]
A.1 B.0 C.3 D.5
52.若有定义和语句:
char a=20,b=28,c; 则执行语句:
c =(a^b)<<2; 后c的值为[C]
A.2 B.5
C.32 D.100



则执行语句c =a^b<<2; 后c的值为[D]
A.2

B.5
C.32 D.100
53.对于无符号数的运算中,操作数左移一位相当于[B]
A.操作数除于2 B.操作数乘于2
C.操作数除于4 D.操作数乘于4

54.若有定义:int k,i=2,j=4;则表达式:
k=(++i)*(j- -)的值是[B]
A.8 B.12 C.6 D.9

55.若有定义:int x=1;则表达式
x / =x+= x * = x + 1的值为[B]
A. 0 B.1 C.2 D.3




56.若:int a=1,b=2,c=3,d=4,x=5,y=6;则表达式( x =a>b)&&(y=c>d)的值为[A]
A. 0 B.1 C.5 D.6
57.若有定义和语句:int a=4;float x=7.5 ,y=4.8 ;则表达式
a+(int)((int)(x)+y)>>(int)(x–y)的值为[C]





A. 1 B.2 C.3 D.4
58.若有定义和语句:
int a=1,b=2,c=3,x;
x=a & b && c< ‘c’ ;则x值是[C]




A. t B. f C.0 D.1

59.若有定义和语句:int p,q; p=q=1;p=q++,++p,p+2,p++,p+q;则p的值是[B]


A. 2 B. 3 C.4 D.5

60.若有定义:
float x=3.5; int z=8;则表达式:x+z%3/4的值是[C]
A. 3.75 B. 3 C.3.5 D.4

61.若有定义:int a,b;则表达式 a=4,b=3,a+b+1,a++,a+b+2的值为[C]
[38] A. 12 B.11
C.10 D.无答案
?
若有定义:int a,b;执行表达式 a=4,b=3,a=a+b+1,a++,a+b+2后a的值为多少?
9
62.若有定义:int a,b;则表达式 a=1,b=2,a=a+b,a++,a+b的值为[C]:
A. 4 B.5 C.6 D.7
?执行表达式 a=1,b=2,a=a+b,a++,a+b后a的值为[A]:
A. 4 B.5 C.6 D.7

63.若有定义:float a=1.0,b=2.0,c=3.0;则表达式 1/2*(a=a+b+c)的值为[C]
A. 3.0 B.3 C.0.0 D.错误
则表达式 a%2*(a=a+b+c)的值为[D]
A. 3.0 B.3 C.0.0 D.错误
64.已知char a=‘R’; 则正确的赋值表达式是[A]:
A.a=(a++)%4 B.A+2=3
C.a+=256- - D.a=‘\078’

65.下面程序的输出结果是[C]
main()
{int k=65;
printf(”%d,%c,%o,%x\n ”,k,k,k,k);}
A. 65,65,101,41 B. 65,65,0101,0x41
C. 65,A,101,41 D. 65,A,0101,0x41
?用”%o,%x”控制输出的结果不带前导”0”和”0x”

66.下面程序的输出结果是[C]
main()
{int k=17;
printf(”%d,%o,%x\n ”,k,k,k);}


A. 17,17,17 B. 17,021,0x11
C. 17,21,11 D. 17,0x11,021
?
用”%o,%x”控制输出的结果不带前导”0”和”0x”
67.下面程序的输出结果是[C]
main()
{double d=3.2 ;int x,y ; x=1.2 ;
y=(x+3.8)/5.0 ;y=y*d ;
printf(”%d\n”,y);}


A. 3

B. 3.2 C.0 D. 3.07

68. 语句printf(”%c,%d”,’A’+’6’-’3’, ’A’+’6’-’3’));
的输出结果是[B]
A. 68,D B. D,68 C.67,C D. C,67
69.若有定义:int a=1,b=2,c=3;则语句
++a||++b&&++c运行后,b的值为[C]
A.0 B.1 C.2 D.3

70.若有定义:int x,y;则语句
for(x=0,y=0;(y!=123)&&(x<4);x++)y++;中的“y++”被执行了 [A]次
A.4 B.0 C.123 D.3
71.定义int a,b,c; 则执行下面语句后 :
a=b=c=1;++b && ++c | | ++a;




a值为[A]:
A. 1 B. 2 C. 0 D. 错误
b值为[C]:
A. 0 B. 1 C. 2 D. 错误
c值为[B]:
A. 0 B. 2 C. 1 D. 错误
72.若定义int m,n,x;则执行下面语句后, m=6;n=5;x= – –m= =n++?– –m :++n ;
x值为[C]:
A. 7 B. 6 C. 4 D. 5
m值为[B]:
A. 5 B. 4 C. 6 D. 7
n值为[C]
A. 7 B. 5 C. 6 D. 4

73.以下叙述正确的是[C]
A. do-while 语句构成的循环不能用其他语句构成的循环来代替
B. do-while 语句构成的循环只能用break语句退出
C. do-while 语句构成的循环,当while后的表达式的值为0时结束循环
D. do-while 语句构成的循环,当while后的表达式的值为非0时结束循环
74.对于整形变量x,与while ( !x ) 等价的是[B]
A. while (x =0) B. while (x = =0)
C. while (x !=0) D. while (~x)
!x 值非0时 x值的可能范围:0
!x 值为0时 x值的可能范围:非0

75.printf(“a\bre\’hi\’y\\\bou\n”);
输出结果是[C]
A.a\bre\’hi\’y\\\bou\n B.a\bre\’hi\’y\\\bou\
C.re’hi’you D.无答案
76.while ( !x )中 !x 与下面条件[C]等价

A. x !=1 B. x= = 1
C. x = =0 D. x !=0
考虑:
!x 值非0时 x值的可能范围:0
!x 值为0时 x值的可能范围:非0
77.若有定义:
int x=1234,y=123,z=12;
则语句printf(“%4d+%3d+%2d”,x,y,z);运行后的结果是: [ D]
A.123412312
B. 12341234123412341231231231212
C. 1234+1234+1234
D. 1234+123+12
78.使用共用体union的目的是: [ D]
A.将一组相同数据类型的数据作为一个整
体,以便程序中使用
B.将一组相同数据类型的数据作为一个整
体,以便其中的成员共享同一存储空间
C.将一组相关数据作为一个整体,以便程序
中使用
D.定义一组数据,以便其中的成员共享同一
存储空间
79.若程序中含有定义:


struct abc { int x;int y;}
struct abc s1,s2;
则[C]
A.能编译、链接、运行
B.能编译、链接,但不能运行
C. 编译时出错
D.能编译、但链接出错
80.若有定义和语句:
int x ;float y ;char z[10] ,c ;
scanf (”%3d%f%3s%c” ,&x,&y,z,&c);
执行时输入12345└┘└┘└┘book└┘$↙ 则
x的值是[A]:
A.123 B. 45 C. 12345 D. 无答案
y的值是[B]:
A.123.0 B. 45 C. 45.0 D.无答案
z的值是[B]:
A.└┘└┘└┘ B. boo C. book D.无答案
c的值是[C]
A.$ B.└┘ C. k D.无答案

81.若有定义double a;将一个数值输入给a,正确的函数调用是[ D]
A.scanf(“%ld”,&a);
B. scanf(“%d”,&a);
C. scanf(“%7.2f”,&a);
D. scanf(“%lf”,&a);

82.getchar()函数的功能是从终端输入[ D]
A.一个整形变量值
B.一个实形变量值
C. 多个字符
D. 一个字符
83.若执行下面程序时输入pen↙
book↙ 则结果是[C]
#include
#include
main()
{char a1[5],a2[5];scanf(”%s”,a1);gets(a2);
puts(a1);puts(a2);printf(”%d\n”,strlen(a2));}

A. pen B. pen book C. pen D.无答案
book
4 0 0
84.若执行下面程序时输入
Good Bye!↙
Good Bye!↙则结果是[C]
#include
main()
{ char a1[10],a2[10];
scanf(”%s%s”,a1,a2);
puts(a1);puts(a2);}
A.Good B. Good Bye!
Good Good Bye!
C. Good D. Bye!
Bye! Bye!
85.若执行下面程序时输入
Good Bye!↙
Good Bye!↙则结果是[B]
#include
main()
{ char a1[10],a2[10];
gets(a1);gets(a2);
puts(a1);puts(a2);}
A.Good B. Good Bye!
Good Good Bye!
C. Good D. Bye!
Bye! Bye!
86.若执行下面程序时输入aa└┘bb↙
cc└┘dd↙ 则结果是[C]
#include
main()
{ char a1[5],a2[5],a3[5],a4[5];scanf(”%s%s”,a1,a2);gets(a3);gets(a4);
puts(a1);puts(a2);puts(a3);puts(a4);}
A. aa B. aa C. aa D. aa└┘bb
bb bb bb cc
cc└

┘dd cc dd
dd cc└┘dd
87.switch 语句中的各个case条件不能是[C]

A.字符常量
B.值大于等于零的整型常量表达式
C.一般表达式
D.值小于零的整型常量表达式

88.以下程序段的运行结果为[C]
main( )
{ int i,x,a[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++) x+=a[i][2-i];
printf(“%d”,x}
A.0 B.12 C.15 D.18

89.下面数组声明正确的是[A]
A.int a[5]={0};
B.int a[ 5]={0 1 2};
C.int a[5]=0;
D.int a[ ];
90.下面数组声明正确的是[A]
A.int a[10];
B.int n=10,a[n];
C. int N=10,a[N];
D.int n;scanf(“%d”,&n);int a[n];

91.若定义变量:
char x[ ][3]={‘a’,’b’,’c’,’d’,’e’,’f’};
char (*p)[3]=x;
则以下程序段的运行结果是[D]:
p++;
printf(“%c”,**p);
A.a B.b C. c D.d
92.下面数组定义中正确的是[D]
A.int a[2][3]={1,2,3,4,5,6,7};
B.int a[ ][ ]={{1,2,3},{4,5,6},{7,8,9}};
C. int a[2][ ]={1,2,3,4,5,6};
D.int a[ ][4]={6};

93.已知int a[10];则对a数组元素引用不正确的是[A]:
A.a[10]
B.a[3+5]
C. a[10-10]
D.a[5]
94.如下程序段执行以后,z的值为[D]:
int x=1,y=2,z=4;
if (x>=1 )
if ( x>y )
if ( y>z ) z=x+y;else z=x-y ;




A. -1 B. 0 C.3 D. 4
95.以下程序运行后,屏幕输出[D]:
#include
int a=2,b=3;
int max(int a,int b)
{ int c; c=a>b?a:b; return(c);}
main()
{ int a=4;
printf(“%d”,max(a,b));}
A. 2,3 B. 2 C. 3 D. 4
96.若有定义和语句:
int a,b,c;a=b=1;
c=(++a>0) ?5:(++b>0)?6 :7;
printf(”%d%d%d\n”a,b,c);
则输出结果是[C]




A.227 B.126
C.215 D. 无答案
97.以下程序运行后,屏幕输出[B]:
#include
void f(int i)
{ int a=2;
a=i++;
printf(“%d”,a);}
main()
{ int a=1,c=3;
f ( c );
a=c++;
printf(“%d”,a);}
A. 4,3 B.3,3 C.4,5 D. 3,5
98.以下程序运行后,屏幕输出[A]:
main()
{ int a[4][4]={0,1,2,0,1,0,0,4,2,0,0,5,0,4,5,0};
f(a);}
int f(int a[4][4])
{ int j;
for(j=0;j<4;j++)
printf("%2d",a[2][j]);}
A. 2 0 0 5 B.1 0 0 4
C.0 1 2 0 D.0 4 5 0
99.若有定义和语句:
int a,b,c;a=b=c=0;
0>1?a++:1>0 ?b++ :c++ ;
printf(”%d%d%d\n”a

,b,c);
则输出结果是[A]




A.010 B.110 C.111 D. 无答案
100.以下程序运行后,a的值为[C]:
main( )
{ int a,b;
for( a=1,b=1; a<=100;a++)
{ if( b>=20)break;
if( b%3= =1){ b+=3;continue;}
b-=5;
}
}
A. 101 B. 100 C. 8 D.7
101.若有定义和语句:int i=10;
switch ( i )
{ case 9:i+=1;
case 10:i+=1;
case 11:i+=1; break ;
case 12:i+=1;
default :i+=1;}
则i的值是[C]
A. 14 B. 13
C. 12 D.无答案
102.下面程序的输出结果是[C]
main ( ){ int i,a,b,c,d,e;
for (i=1;i<=5;i++) { a = b = c = d = e = 0;
switch ( i ) {case 1: a=1;
case 2: b=2; cotinue;
case 3: c=3;
case 4: d=4; break;
case 5: e=5;}
printf( ”%d%d%d%d%d”,a,b,c,d,e ) ;} }
A.10000 B. 12000 C. 00340 D. 无答案
02000 02000 00040
00300 00340 00005
00040 00040
00005 00005
103.以下程序中,执行了[C]次循环:
#define N 2
#define M N+1
#define NUM (M+1)*M/ 2
main()
{ int i,n=0;
for(i=0;iprintf(“%d\n”,n);}
A. 5 B. 6 C.8 D.9
104.下面程序的输出结果是[B]
#define MA(x) x*(x-1)
main( )
{int a=1,b=2,j;j=1+a+b;
printf(”%d,%d\n”,MA(1+a+b),MA(j));
}



A. 8,8 B. 8,12
C. 12,12 D.无答案
105.以下各种叙述,正确的是[B] :
A.”#define PRICE=30”定义了与30等价的符号常量
PRICE
B.预编译处理命令行都必须以”#”开头
C.宏名只能包含大写和数字字母
D.在程序的一行上可以写多个有效的宏命令

106.标准函数fgets(s,n,f)的功能是[B] :
A.从文件f中读取长度为n的字符串存入指针s所指
的内存
B.从文件f中读取长度不超过n-1的字符串存入指针s所指的
内存
C.从文件f中读取n个字符串存入指针s所指的内存
D.从文件f中读取长度为n-1的字符串存入指针s所指的内存
107.若有定义:int i ,j ;
则 循环语句:
for (i=0,j=0;i=1;i++,j++) ;是[D]



A.循环结束条件不合法
B. 循环1次

C.能够正常停止循环
D.死循环
108.若有定义和语句:
int i ;for (i=1;i<=3;i++) ;
printf(”%d”,i ) ;
则输出结果是[C]

A.123 B.3
C.4 D. 无答案
109.与下述程序段不等价的是[C]
if ( a<=b ) x=1;else y=2;
if ( a>b )printf(“****y=%d\”,y);
else printf(“#####x=%d\n”,x);
A. if ( a<=b ) {x=1;printf(“#####x=%d\n”,x);}
else { y=2;printf(“****y=%d\”,y);}
B. if (a>b) { y=2;printf(“****y=%d\”,y);}
else { x=1;printf(“#####x=%d\n”,x);}
C. if(a<=b)x=1;printf(“#####x=%d\n”,x);
else y=2;printf(“****y=%d\”,y);
D. if ( a<=b ) x=1;else y=2;
if ( a<=b ) printf(“#####x=%d\n”,x);
else printf(“****y=%d\”,y);
110.下列程序段执行结果为[C] :
for (i=1;i<=2;i++) ;
i++;
printf(”%d”,i++ ) ;
A.2 B.3 C.4 D. 5

111.以下程序段执行后x的值为[D]:
int a[ ]={1,2,3,4,5,6,7,8};
int i,x,*p;
x=1;
p=&a[2];
for( i=0;i<3;i++) x*=*(p+i);
A.不确定 B.24 C.120 D. 60

112.以下循环体的执行次数是[C]
main()
{ int i,j;for(i=0,j=1;i<=j+1;i+=2,j--)
printf(“%d\n”,i);}



A.3 B. 2 C.1 D.0

113.以下循环体的执行次数是[C]
main()
{ int i,j;for(i=0,j=1;i<=j+1;i+=1,j- =1)
printf(“%d\n”,i);}



A.4 B.3 C.2 D.1
114.若有定义: int k ,i;
下面会出现死循环的程序段是[A]
A.k=3379;
while (k%2= = k++%2 ) k++;
B.i=100;
while (1 )
{i= i%100+1 ;
if (i>=99)break;}
C.k=0;
do {++k;} while (k>0);
D. for ( ;(x=getchar())!=‘\n’;);
115.若有定义: int k ;
下面不会出现死循环的程序段是[C]

A.k=3379;
while (k%2= = k++%2 ) k++;
B.k=100;
while (1 ){k = k%100+1 ;
if (k>100)break;}
C.k=0;
do {++k;} while (k>0);
D. for ( ;;);
116.下面程序的输出结果是[A]
main()
{double d;float f;long l;int i;i=f=l=d=20/3.0;
printf(”%d,%ld,%f,%f\n”,i,l,f,d);}



A.6,6,6.000000,6.666667
B.6,6,6.666667,6.666667
C. 6,6,6.000000,6.000000
D.6,6,6.666667,6.000000
117.下面程序的输出结果是[D]
main( )
{ int i;
for (i=1;i<=5;i++)
{ if (i%2 ) printf(”*” )else continue ;
printf(”#”);}
printf (”$\n” );}

A. *#*#$

B. #*#*#*$
C. #*#*$ D. *#*#*#$
118.下面程序的输出结果是[C]
main ( )
{ int k,j,x=0;
for (k=1;k<=2;k++)
{ x++;
for(j=k;j<=5;j++)
{ if ( j%3= = 0) break;
x++;}
x++;}
printf (”%d\n”,x);}
A.13 B.3 C.7 D.无答案
119.下面程序的输出结果是[A]
main( )
{ printf(“%d\n”,fac(5));}
fac(int n)
{ int s;
if(n==1) return 1;
else return n*fac(n-1);}
A. 120 B. 60 C. 6 D. 1
120.下面程序的输出结果是[C]
main( )
{ int x=1,y=0,a=0,b=0 ;
switch (x ) { case 1:switch (y )
{ case 0:a++;break ;
case 1:b++;break;}
case 2 :a++;b++;break;
case 3 :a++;b++;}
printf( ”a=%d,b=%d\n”,a ,b) ;}
A. a=1,b=0 B. a=1,b=1
C. a=2,b=1 D. a=2,b=2
121.若有定义和语句:
int x=3;
do{printf(“%3d”,x– =2);}while (!(– –x));
则输出结果是[C]

A.└┘└┘1
B.└┘└┘3└┘└┘0
C.└┘└┘1└┘–2
D. 死循环
122.计算平方数时,不可能产生二义性的宏定义是[C]
A. #define SQR(x) x*x
B. #define SQR(x) (x)*(x)
C. #define SQR(x) ((x)*(x))
D. #define SQR(x) (x*x)
123.下面程序段的输出结果是[A]
int x=1;
do{printf(“%d,”,x– –);}while (!(– –x));
则输出结果是[C]

A. 1,
B. 1,0
C. 0,-1
D. 死循环
124.下面程序的输出结果是[C]
#include
int x,y ;
f( )
{ int y,a=25,b=10;
x=a+b;y=a-b;
return;}
main( )
{ int a=9,b=5;
x=a+b;y=a-b;
f( );
printf(”%d,%d\n”,x,y);}
A. 14,4 B. 35,15 C. 35,4 D.14,15

125.下面程序的输出结果是[C]
int x=1;
f( )
{static int i=2;int x=10;
x+= ++i ;printf(”%d,”,x);}
main()
{ int i;
for( i=1;i<4;i++){++x;f();}
printf(”%d\n”,x);}
A.13,17,22,4 B.13,14,15,15
C.13,14,15,4 D.无答案
126.下面程序的输出结果是[C]
main ( )
{int x=10,y=10,i;
for(i=0;x >8;y= ++i )
printf (”%3d%3d”,x––,y);}
A.10 1 9 2
B.9 8 7 6
C.10 10 9 1
D.10 9 9 0
127.若有定义和语句:
double r=99,*p=&r;
*p=r


则正确的叙述是[C]
A. 以上两处的*p 含义相同,都是给指针变量p赋值
B. 在“double r=99,*p=&r;”中的“*p=&r;”是把r的地址赋给p所指的存储单元
C. 语句“ *p=r;”取变量r的值放回r中
D. 语句“ *p=r;”把变量r的值赋给指针变量p

128.若有以下程序段,且0≤i<4, 0≤j<3,则不能正确访问a数组元素的是[D]:
int i,j,(*p)[3];
int a[ ][3]={1,2,3,4,5,6,7,8,9,10,11,12};
p=a;
A. *(*(a+i)+j) B. p[i][j]
C. (*(p+i))[j] D. p[i]+j

129.下面程序的输出结果是[D]
main( )
{ int a=100, *p;
p=&a;
*p+=a;
printf(”%d\n”,a+*p);}


A. 200 B. 400 C.600 D. 800
130. 若执行下面程序时输入book↙
books↙ 则结果是[C]
#include
main()
{ char a1[80], a2[80],*s1=a1, *s2=a2;
gets(s1);gets(s2);
if(!strcmp(s1,s2)printf( ”*” );
else printf( ”#” );
printf(”%d\n” ,strlen(strcat (s1,s2)));}

A. *8 B. #6 C. #9 D. *9
131.下面程序段的输出结果是[B]
int a=10, *p=&a;
printf(”%d\n”,++*p);
A. 10 B.11
C.变量a的地址 D.变量a的地址 +1

132.下面运算符优先级最高的是[D]
A. > B.|| C.&& D.+
下面运算符优先级最高的是[A]
A.++ B.+= C.|| D.!=
133.下面程序的输出结果是[C]
main( )
{ static char *str1=”123456” ;
static char *str2=”abcdef”;
*s1=*s2;printf( ”%s\n” ,s1);}



A.abcdef B.abcdef123456
C. a23456 D.123456
134.下面程序的输出结果是[B]
main ( )
{int j,x[3][3]={9,8,7,6,5,4,3,2,1},*p=&x [1][1];
for ( j=0;j<4;j+=2 ) printf (”%d”,p[ j ]);}

A. 52 B. 53
C. 51 D. 97
135.若有如下函数定义:
int fun(char *str)
{ char *p=str;
while(*p!=‘\0’) p++;
return(p-str);}
则以下语句执行后的输出结果是[A]:
printf (”%d\n”,fun(“student”));
A. 7 B. 8
C. 9 D. 10
136.下面程序的输出结果是[C]
main( )
{int a[5]={2,4,6,8,10},*p,**k;p=a;k=&p;
printf(”%d,”,*(p++));
printf(”%d\n”,**k);}

A. 4,4 B.2,2
C. 2,4 D. 无答案
137.下面程序的输出结果是[C]
void sub1 (int * x, int y,int z)
{ * x = y – z;}
void sub2 (int x, int y,int z)
{ x = y – z;}
main ( )
{ int a=0, b=0;
sub1( &a, 10,3 );sub2( b, 10,3 );
printf( ”%d,%d\n” ,a,b) }
A. 7,7 B. 0,7
C. 7,0

D. 0,0
138.若有定义: char c[7]= ”fuzhou” ,*s=c;int i;则下面中错误的是[C]
A.printf ( ”%s\n” ,s ) ;
printf ( ”%s\n” ,c ) ;
B.for ( i=0;i<=5;i++) printf ( ”%c\n”,c[i ] ) ;
for ( i=0;i<=5;i++) printf ( ”%c\n”,s[i ] ) ;
C.printf ( ”%s\n” ,*s ) ;
printf ( ”%s\n” ,*c ) ;
D.gets( c);
gets(s);

139.若有定义:char *s=”student” ;则正确的叙述是[C]
A.s+2与s[2 ]等价
B.*s+2与s[2 ]等价
C.*(s+2) 与s[2 ]等价
D.s+2与*s[2 ]等价

140.对于基类型相同的两个指针变量之间,不能进行运算的是[C]:
A.< B.= C.+ D.-
见指针课件最后两页

相关主题
文本预览