设 char ch; 以下不正确的赋值语句是_____。
选择一个答案
| A. ch=68; | |
| B. ch="\\\\"; | |
| C. ch='\\xef'; | |
| D. ch='\\123'; | |
在 C 语言中int, long, unsigned 和 char这四种类型数据的转换规律是_____。
选择一个答案
| a. char->int->long->unsigned | |
| b. int->unsigned->long->char | |
| c. char->int->unsigned->long | |
| d. char->unsigned->long->int | |
设a=2,b=3;则表达式a^b>>2的值是_____。
选择一个答案
| A. 00000100 | |
| B. 00000011 | |
| C. 00000110 | |
| D. 00000010 | |
以下关于源程序与目标程序的关系,不正确的是 。
选择一个答案
| A. 用C语言编写 的源程序需要经过编译程序编译为目标程序 | |
| B. 不同高级语言的编译器应该是一样的,都负责将源程序编译为目标程序 | |
| C. 用机器语言编写的源程序就是目标程序 | |
| D. 用汇编语言编写的源程序需要经过汇编程序汇编为目标程序 | |
C语言中,“\x5d”在内存中占用的字节数是____。
选择一个答案
下列符号中能用作C标识符的是____。
选择一个答案
| A. break | |
| B. 2xy | |
| C. _abc | |
| D. &a3 | |
有如下程序段:
int a1,a2;
char c1,c2;
scanf("%d%c%d%c",&a1,&c1,&a2,&c2);
若要求 a1,a2,c1,c2 的值分别为 10 , 20 , A , B 正确的数据输入是______。
选择一个答案
| A. 10 A20B | |
| B. 10 A 20 B | |
| C. 10A20 B | |
| D. 10A 20B | |
C语言的短整型数值在计算机中占用的字节个数是_______。
选择一个答案
若有下列定义和语句: double r=1 , *p=&r; *p=r; 则下列说法正确的是 __ 。
选择一个答案
| A. 在double r=1,*p=&r; 把r的地址赋给了p所指的存储单元 | |
| B. 语句*p=r; 把变量r的值赋给指针变量p | |
| C. 以上两处的*p含义相同,都说明给指针变量p赋值 | |
| D. 语句*p=r; 把变量r的值放回r中 | |
以下程序段执行后,变量k的值是 __。
int arr[10], i, k = 0;
for ( i = 0; i < 10; i++) arr[i] = i;
for ( i = 0; i < 4; i++) k += arr[i] + i;
选择一个答案
若有以下定义和语句,则选项中错误的语句是 __。
int a=4,b=3,*p,*q,*w;
p=&a; q=&b; w=q; q=NULL;
选择一个答案
| A. *p=*w; | |
| B. *p=b; | |
| C. w=p; | |
| D. *q=0; | |
以下能对一维数组a进行正确初始化的形式是 __。
选择一个答案
| A. int a[10]=(0,0,0,0,0); | |
| B. int a[10 ]={, ,1, ,2,3}; | |
| C. int a[10]={10*1}; | |
| D. int a[10]={ } | |
以下程序给数组所有元素输入数据,填入 __能完成该功能。
#include int main()
{
int array[5],i=0;
while(i<5)
scanf("%d __);
return 0;
}
选择一个答案
| A. &array[++i] | |
| B. array+(i++) | |
| C. &array[i+1] | |
| D. array+i | |
以下程序段有错,错误原因是 __。int main
{
int *p, i;
char *q, ch;
p=&i;
q=&ch;
*p=40;
*p=*q;
.....
}
选择一个答案
| A. *p中存放的是地址值,因此不能执行语句*p=40; | |
| B. q虽然指向了具体的存储单元,但该单元无确定值,所以执行语句*p=*q无意义 | |
| C. p和q的类型不一致,不能执行语句*p=*q | |
| D. q没有执行具体的存储单元,所以*q没有实际意义 | |
分数: 0.9/1 下列对指针p的操作,正确的是 。
选择一个答案
| A. int a[5]={ 1,2 ,3,4,5},*p=&a; *p=5 ; | |
| B. float a[5]; int *p=a; | |
| C. int a,*p=&a; | |
| D. int *p ; *p=2 ; | |
此题考查的是对指针的操作。答案 A 的错误在于,在定义了指针以后,并没有获得确定的地址,而通过 *p=2 向一个不确定的地址中写入内容是很危险的,将可能导致程序意外终止;答案 B 的错误在于,指针 p 的基类型是 int 型 ,数组 a 的基类型也是 int 型 ,但是 &a 的基类型是 int [5] ,所以 int *p=&a 不符合指针赋值类型需要一致的要求;答案 D 的错误是在于,指针 p 的基类型是 int 型 ,数组 a 的基类型却是 float 型 ,所以 int *p=&a 不符合指针赋值类型需要一致的要求;答案 C 正确,变量 a 是 int 型,则 &a 就是以 int 型为基类型的指针值,此答案表示指针 p 获得一个简单变量的地址而不是一维数组的起始地址。 以下程序段执行后,变量k的值是 __。
int arr[10], i, k = 0;
for ( i = 0; i < 10; i++) arr[i] = i;
for ( i = 0; i < 4; i++) k += arr[i] + i;
选择一个答案
若定义int m[10]={9,4,12,8,2,10,7,5,1,3},*p=m;下列哪一个表达式的结果与其他3个表达式的结果不同 __。选择一个答案
| A. sizeof(m) | |
| B. sizeof(p) | |
| C. sizeof(*p) | |
| D. sizeof(*m) | |
设 int s[10];*p=s; 以下不正确的表达式是 __。 选择一个答案
| A. s[2]=p[4]; | |
| B. s=p+s; | |
| C. *p=s[0]; | |
| D. p=s+5; | |
8 分数: 0.9/1 若int I=10; 执行下列程序后,变量I的正确结果是 __。
switch ( I ) {case 9: I++;
case 10: I++;
case 11: I++; break;
default: I++; }选择一个答案 A. 12
B. 10
C. 11
D. 13
.
分数: 0.7/1
.若已定义一个有返回值的函数,则调用该函数的叙述中错误的是 __ 。
选择一个答案
| A. 函数调用可以作为一个函数形参 | |
| B. 函数调用可以作为的语句存在 | |
| C. 函数调用可以出现在表达式中 | |
| D. 函数调用可以作为一个函数实参 | |
分数: 0.8/1
设有下列程序段:
static char b=2;
void Y
{ static float d=4;....... }
int a=1;
void X
{ int c=3; ...... }
关于程序段中各变量的属性,以下叙述中错误的是 __ 。
选择一个答案
| A. a是全局变量,函数X可以访问,函数Y不能访问 | |
| B. c是动态变量,函数X可访问,函数Y不可访问 | |
| C. d是静态变量,函数X和函数Y都可以访问 | |
| D. b是全局变量,函数X和函数Y都可以访问 | |
分数: 0.8/1 下面关于复合语句的描述,不正确的是 。
选择一个答案
| A. 复合语句可以定义自己的变量 | |
| B. 复合语句之内定义的变量在复合语句之外的本函数内仍然可以使用 | |
| C. 复合语句的变量和函数的局部变量可以同名 | |
| D. 复合语句是由大括号包含起来的一组语句 | |
14
分数: 0/1
若指针p已正确定义,要使p指向两个连续的字符型动态存储单元,不正确的语句是 。
选择一个答案
| A. p=(char *)malloc(2*sizeof(char)); | |
| B. p=(char *)malloc(2); | |
| C. p=(char *)calloc(2,sizeof(char)); | |
| D. p=2*(char*)malloc(sizeof(char)); | |
【解析】 此题主要考查 malloc 和 calloc 两个函数的调用形式。 malloc 函数只有一个参数,表示总共申请连续多少个字节; calloc 函数需要两个参数,第一个参数表示相同空间的个数,第二个参数表示每一个元素占几个单元。这两人函数的返回值都是 void * ,因此要进行强制类型转换。根据以上分析,以上答案 B 、 C 、A 都是正确答案,因为 char 类型的值只要一个字节,故两连续的字符型动态单元申请正确,与 B 答案其实是一样的。答案D 的错误在于未正确理解 malloc 函数其参数的意义。 分数: 0.8/1
若有以下程序 :
#include void f(int n);
int main()
{
void f(int n);
f(5);
return 0;
}
void f(int n)
{ printf("%d\\n",n); }
则以下叙述中不正确的是 __ 。
选择一个答案
| A. 若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f | |
| B. 若在主函数前对函数f进行说明,则在主函数和其后的其它函数中都可以正确调用函数f | |
| C. 对于以上程序,编译时系统会提示出错信息:提示对f函数重复说明 | |
| D. 函数f无返回值,所以可用void将其类型定义为无类型 | |
分数: 0.8/1 写出程序的运行结果。
#include void f(int n)
{ if
{ f(n/8);
printf(“%d”,n%8);
}
}
int main()
{
f(123);
return 0;
}
分数: 0.7/1
如果有定义:int x=1,y=2; int *const p=&x;,则下列语句中正确的是__________。
选择一个答案
| A. p++ | |
| B. *p=y | |
| C. scanf(”%d”,*p); | |
| D. p=&y; | |
【解析】 此题考查的是 const 常类型的各种表示的含义及要求。此题中, int *const 表示指针 p 不允许改变,但是 p 所指向的内容可以改变,因此,答案 A 和 B 试图改变 p 指针的值是错误的;答案 D 本身 scanf 函数的参数就有错,第二个参数不应该是 *p ;答案 C 是改变 p 所指向的内容,因此是正确的。 分数: 0.9/1
如下定义: int a=5,b=3; const int *p=&a; 下列语句合法的是 。
选择一个答案
| a. p=&b; | |
| b. p=&b; *p+=2; | |
| c. *p=2; | |
| d. p--; | |
如下定义: int a=5,b=3; int *const p=&a; 下列语句合法的是 。选择一个答案
| A. p=&b; | |
| B. p--; | |
| C. *p=2; | |
| D. p=&b; *p+=2; | |
以下程序的输出结果是 _________ 。 #include int main
{
int b=5;
#define b 2
#define f(x) b*x
int y=3;
printf("%d,",f(y+1));
#undef b
printf("%d,",f(y+1));
#define b 3
printf("%d\\n",f(y+1));
return 0;
}
答案:
下载本文