C语言易错选择题错题集

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

1:设有定义:char p[]={'1','2','3'},*q=p;,以下不能计算出一个char型数据所占字节数的表达式是()。

A) sizeof(p)

B) sizeof(char)

C) sizeof(*q)

D) sizeof(p[0])

参考答案:A

【解析】根据题目中的定义可以知道sizeof(p),计算的是数组p中所有元素所占用的字节数,而不是char型数据所占字节数。

2:面向对象方法中,继承是指()。

A) 一组对象所具有的相似性质

B) 一个对象具有另一个对象的性质

C) 各对象之间的共同性质

D) 类之间共享属性和操作的机制

参考答案:D

【解析】继承是面向对象的方法的一个主要特征,是使用已有的类的定义作为基础建立新类的定义技术。广义的说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们,所以说继承是指类之间共享属性和操作的机制。

3:若变量x、y已正确定义并赋值,以下符合C语言语法的表达式是

A) x+1=y

B) ++x,y=x--

C) x=x+10=x+y

D) double(x)/10

参考答案:B

【解析】A选项中不能将变量y赋给表达式,C选项中错误与A选项一样,D选项中强制类型转换表达式应写成(double)x/10。

4:有以下程序

#include

main()

{ FILE *pf;

char *s1="China", *s2="Beijing";

pf=fopen("abc.dat","wb+");

fwrite(s2,7,1,pf);

rewind(pf); /*文件位置指针回到文件开头*/

fwrite(s1,5,1,pf);

fclose(pf);

}

以上程序执行后abc.dat文件的内容是

A) China

B) Chinang

C) ChinaBeijing

D) BeijingChina

参考答案:B

【解析】本题考查文件操作函数,fwrite和rewind函数,题目中先是将s2字符串写入adc.dat中,然后将写指针回到文件开头,然后写入s1字符串,那么s1字符串就将前五个字符覆盖,所以最终结果为Chinang,选项B正确。

5:有以下程序

#include

void f( int *q )

{ int i=0;

for ( ;i<5; i++) (*q)++;

}

main()

{ int a[5] ={1,2,3,4,5}, i;

f(a);

for (i=0;i<5; i++) printf("%d,", a[i]);

}

程序运行后的输出结果是

A) 6, 2, 3, 4, 5,

B) 2, 2, 3, 4, 5,

C) 1, 2, 3, 4, 5,

D) 2, 3, 4, 5, 6,

参考答案:A

【解析】本题考查的是函数的地址调用,将数组名作为数组首地址进行传递,然后取数据元素值进行加1运算。因此A选项正确。6有以下结构体说明、变量定义和赋值语句

struct STD

{ char name[10];

int age;

char sex;

} s[5],*ps;

ps=&s[0];

则以下scanf函数调用语句有错误的是

A) scanf("%s",s[0].name);

B) scanf("%d",&s[0].age);

C) scanf("%c",&(ps->sex));

D) scanf("%d",ps->age);

参考答案:D

【解析】本题考查结构体的相关知识,题目中需要输入一个变量,scanf要求参数为指针,而D选项中ps->age为一个变量,不是指针,所以错误。

6:若有以下语句

typedef struct S

{ int g; char h; } T;

以下叙述中正确的是

A) 可用S定义结构体变量

B) 可用T定义结构体变量

C) S是struct 类型的变量

D) T是struct S类型的变量

参考答案:B

【解析】本题考查typedef重新声明一种结构体类型,那么T为结构体类型,而不是结构体变量,所以B选项正确。

7:有以下程序

#include

#include

struct A

{

int a;

char b[10];

double c;

};

struct A f(struct A t);

main()

{

struct A a={1001,"ZhangDa",1098.0};

a=f(a);

printf("%d,%s,%6.1f\n",a.a,a.b,a.c);

}

struct A f(struct A t)

{

t.a=1002;

strcpy(t.b,"ChangRong");

t.c=1202.0;

return t;

}

程序运行后的输出结果是

A) 1002,ZhangDa,1202.0

B) 1002,ChangRong,1202.0

C) 1001,ChangRong,1098.0

D) 1001,ZhangDa,1098.0

参考答案:B

【解析】本题考查结构体变量的引用以及作为函数参数,题目虽然看似复杂,其实比较容易,f函数的参数是结构体变量,然后对参数重新赋值并返回,所以该题目的答案为B选项。

8:有以下程序

#include

void fun(int *s, int n1, int n2)

{

int i, j, t;

i=n1; j=n2;

while( i

{

t=s[i]; s[i]=s[j]; s[j]=t; i++; j--;

}

}

main()

{

int a[10]={1,2,3,4,5,6,7,8,9,0}, k;

fun(a,0,3); fun(a,4,9); fun(a,0,9);

for(k=0;k<10;k++)

printf("%d", a[k]);

相关文档
最新文档