[VIP专享]C语言易错选择题错题集1
C语言易错题

D.7
C.8
D.7
i=f(4+4)/f(2+2); printf("%d\n",i); } A.28 B.64 C.4 D.3
36. 有以下程序执行后输出结果是 #include <stdio.h> struct STU {char name[10]; int num; int score; }; main() {struct STU s[5]={{"YangSan",0041,703},{"LiSiguo",0042,580},{"WangYin", 0043,680},{"Sundan",0044,550},{"PengHua",0045,537}},*p[5],*t; int i,j; for(i=0;i<5;i++) p[i]=&s[i]; for(i=0;i<4;i++) for(j=i+1;j<5;j++) if(p[i]->score > p[j]->score) {t=p[i];p[i]=p[j];p[j]=t;} printf("%d %d\n",s[1].score,(*p[1]).score); } A.550 550 B.680 680 C.580 550 D.580 680 37.下面程序的运行结果是: int f(int a[],int n) {if(n>1) return a[0]+f(&a[1],n-1); else return a[0]; } main() {int aa[3]={1,2,3},s; s=f(&aa[0],3); printf("%d\n",s); } 答案: 6 38.结构化程序有三种基本结构组成,三种基本结构组成的算法: A. 可以完成任何复杂的任务 B. 只能完成部分复杂的任务 C. 只能完成符合结构化的任务 D. 只能完成一些简单的任务 39.有以下程序运行后输出结果是 main() {int a[]={1,2,3,4,5,6,7,8,9,10,11,12},*p=a+5,*q;
错题集c语言

错题集相同优先级运算符,从左至右依次运算。
注意后缀运算优先级高于前缀。
因此++i++应解释为++(i++)。
而与或非的运算优先级都不一样,因此a && b || b && c解释为(a && b) || (b && c)合理使用优先级可以极大简化表达式。
基本表达式1级基本表达式(Primary expressions),主要是用于运算符之间,做为运算数。
标识,常量,字符串文字量,优先级提升表达式最优先执行。
优先级提升表达式是指圆括号包围的表达式,如“( expression )”后缀表达式2极postfix-expression [ expression ],数组下标运算。
postfix-expression ( argument-expression-list),函数调用,括号内的参数可选。
postfix-expression . identifier,成员访问,postfix-expression -> identifier,成员访问,->号之前应为指针。
postfix-expression ++,后缀自增postfix-expression --,后缀自减( type-name ) { initializer-list }( type-name ) { initializer-list , } 复合初始化,C99后新增。
例如1 2 3 4 5 6 7 8 9 10int* a = (int[]) { 1, 2, 3 };//等价于int unamed[] = {1, 2, 3}; //unamed表示一个不可见的变量名。
int* a = unamed;单目/一元运算3级++ unary-expression 前缀自增-- unary-expression 前缀自减unary-operator cast-expression 单目转型表式式,包括取地址& ,提领* ,正号+ ,负号- 位反~ 逻辑否!。
C语言典型易错题

C语言典型易错题(1)以下程序段中的变量已正确定义For(i=0;i<4;i++,i++)For(k=1;k<3;k++);printf(“*”);程序段的输出结果是()A********B****C**D*解析:注意第二个for后执行语句为空,故答案为D。
(2)有以下程序#include<stdio.h>V oid f(int*p,int*q);Main(){int m=1,n=2,*r=&m;f(r,&n);printf(“%d,%d,m,n);}V oid f(int*p,int*q){p=p+1;*q=*q+1;}程序运行后的输出结果是()A1,3B2,3C1,4D1,2解析:注意C语言中函数的值传递规律,故答案为A。
(3)有以下程序#include<stdio.h>Int b=2;Int fun(int*k){b=*k+b;return(b);}Main{int a[10]={1,2,3,4,5,6,7,8},i;For(i=2;i<4;i++){b=fun(&a[i])+b;printf(“%d”,b);}Printf(“\n”);}程序运行后的输出结果是()A1012B810C1028D1016解析:b是全局变量,当b=2时,i<4符合,执行b=fun(&a[i])+b对于fun(&a[i])得b=a[2]+2=5所以b=b+b=10i++,i=3,i<4符合fun(&a[i]),得b=a[3]+10=14,b=b+b=28所以答案是C(4)若变量已正确定义,有以下程序段Int a=3,b=5,c=7;If(a>b)a=b;c=a;If(c!=a)c=b;Printf(“%d,%d,%d\n”,a,b,c);其输出结果是()A程序语段有语法错误B3,5,3C3,5,5D3,5,7解析:注意第一个If语句之后的分号,c=a是不属于If语句的,故答案为B。
大一C语言易错点总结和模拟试题带答案

易错点C语言中易犯的错误对初学C语言的人来说,经常会出一些连自己都不知道错在哪里的错误.看着有错的程序,不知该如何改起,一些C编程时常犯的错误,写给各位学员以供参考.******************************** ******************************** ************************1.书写标识符时,忽略了大小写字母的区别.main(){int a=5;printf("%d",A);}编译程序把a和A认为是两个不同的变量名,而显示出错信息.C认为大写字母和小写字母是两个不同的字符.习惯上,符号常量名用大写,变量名用小写表示,以增加可读性.******************************** ******************************** ************************2.忽略了变量的类型,进行了不合法的运算.main(){float a,b;printf("%d",a%b);}%是求余运算,得到a/b的整余数.整型变量a和b可以进行求余运算,而实型变量则不允许进行"求余"运算.******************************** ******************************** ************************3.将字符常量与字符串常量混淆.char c;c="a";在这里就混淆了字符常量与字符串常量,字符常量是由一对单引号括起来的单个字符,字符串常量是一对双引号括起来的字符序列.C规定以"\"作字符串结束标志,它是由系统自动加上的,所以字符串"a"实际上包含两个字符:'a'和'\',而把它赋给一个字符变量是不行的.******************************** ******************************** ************************4.忽略了"="与"=="的区别.在许多高级语言中,用"="符号作为关系运算符"等于".如在BASIC程序中可以写if (a=3) then …但C语言中,"="是赋值运算符,"=="是关系运算符.如:if (a==3) a=b;前者是进行比较,a是否和3相等,后者表示如果a和3相等,把b值赋给a.由于习惯问题,初学者往往会犯这样的错误.******************************** ******************************** ************************5.忘记加分号.分号是C语句中不可缺少的一部分,语句末尾必须有分号.a=1b=2编译时,编译程序在"a=1"后面没发现分号,就把下一行"b=2"也作为上一行语句的一部分,这就会出现语法错误.改错时,有时在被指出有错的一行中未发现错误,就需要看一下上一行是否漏掉了分号.{z=x+y;t=z/100;printf("%f",t);}对于复合语句来说,最后一个语句中最后的分号不能忽略不写******************************** ******************************** ************************6.多加分号.对于一个复合语句,如:{z=x+y; t=z/100;printf("%f",t);};复合语句的花括号后不应再加分号,否则将会画蛇添足.又如:if (a%3==0);I++;本是如果3整除a,则I加1.但由于if (a%3==0)后多加了分号,则if语句到此结束,程序将执行I++语句,不论3是否整除a,I都将自动加1.再如:for (I=0;I<5;I++);{scanf("%d",&x);printf("%d",x);}本意是先后输入5个数,每输入一个数后再将它输出.由于for()后多加了一个分号,使循环体变为空语句,此时只能输入一个数并输出它.****************************************************************************************7.输入变量时忘记加地址运算符"&".int a,b;scanf("%d%d",a,b);这是不合法的.Scanf函数的作用是:按照a,b在内存的地址将a,b的值存进去."&a"指a在内存中的地址.******************************** ******************************** ************************8.输入数据的方式与要求不符.①scanf("%d%d",&a,&b);输入时,不能用逗号作两个数据间的分隔符,如下面输入不合法:3,4输入数据时,在两个数据之间以一个或多个空格间隔,也可用回车键,跳格键tab.②scanf("%d,%d",&a,&b);C规定:如果在"格式控制"字符串中除了格式说明以外还有其它字符,则在输入数据时应输入与这些字符相同的字符.下面输入是合法的:3,4此时不用逗号而用空格或其它字符是不对的.3 43:4又如:scanf("a=%d,b=%d",&a,&b); 输入应如以下形式:a=3,b=4****************************************************************************************9.输入字符的格式与要求不一致.在用"%c"格式输入字符时,"空格字符"和"转义字符"都作为有效字符输入.scanf("%c%c%c",&c1,&c2,&c3);如输入a b c字符"a"送给c1,字符" "送给c2,字符"b"送给c3,因为%c只要求读入一个字符,后面不需要用空格作为两个字符的间隔.****************************************************************************************10.输入输出的数据类型与所用格式说明符不一致.例如,a已定义为整型,b定义为实型a=3;b=4.5;printf("%f%d\n",a,b);编译时不给出出错信息,但运行结果将与原意不符.这种错误尤其需要注意.****************************************************************************************11.输入数据时,企图规定精度.scanf("%7.2f",&a);这样做是不合法的,输入数据时不能规定精度.****************************************************************************************12.switch语句中漏写break语句.例如:根据考试成绩的等级打印出百分制数段.switch(grade){ case 'A':printf("85~100\n"); case 'B':printf("70~84\n");case 'C':printf("60~69\n");case 'D':printf("<60\n"); default:printf("error\n");由于漏写了break语句,case只起标号的作用,而不起判断作用.因此,当grade值为A时,printf函数在执行完第一个语句后接着执行第二,三,四,五个printf函数语句.正确写法应在每个分支后再加上"break;".例如case 'C':printf("60~69\n");break; ****************************************************************************************13.忽视了while和do-while语句在细节上的区别.(1)main(){int a=0,I;scanf("%d",&I); while(I<=10){a=a+I;I++;}printf("%d",a);}(2)main(){int a=0,I;scanf("%d",&I);do{a=a+I;I++;}while(I<=10);printf("%d",a);}可以看到,当输入I的值小于或等于10时,二者得到的结果相同.而当I>10时,二者结果就不同了.因为while循环是先判断后执行,而do-while循环是先执行后判断.对于大于10的数while循环一次也不执行循环体,而do-while语句则要执行一次循环体.******************************** ******************************************************** 14.定义数组时误用变量. int n; scanf("%d",&n); int a[n]; 数组名后用方括号括起来的是常量表达式,可以包括常量和符号常 量.即C 不允许对数组的大小作动态定义. **************************************************************************************** 15.在定义数组时,将定义的"元素个数"误认为是可使的最大下 标值. main() {static int a[10]={1,2,3,4,5,6,7,8,9,10}; printf("%d",a[10]); } C 语言规定:定义时用a[10],表示a 数组有10个元素.其下标值由0 开始,所以数组元素a[10]是不存在的. **************************************************************************************** 16.初始化数组时,未使用静态存储. int a[3]={0,1,2}; 这样初始化数组是不对的.C 语言规定只有静态存储(static)数组 和外部存储 (exterm)数组才能初始化.应改为: static int a[3]={0,1,2}; **************************************************************************************** 17.在不应加地址运算符&的位置加了地址运算符. scanf("%s",&str); C 语言编译系统对数组名的处理是:数组名代表该数组的起始地址 ,且scanf 函数中的输入项是字符数组名,不必要再加地址符&.应 改为:scanf("%s",str); **************************************************************************************** 18.同时定义了形参和函数中的局部变量. int max(x,y) int x,y,z; {z=x>y?x:y; return(z); } 形参应该在函数体外定义,而局部变量应该在函数体内定义.应改 为: int max(x,y)int x,y;{int z;z=x>y?x:y;return(z);}试题一一、单项选择题(共30分,每题1分)1. 下列不正确的转义字符是A.\\B.\‘ C.074 D.\02. 不是C语言提供的合法关键字是A.switchB.cherC.caseD.default3.正确的标识符是()A.?a B.a=2 C.a.3 D.a_34.下列字符中属于键盘符号的是A.\ B.\n C.\t D.\b.下列数据中属于“字符串常量”的A.ABC B.“ABC” C.‘ABC’ D.‘A’6.char型常量在内存中存放的是A.ASCII码B.BCD码C.内码值D.十进制代码值7.设a为5,执行下列语句后,b 的值不为2的是()A.b=a/2B.b=6-(——a) C.b=a%2 D.b=a>3?2:28.在以下一组运算符中,优先级最高的运算符是()A.<= B.= C.% D.& &9.设整型变量i的值为3,则计算表达式i——i后表达式的值是()A.0B.1C. 2D.表达式出错10.设整型变量a,b,c均为2,表达式a+++b+++c++的结果是()A.6B.9C.8D.表达式出错11.若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是()A.1B.2C.2.0D.2.512.设a=1,b=2,c=3,d=4,则表达式:a<b?a:c<d?a:d的结果是()A.4B.3C.2D.113.设a为整型变量,不能正确表达数学关系:10<a<15的C语言表达式是()A.10<a<15B.a==11 || a= =12 || a= =13 || a= =14C.a>10&&a<15D.!(a<=10)&&!(a>=15)14.若有以下定义:char a、 intb 、 floatc 、 double d,则表达式a*b+d-c值的类型为()A.floatB.intC.charD.double15.表达式“10!=9”的值是()A.trueB.非零值 C.0 D.116.循环语句 for (x=0,y=0;(y!=123)|| (x<4);x++);的循环执行()A.无限次B.不确定次 C.4次 D.3次17.在C语言中,下列说法中正确的是()A. 不能使用“do while”的循环B.“do while”的循环必须使用break语句退出循环C.“do while”的循环中,当条件为非0时将结束循环D.“do while”的循环中,当条件为0时将结束循环。
各公司C语言笔试频繁易错题

2布尔变量,整型变量,浮点变量与零值得比较方法(flag)
布尔型:if(flag)
整形:if(flag==0)
浮点型:Define EPSILON0.000000001
if ( fabs(a-b) <= EPSILON )
3.软件开发过程分为:需求分析、设计、编码、测试4个阶段。
5.strcpy的原函数
6.用来求一个十进制数转换成二进制后有多少个1
7,软件设计中划分模块的准则是高内聚,低耦合。
8,赋值表达式(研华)
9.研华(数据指针以及存储)
10,字节范围表达
11,数组的旋转填充。
顺时针填充数字(n*n)
12,指针加1搜代表的含义
13,结构体所占存储空间
6,12
14,关键字static的作用:
1)对局部变量使用static声明,则使得该变量在整个程序执行期间不释放,
为其分配的空间始终存在。
2)全局变量用static声明,则该变量只限于本文件模块(声明所在的文件15,指针
gh int *p[4]:p是存有4个指向整型数据的指针
int(*p)[4]:p是指向有四个数据的一维数组的指针
16.不同类型的数据占用的内存
17,函数调用形参仅仅是值传递
test。
c语言易错选择题错题集

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=yB) ++x,y=x--C) x=x+10=x+yD) double(x)/10参考答案:B【解析】A选项中不能将变量y赋给表达式,C选项中错误与A选项一样,D选项中强制类型转换表达式应写成(double)x/10。4:有以下程序#include <stdio.h>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) ChinaB) ChinangC) ChinaBeijingD) BeijingChina参考答案:B【解析】本题考查文件操作函数,fwrite和rewind函数,题目中先是将s2字符串写入adc.dat中,然后将写指针回到文件开头,然后写入s1字符串,那么s1字符串就将前五个字符覆盖,所以最终结果为Chinang,选项B正确。
C语言错题集篇
C语言错题集篇第一章公共基础知识1.在下列关于二叉树的叙述中,正确的是( )。
A)在二叉树中,任何一个结点的度都是2B)二叉树的度为2C)在二叉树中,至少有一个结点的度是2D)一棵二叉树的度可以小于2答案:D【解析】本题考查了二叉树的基本概念。
在二叉树中,叶子结点的度是1;当该二叉树为空树时,根结点的度为零;为非空树时,根结点的度为2。
2.树是结点的集合,它的根结点数目是( )。
A)有且只有1B)1或多于1C)0或1D)至少2答案:C【解析】树是N(N≥0)个结点的有限集合,当N=0时称为空树,空树没有根结点,即根结点的个数为0,对于非空树,有且只有一个根结点,所以树的根结点数目为0或1。
3.下列叙述中正确的是( )。
A)对长度为n的有序链表进行查找,最坏情况下需要的比较次数为nB)对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(n/2)C)对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(log2n)D)对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(nlog2n)答案:A【解析】对长度为n的有序链表进行查找,最坏情况是从最小值开始查找最大值(或从最大值开始查找最小值),这个过程需要比较的次数为n,故选项A)正确。
对分查找只能针对随机存取的有序表进行,而有序链表只能进行顺序存取,不能进行随机存取,在有序链表上不能进行对分查找,故B)、C)、D)选项都错误。
4.下列排序方法中,最坏情况下比较次数最少的是( )。
A)冒泡排序B)简单选择排序C)直接插入排序D)堆排序答案:D【解析】冒泡排序、简单选择排序和直接插入排序在最坏情况下的比较次数都是"n(n-1)/2",堆排序在最坏情况下的比较次数最少,是"O(nlog2n)"。
5.软件生命周期中所花费用最多的阶段是( )。
A)详细设计B)软件编码C)软件测试D)软件维护答案:D【解析】软件生命周期分为软件定义、软件开发及软件运行维护3个阶段。
C语言易错复习题
5
习题五
题目: 设有以下字符串定义, char s1[]={‘S’,’t’,’r’,’i’,’n’,’g’}; char s2[]=”String”; 则s1和s2:长度?内容? 解析:
以‘\0’结尾的字符数组是字符串
答案: 长度不同,但内容相同。 6
习题二
题目: 下面程序的输出是:
解析: ‘/’:取整; ‘%’:取余 答案: 3
3
习题三
题目: 你能找到这个程序的错误吗? 解析: 宏定义后面不要加’;’ ,有变量的 一定要加上括号。建议少用宏 定义(除条件编译外),可用 const 变量代替。 答案:去掉3.1415926后面的’;’ 4
解析:
对于i++,系统会有个临时变量存储i自加1后的值,而对 于++j,不需要临时变量。 i++和++i的效率:内置类型没有区别,用户自定义类型重载 后置++和前置++,前置比后置效率高.
答案: 9、16、6、6
14
补充
对于C中对字符数组赋值一共3种: 定义的时候直接赋值. 1:char a[20] = "Hello World!"; 2: char a[20]; strcpy(a, "Hello World!"); 3: char a[20] = {'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '!'}; 常见错误赋值方式(第八章选择题5) 1:char a[20]; 9 a = "Hello World!";
C语言易错题集(选择、填空)
以下各个项中,可作为C语言中合法整数的是( )。
A.10110BB.0386C.0XffaD.x2a2错解:B 错认为是十进制整形数据,开头为0,后面无意义。
整形常量:十进制 +(-)0—9八进制 +(-)O 0—7十六进制 +(-)OX 0—f或OX 0—F在输出是不会输出前导符。
下列定义变量的语句中错误的是()A.int _int;B.double int_;C.char For;D.float US$;正解:D 变量格式:数据类型名(整型、实型、字符型)+变量名变量名即格式字符属于标识符(符号常量名、函数名、数组名、文件名)由有效字符序列组成:字母、数字、下划线,且第一个字符不能是数字,另外C语言中大小写字母不等效。
设有定义:int a; float b; ,执行scanf("%2d%f",&a,&b);语句时,若从键盘输入876 <空格>543.0<回车>,则a和b的值分别是()A.87 和 6.00000B.876 和 543.0C.87 和 543.0D.76 和 543.0正解:%2d决定了a只能接受两位数字,所以a的值为87%2d%f是连在一起的,所以按照默认规定,输入的数据也是连续的,中间没有空格,否则会将空格作为输入的结束符来看待。
已知字符 'a' 的ASCII码为 97,执行下列语句的输出是____。
printf ("%d, %c", 'b', 'b'+1 ) ;A.98,bB.语法不合法C.98,99D.98,c正解:C.字符数据在内存中以ASCII码存储,因此字符数据和整型数据可以通用,可相互赋值。
有以下程序:main(){int m=0256, n=256;printf("%o %o\n", m, n);}运行程序后的输出结果是( )A.0256 0400B.0256 256C.256 400D.400 400错解:A. %O输出结果无前导符符号,若输出需要带上前导符,则应该为%#O,同理十六进制输出前导符为%#OX。
c语言错题集
一、选择题1.以下所列的C 语言整形常量中,正确的是____A)0x10g B)0976 C)076L D)01ff2.以下合法的字符常量为____A) 'ab ' B) '\482' C) '\' D) '\xaf '3.若有以下定义和语句:int u=010,v=0x10,w=10,printf("%d,%d,%d\n ",u,v,w);则输出结果是____A)8,16,10 B)10,10,10 C)8,8,10 D)8,10,104.假设在程序中a,b,c 均被定义成整型,并且已赋大于1的值,则下列能正确表示代数式abc1的表达式是____ A) 1/a*b*c B)1/(a*b*c) C) 1/a/b/ (float) c D)1.0/a/b/c5.若有定义:int a=8,b=5, c ; char d='A '; 则执行语句 c=a/b+d%a+0.5; 后c 的值为A) 2 B)2.5 C) 3 D)类型不一致,无法计算,编译出错6.在有以下程序main(){ int i=10,j=1;i=i+j++;printf("%d,%d,%d\n ",i++,++j,i);}执行后输出结果是____A) 12,3,11 B) 12,2,11 C) 11,3,11 D) 12,3,127.已知int y,a,i=1;,则语句printf("%d,%d ",-i++,(y=a=3.6*3));的输出结果为___A. -1,10B. -2,1.8C. 0,3D. 1,188.有以下程序main(){ char a,b,c,d;a='\'; b='\xbc ';c='\0xab '; d='\023';printf("%c%c%c%c\n ",a,b,c,d);}编译时出现错误,以下叙述中正确的是A) 程序中只有a='\';语句不正确 B) b='\xbc ';语句不正确C) d='\023';语句不正确 D) a='\';和c='\0xab ';语句都不正确9.有以下程序main(){ double d=3.2; int x,y;x=1.2; y=(x+3.8)/5.0;printf("%d\n ",d*y);}程序的输出结果是A )3B )3.2C )0D )3.0710. 有以下程序main(){ double d; float f; long l; int i;i=f=l=d=20/3;printf("%d %ld %.1f %.1f\n",i,l,f,d);}程序的输出结果是A)6 6 6.0 6.0 B)6 6 6.7 6.7C)6 6 6.0 6.7 D)6 6 6.7 6.011. 有以下程序main(){ int x,y,z;x=y=1;z=x++,y++,++y;printf("%d,%d,%d\n",x,y,z);}程序运行后的输出结果是A) 2,3,3 B) 2,3,2 C) 2,3,1 D) 2,2,112. 有以下程序#include <stdio.h>main(){ char c1,c2,c3,c4,c5,c6;scanf("%c%c%c%c",&c1,&c2,&c3,&c4);c5=getchar(); c6=getchar();putchar(c1); putchar(c2);printf("%c%c\n",c5,c6);}程序运行后,若从键盘输入(从第1列开始)123<回车>45678<回车>则输出结果是。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
88.8918÷.12990.÷1=4214÷3922=.0034=1÷15251371=8.535.78208÷.0232173c0*0÷1=m920.30392.2c=1÷203m=2÷1202.52=3535=42314)c*5232m40341*.31252=3.*1.153.5*03134.2*920522..104455=+21*3*50202.2.0285.4850.13*50+5c8*125*12m0.2+050.+0*014.852*0051000+0+/038.T+0÷+=55*+1011+010+91÷0145405*00010200+5+0+080+40*04+***115.103910*-%*C%6(+÷*M==5M÷5)0*3*0(31÷3110**5*+*÷414.m2371e=%7)8n08%.=s8.5=77.93cc60.mc*m4*m13,101w9.9o.k24mc-.cem5nm2csp2665m*9..03-4.50c60*5.pc3m85,9cm0.5g.i50mr0l-.p.s85p/6c50bc.0om7m.yp.cs6pc5m+;c0m..m7.ckm; 1+1k+12+1+k2234=1c+m1++4+4+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。
1) B2Ak+22+12=+15+c51mc+=5m=2c111++m+12+21+++2=12=2+1+2+1+2+2+22+32k+1+2
2:面向对象方法中,继承是指( )。
A) 一组对象所具有的相似性质
B) 一个对象具有另一个对象的性质
C) 各对象之间的共同性质
D) 类之间共享属性和操作的机制
参考答案:D
【解析】继承是面向对象的方法的一个主要特征,是使用已有的类的定义作为基础建立新类的定义技术。广义的说,继承是指
能够直接获得已有的性质和特征,而不必重复定义它们,所以说继承是指类之间共享属性和操作的机制。
后写入s1字符串,那么s1字符串就将前五个字符覆盖,所以最终结果为Chinang,选项B正确。
5:有以下程序
#include <stdio.h>
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选项正确。
参考答案: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 <stdio.h> #include <string.h>
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);
fclose(pf);
}
以上程序执行后abc.dat文件的内容是
A) China
B) Chinang
C) ChinaBeijing
D) BeijingChina 参考答案:B
【解析】本题考查文件操作函数,fwrite和rewind函数,题目中先是将s2字符串写入adc.dat中,然后将写指针回到文件开头,然
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 型数据所占字节数。
ห้องสมุดไป่ตู้
4:有以下程序
#include <stdio.h>
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);
1) B2Ak+22+12=+15+c51mc+=5m=2c111++m+12+21+++2=12=2+1+2+1+2+2+22+32k+1+2
88.8918÷.12990.÷1=4214÷3922=.0034=1÷15251371=8.535.78208÷.0232173c0*0÷1=m920.30392.2c=1÷203m=2÷1202.52=3535=42314)c*5232m40341*.31252=3.*1.153.5*03134.2*920522..104455=+21*3*50202.2.0285.4850.13*50+5c8*125*12m0.2+050.+0*014.852*0051000+0+/038.T+0÷+=55*+1011+010+91÷0145405*00010200+5+0+080+40*04+***115.103910*-%*C%6(+÷*M==5M÷5)0*3*0(31÷3110**5*+*÷414.m2371e=%7)8n08%.=s8.5=77.93cc60.mc*m4*m13,101w9.9o.k24mc-.cem5nm2csp2665m*9..03-4.50c60*5.pc3m85,9cm0.5g.i50mr0l-.p.s85p/6c50bc.0om7m.yp.cs6pc5m+;c0m..m7.ckm; 1+1k+12+1+k2234=1c+m1++4+4+2