c语言将一个非零值判断为真,C语言易错选择题错题集

《C语言易错选择题错题集》由会员分享,可在线阅读,更多相关《C语言易错选择题错题集(8页珍藏版)》请在人人文库网上搜索。

1、1:设有定义:char p1, 2, 3,*qp; ,以下不能计算出一个char型数据所占字节数的表达式是()。 A)sizeof(p) B)sizeof(char) C)sizeof(*q) D)sizeof(p0) 参考答案:A 【解析】根据题目中的定义可以知道sizeof(p),计算的是数组p 中所有元素所占用的字节数,而不是char型数据所占字节数。 2:面向对象方法中,继承是指()。 A)一组对象所具有的相似性质 B)一个对象具有另一个对象的性质 C)各对象之间的共同性质 D)类之间共享属性和操作的机制 参考答案:D 【解析】继承是面向对象的方法的一个主要特征,是使用已有的类的定义作。

2、为基础建立新类的定义技术。广义的说,继承是指 能够直接获得已有的性质和特征,而不必重复定义它们,所以说继承是指类之间共享属性和操作的机制。 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+);。

3、 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*。

4、q ) inti=0; for (;i5; i+) (*q)+; main() inta5 =1,2,3,4,5, i; f(a); for (i=0;isex); D)scanf(%d,ps-age); 参考答案:D 【解析】本题考查结构体的相关知识,题目中需要输入一个变量,scanf要求参数为指针,而D选项中ps-age为一个变量,不是 指针,所以错误。 6:若有以下语句 typedefstructS intg;charh; T; 以下叙述中正确的是 A)可用S定义结构体变量 B)可用T定义结构体变量 C)S是struct 类型的变量 D)T是struct S类型的变量 参考答案:B 【解。

5、析】本题考查typedef重新声明一种结构体类型,那么T为结构体类型,而不是结构体变量,所以B选项正确。 7:有以下程序 #include #include structA int a; char b10; double c; ; struct A f(struct A t); main() struct A a=1001,ZhangDa,1098.0; a=f(a); printf(%d,%s,%6.1fn,a.a,a.b,a.c); struct Af(struct At) t.a=1002; strcpy(t.b,ChangRong); t.c=1202.0; return t; 程序运。

6、行后的输出结果是 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 voidfun(int*s, intn1, intn2) inti, j, t; i=n1;j=n2; while( ij ) t=si; si=sj; sj=t; i+; j-; m。

7、ain() inta10=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;kx B)pt-x C)*pt-y D)(pt+)-x 参考答案:A 【解析】本题考查结构体数组初始化以及结构体变量的引用, 题目中定义了一个结构体数组c并初始化,指针pt指向c的第一个元 素,那么pt-x为10,+pt-x为11,*pt-y为1,(pt+)-x为20,所以答案为A。 10:有以下程序 #include struct Sintn;inta20; void f(int*a, intn) inti; for (i=0; in-。

8、1; i+) ai+=i; main() inti; struct Ss=10, 2,3,1,6,8,7,5,4,10,9; f(s.a, s.n); for (i=0; is.n; i+) printf(%d, s.ai); 程序运行后的输出结果是 A)2,3,1,6,8,7,5,4,10,9, B)3,4,2,7,9,8,6,5,11,10, C)2,4,3,9,12,12,11,11,18,9, D)1,2,3,6,8,7,5,4,10,9, 参考答案:C 【解析】题目中定义了一个结构体类型 S,然后定义了一个结构体变量 s并初始化,执行f函数后,将s中元素a的每个元素都加上i, 这里需。

9、要主要,最后一个元素没有加i,所以最终答案为C选项。 11:以下结构体类型说明和变量定义中正确的是 A)structREC ; intn;charc; ; RECt1,t2; B)typedef struct intn;charc; REC; RECt1,t2; C)typedef structREC; intn=0;charc=A; t1,t2; D)struct intn;charc; REC; RECt1,t2; 参考答案:B 【解析】本题考查结构体的相关知识,选项 A中struct REC后面不能有分号,C选项中typedef structREC的后面也不能有分号,选 项D中REC已经。

10、是结构体变量,不能当做结构体类型来使用。 12:设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数feof(fp) 的返回值为 A)0 B)0 C)非0值 D)NULL 参考答案:C 【解析】本题考查文件的定位, feof函数的用法是从输入流读取数据, 如果到达文件末尾(遇文件结束符) ,eof函数值为非零值, 否则为0,所以选项C正确。 13:有以下程序 #include main() int a=1,b=2,c=3,d=0; if (a=1 elseprintf(%d,%d,%dn,a,b,c); elseprintf(%d,%d,%dn,a,b,c); 程序运行后的输出结果是 A。

11、)1,3,2 B)1,3,3 C)1,2,3 D)3,2,1 参考答案:B 【解析】else总是和最近的if配对,所以进入第一个if语句中条件判断时,因为是逻辑与操作需要两边运算对象的值均为非零值,才为 真,所以需要逐个执行判断的结果为1,不再执行第二个case语句中的操作而是进入第二个if语句条件判断,因为b!=2条件成立所以 整个条件表达式的值为真,所以不再执行逻辑或的第二个运算对象(c- !=3)c的值不变,也不再执行第一个else语句打印a的值1,b的 值3,c的值3 14:有以下程序 #include inta=4; int f(intn) intt = 0;static inta=。

12、5; if (n%2) inta=6;t += a+; elseinta=7;t += a+; returnt + a+; main() ints=a, i=0; for (; in B) a0.n C) p-n D) (*p).n 参考答案:A 【解析】若已定义了一个结构体变量和一个同一结构体类型的指针变量,并使该指针指向同类型的变量,则可用以下种 形式来引用结构体变量中的成员,其中结构体变量名也可以是已定义的结构体数组的数组元素:结构体变量名成员名;指针 变量名成员名; (*指针变量名) 成员名。题目中a为数组名是地址常量,不是指针变量,A选项引用错误。a0为变量名, B选项引用正确。p为。

13、指针,且正确的指向结构体变量,C选项引用正确。D选项符合第三种引用方式,引用正确。 18;设有如下定义 struct int n; char c; a2,*p=a; 则以下错误引用结构体成员n的是 A) (*a)-n B) a0.n C) p-n D) (*p).n 参考答案:A 【解析】若已定义了一个结构体变量和一个同一结构体类型的指针变量,并使该指针指向同类型的变量,则可用以下种 形式来引用结构体变量中的成员,其中结构体变量名也可以是已定义的结构体数组的数组元素:结构体变量名成员名;指针 变量名成员名; (*指针变量名) 成员名。题目中a为数组名是地址常量,不是指针变量,A选项引用错误。a0为变量名, B选项引用正确。p为指针,且正确的指向结构体变量,C选项引用正确。D选项符合第三种引用方式,引用正确。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值