c语言易错选择题错题集
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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]);