A) p是一个指向一维数组的指针变量 B) p是指针变量,指向一个整型数据
C) p是一个指向函数的指针,该函数的返回值是一个整型 D) 以上都不对
【1.58】设有说明int (*p)[4]; 其中的标识符p是 。 A) 4个指向整型变量的指针变量 B) 指向4个整型变量的函数指针
C) 一个指向具有4个整型元素的一维数组的指针
D) 具有4个指向整型变量的指针元素的一维指针数组
【1.59】已知:char s[10], *p=s, 则在下列语句中,错误的语句是 。 A) p=s+5; B) s=p+s; C) s[2]=p[4]; D) *p=s[0];
【1.60】已知:char s[100]; int i; 则引用数组元素的错误的形式是 。 A) s[i+10] B) *(s+i) C) *(i+s) D) *((s++)+i)
【1.61】已知:char s[6], *ps=s; 则正确的赋值语句是 。
A) s=\ B) *s=\ C) ps=\ D) *ps=\ 【1.62】已知:int a[4][3]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; int (*ptr)[3]=a, *p=a[0];
则以下能够正确表示数组元素a[1][2]的表达式是 。
A) *(*(a+1)+2) B) *(*(p+5)) C) (*ptr+1)+2 D) *((ptr+1)[2])
【1.63】已知:int a[ ]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}, *p=a; 则值为3的表达式是 。 A) p+=2, *(p++) B) p+=2, *++p C) p+=2, (*p)++ D) p+=2, ++*p
【1.64】已知:int a[]={1, 2, 3, 4}, y, *p=a; 则执行语句y = (*++p)--; 之后, 数组a各元素的值变为______。
A) 0, 1, 3, 4 B) 1, 1, 3, 4 C) 1, 2, 2, 4 D) 1, 2, 3, 3 变量y的值是____。
A) 1 B) 2 C) 3 D) 4
【1.65】已知:int a[ ]={1, 3, 5, 7}, y , *p= a; 为使变量y的值为3,下列语句正确的是____。 A) y=++*p++; B) y=++(*p++); C) y=(++*p)++; D) y=(*++p)++;
【1.66】已知:int x[ ]={ 1, 3, 5, 7, 9, 11 }, *ptr=x; 则能够正确引用数组元素的语句是 。 A) x B) *(ptr--) C) x[6] D) *(--ptr)
【1.67】函数的功能是交换变量x和y中的值,且通过正确调用返回交换的结果。能正确执行此功能的函数是 。
A) void funa (int *x, int *y) B) void funb (int x, int y) { int *p; { int t;
p=x; *x=*y; *y=*p; t=x; x=y; y=t; } }
C) void func (int *x, int *y) D) void func (int *x, int *y)
{ *x=*y; *y=*x; { *x=*x+*y; *y=*x-*y; *x=*x-*y; } } 【1.68】有定义如下: struct sk { int a; float b; }data , *p;
如果 p=&data; 则对于结构变量data的成员a的正确引用是____。
6
A)(*).data.a B) (*p).a C) p->data.a D) p.data.a 【1.69】已知: struct st { int n;
struct st *next; };
static struct st a[3]={1, &a[1], 3, &a[2], 5, &a[0]}, *p; 如果下述语句的显示是2,则对p的赋值是____。 printf(\
A) p=&a[0]; B) p=&a[1]; C) p=&a[2]; D) p=&a[3]; 【1.70】已知: struct person
{ char name[10]; int age;
}class[10]={\ 下述表达式中,值为72的一个是____。
A) class[0]->age + class[1]->age+ class[2]->age B) class[1].name[5] C) person[1].name[5] D) clase->name[5] 【1.71】已知: struct { int i; char c; float a; }test;
则sizeof(test)的值是 。 A) 4 B) 5 C) 6 D) 7 【1.72】已知: union { int i; char c; float a; }test;
则sizeof(test)的值是 。 A) 4 B) 5 C) 6 D) 7 【1.73】已知: union u_type { int i; char ch; float a; }temp;
现在执行\的结果是 。 A) 266 B) 256 C) 10 D) 1 【1.74】若有以下程序段:
7
struct dent { int n; int *m; };
int a=1, b=2, c=3;
struct dent s[3] = { {101, &a}, {102, &b}, {103, &c} }; struct dent *p=s;
则以下表达式中值为2的是 。
A) (p++)->m B) *(p++)->m C) (*p).m D) *(++p)->m
【1.75】若有以下说明语句,则对结构变量pup中sex域的正确引用是 。 struct pupil
{ char name[20]; int sex; }pup, *p; p=&pup;
A) p.pup.sex B) p->pup.sex C) (*p).pup.sex D) (*p).sex 【1.76】以下对结构变量stul中成员age的非法引用是 。 struct student { int age; int num; }stu1, *p; p=&stu1;
A) stu1.age B) student.age C) p->age D) (*p).age 【1.77】若有以下定义和语句: union data { int i; char c; float f; }a; int n;
则以下语句正确的是 。A) a=5; B) a={2, 'a', 1.2}; C) printf(\ D) n=a; 【1.78】已知 enum week {sun, mon, tue, wed, thu, fri, sat}day; 则正确的赋值语句是____。 A) sun=0; B) san=day; C) sun=mon; D) day=sun;
【1.79】已知 enum color {red, yellow=2, blue, white, black}ren; 执行下述语句的输出结果是____。
printf(\ A) 0 B) 1 C) 3 D) 4
【1.80】下述关于枚举类型名的定义中,正确的是____。
A) enem a={ one, two, three }; B) enem a { one=9, two=-1, three };
C) enem a={\ D) enem a {\ 【1.81】已知宏定义 #define N 3
#define Y(n) ((N+1)*n)
执行语句z=2*(N+Y(5+1)); 后,变量z的值是____。 A) 42 B) 48 C) 52 D) 出错
8
【1.82】已知宏定义 #define SQ(x) x*x, 执行语句printf(\10/SQ(3)); 后的输出结果是____。
A) 1 B) 3 C) 9 D) 10 【1.83】已知宏定义如下: #define PR printf #define NL \#define D \#define D1 D NL
若程序中的语句是 PR(D1, a); 经预处理后展开为____。 A) printf(%d\\n, a); B) printf(\ C) printf(\ D) 原语句错误 【单项选择题参考答案】 【1.1】答案: A
注释:int是C语言的关键字 【1.2】答案: B 【1.3】答案:A 【1.4】答案:B
注释:include是预处理命令; scanf是函数名; type不是C语言的关键字。 【1.5】答案:D 【1.6】答案:D 【1.7】答案:A 【1.8】答案:A
注释:int型表示整数的范围是-32768~32767。 【1.9】答案:D
注释:整型常量-1在计算机中表示为补码1111 1111 1111 1111,用十六进制显示这个数时,最左边的1不会被解释为符号位,而是与右边其它位共同转换为十六进制数。 【1.10】答案:B
注释:长整型数32768在计算机内的表示是1000 0000 0000 0000,以一般整型进行输出时,此数恰是-32768的补码。 【1.11】答案:C
注释:长整型数65539在计算机内的表示是0001 0000 0000 0000 0011,以一般整型进行输出时,仅将右侧16位二进制数转换为十进制数。 【1.12】答案:A
注释:C语言中,int型的负数是采用补码表示的。 【1.13】答案:D 【1.14】答案:C
注释:变量c是字符型,可用字符常量为它赋值。字符常量必须用单引号括起来,所以B是错误的; 在单引号或双引号内的反斜线'\\'用于表示转义字符,A选项在无引号时使用反斜线是错误的; C选项单引号内出现反斜线表示它与后面的数字组成一个转义字符; 单引号只允许括起一个字符,D选项在单引号内出现4个字符,是错误的。 【1.15】答案:C 【1.16】答案:D 注释:空字符和空格符是不同的两个字符,空格符的ASCII码值是32,空字符的ASCII值是0。 【1.17】答案:A 【1.18】答案:B
9
【1.19】答案:A 【1.20】答案:C 【1.21】答案:B
注释:单纯从C语言语法来说,选项B、C都是正确的,但是选项C中第一个运算的两个对象都是整型常数,其结果也是整型数0, 最后的运算结果也就是0了。 【1.22】答案:C 【1.23】答案:A
注释:将条件表达式增加一个括号,此式变为a
注释:当通过一个运算对象即可决定逻辑运算&&的结果时,则对另一个运算对象不做处理。 【1.27】答案:D 【1.28】答案:B
注释:数组元素在内存中按行排列,此数组的前3个元素的值分别是3、2、1,表达式中虽然数组下标的写法似乎每行有3个元素,和定义时的3行2列不一致,但是C语言引用数组元素时是根据数组的首地址和给出的下标进行运算决定元素的地址。题中表达式引用了数组前3个元素。
【1.29】答案: A 【1.30】答案:C 【1.31】答案:C 【1.32】答案:D 【1.33】答案:D 【1.34】答案:C 【1.35】答案:D 【1.36】答案:C
注释:在C语言中, 经常用一个变量来作为逻辑表达式,其含义就是:当变量的值不为0时关系成立。
【1.37】答案:D
注释:break语句仅可跳出switch语句,不会跳出while循环,这是一个死循环。 【1.38】答案:A 【1.39】答案:C 【1.40】答案:C 【1.41】答案:D
注释:当除数y为0时,程序发生溢出错误。 【1.42】答案:C 【1.43】答案:A 【1.44】答案:C 【1.45】答案:C
注释:答案C的赋值号左侧是数组s的首地址,是一个常量,赋值号右侧是一个字符串常量,不可能将一个字符串常量赋给一个地址常量。 【1.46】答案:D
注释:D选项缺少字符串结束标志。
10
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库《C语言程序设计》练习题(2)在线全文阅读。
相关推荐: