MOOC 高级语言-河南科技学院 中国大学慕课答案_第1页
MOOC 高级语言-河南科技学院 中国大学慕课答案_第2页
MOOC 高级语言-河南科技学院 中国大学慕课答案_第3页
MOOC 高级语言-河南科技学院 中国大学慕课答案_第4页
MOOC 高级语言-河南科技学院 中国大学慕课答案_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MOOC高级语言-河南科技学院中国大学慕课答案第一章单元测试1、问题:在一个C程序中()。A)main函数必须出现在所有函数之前B)main函数可以在任何地方出现C)main函数必须出现在所有函数之后D)main函数必须出现在固定位置选项:A、C语言中main函数的位置不固定B、C语言中main函数的位置不固定C、C语言中main函数的位置不固定D、C语言中main函数的位置不固定正确答案:【C语言中main函数的位置不固定】2、问题:以下选项中合法的用户标识符是()。A)longB)_2TestC)3DmaxD)A.dat选项:A、标识符不能是关键字B、符合标符的定义C、标示符不能用数字开头D、标识符中不能有除下划线以外的其他特殊字符正确答案:【符合标符的定义】3、问题:以下选项中不属于C语言的类型的是()。A)integerB)floatC)intD)char选项:A、integer不是C语言中的类型关键字B、float是C语言中的浮点类型关键字C、int是C语言中的整型关键字D、char是C语言中的字符类型关键字正确答案:【integer不是C语言中的类型关键字】4、问题:以下变量x.、y、z均为double类型且已正确赋值,不能正确表示数学式子选项:的C语言表达式是()。A)x/y*zB)x*(1/(y*z))C)x/y*1/zD)x/y/zA、该答案表示的是B、符合要求C、符合要求D、符合要求正确答案:【该答案表示的是】5、问题:C语言中运算对象必须是整型的运算符是()。A)%B)/C)=D)=选项:A、%是求余运算,运算对象只能是整型数据B、/是除法运算符,运算对象可以是实型数据C、=是赋值运算符,运算对象可以是其它类型D、=是关系运算符,运算对象可以是其它类型正确答案:【%是求余运算,运算对象只能是整型数据】6、问题:设有intx=11;则表达式(x++*1/3)的值是()。A)3B)4C)11D)12选项:A、表达式x++*1/3运算过程中,先使用x的值参于运算,等同于11/3,由于运算对象均为整型,故得整数商3,当该表达式运算结束后,x的值自增为12B、不符合运算规则C、不符合运算规则D、不符合运算规则正确答案:【表达式x++*1/3运算过程中,先使用x的值参于运算,等同于11/3,由于运算对象均为整型,故得整数商3,当该表达式运算结束后,x的值自增为12】7、问题:以下选项中,非法的字符常量是()。A)‘\t’B)‘\17’C)“n”D)‘\xaa’选项:A、是转义字符B、是转义字符C、是字符串,不是字符D、是转义字符正确答案:【是字符串,不是字符】8、问题:若有定义:inta=8,b=5,c;,执行语句c=a/b+0.4;后,c的值为()。A)1.4B)1C)2.0D)2选项:A、不符合运算规则B、a/b的结果是1,1加上0.4是1.4,由于c是整型变量,进行强制类型转换,故c的值是1C、不符合运算规则D、不符合运算规则正确答案:【a/b的结果是1,1加上0.4是1.4,由于c是整型变量,进行强制类型转换,故c的值是1】9、问题:以下程序的输出结果是()。#includestdio.hvoidmain(){charc=’z’;printf(“%c”,c-25);}A)aB)ZC)z-25D)y选项:A、字符‘z’的ASCII码值是122,122-25=97,97是字符‘a’的ASCII码值,按%c格式输出为字符'a'。B、计算错误C、表示错误D、计算错误正确答案:【字符‘z’的ASCII码值是122,122-25=97,97是字符‘a’的ASCII码值,按%c格式输出为字符'a'。】10、问题:以下选项中,与k=n++完全等价的表达式是()。A)k=n,n=n+1B)n=n+1,k=nC)k=++nD)k+=n+1选项:A、k=n++的含义是先将n的值赋给变量k,然后n自加1,故等价于逗号表达式k=n,n=n+1B、不符合k=n++的含义C、不符合k=n++的含义D、不符合k=n++的含义正确答案:【k=n++的含义是先将n的值赋给变量k,然后n自加1,故等价于逗号表达式k=n,n=n+1】第二章单元测试1、问题:能正确表示逻辑关系:“a≥=10或a≤0”的C语言表达式是()。A)a=10ora=0B)a=0||a=10C)a=10a=0D)a=10||a=0选项:A、解析错误B、解析错误C、解析错误D、表达式“a≥=10或a≤0”是指a大于等于10或者小于等于0,故只有该答案正确。正确答案:【表达式“a≥=10或a≤0”是指a大于等于10或者小于等于0,故只有该答案正确。】2、问题:设a、b、c、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=ab)(n=cd)运算后,n的值应为()。A)0B)1C)2D)3选项:A、理解错误B、理解错误C、表达式(m=ab)(n=cd)运算时,由于m=ab的值是0,故运算不再继续运算,产生运算短路,n=cd不再执行,故c的值不变D、理解错误正确答案:【表达式(m=ab)(n=cd)运算时,由于m=ab的值是0,故运算不再继续运算,产生运算短路,n=cd不再执行,故c的值不变】3、问题:假定w、x、y、z、m均为int型变量,有如下程序段:w=1;x=2;y=3;z=4;m=(wx)?w:x;m=(my)?m:y;m=(mz)?m:z;则该程序运行后,m的值是()A)4B)3C)2D)1选项:A、运算错误B、运算错误C、运算错误D、本题主要考查条件运算的运算规则,执行m=(wx)?w:x;以后m的值是1,再执行m=(my)?m:y;m=(mz)?m:z;以后,m的值仍然是1。正确答案:【本题主要考查条件运算的运算规则,执行m=(wx)?w:x;以后m的值是1,再执行m=(my)?m:y;m=(mz)?m:z;以后,m的值仍然是1。】4、问题:若执行以下程序时从键盘上输入9,则输出结果是()#includestdio.hvoidmain(){intn;scanf(“%d”,n);if(n++10)printf(“%d\n”,n);elseprintf(“%d\n”,n--);}A)11B)10C)9D)8选项:A、解析错误B、语句if(n++10)printf(“%d\n”,n);执行时,先计算表达式“n++10”,由于n的值是9,故表达式“n++10”值为真,此时n自加为10,故printf(“%d\n”,n);语句输出10。C、解析错误D、解析错误正确答案:【语句if(n++10)printf(“%d\n”,n);执行时,先计算表达式“n++10”,由于n的值是9,故表达式“n++10”值为真,此时n自加为10,故printf(“%d\n”,n);语句输出10。】5、问题:若有定义:floatw;inta,b;则合法的switch语句是()。A)switch(w)B)switch(a){case1.0:printf(*\n);{case1printf(*\n);case2.0:printf(**\n);case2printf(**\n);}}C)switch(b)D)switch(a+b);{case1:printf(*\n);{case1:printf(*\n);default:printf(\n);case2:printf(**\n);case2:printf(**\n);default:printf(\n);}}选项:A、case后的常量是实数,不符合规则B、case后面无冒号C、符合switch语句的构造规则D、switch后面多了分号正确答案:【符合switch语句的构造规则】6、问题:程序#includestdio.hvoidmain(){intn=9;while(n6){n--;printf(“%d”,n);}}的输出结果是()A)987B)876C)8765D)9876选项:A、输出结果不对B、循环体执行三次,第一次输出8,第二次输出7,第三次输出6。C、输出结果和输出次数都不对D、输出结果和输出次数都不对正确答案:【循环体执行三次,第一次输出8,第二次输出7,第三次输出6。】7、问题:以下程序段的输出结果是()。intx=3;do{printf(%3d,,x-=2);}while(!(--x));A)1B)0C)死循环D)1,-2,选项:A、分析错误B、分析错误C、分析错误D、do...while是一个先执行循环体再判断的循环语句,初始x=3,执行printf(%3d,,x-=2);输出1,此时x=1;while(!(--x))中的循环条件是先让x自减1,x=0,!(x)为真,继续执行循环体,printf(%3d,,x-=2);输出-2,再判断!(--x)的值,此时!(--x)为假,结束循环。正确答案:【do...while是一个先执行循环体再判断的循环语句,初始x=3,执行printf(%3d,,x-=2);输出1,此时x=1;while(!(--x))中的循环条件是先让x自减1,x=0,!(x)为真,继续执行循环体,printf(%3d,,x-=2);输出-2,再判断!(--x)的值,此时!(--x)为假,结束循环。】8、问题:设??i、j、k均为int型变量,则执行完下面的for循环后,k的值为()。for(i=0,j=10;i=j;i++,j--)k=i+j;A)12B)10C)11D)9选项:A、分析错误B、循环体共执行了6次,每一次k的值均等于i+j,结果为10.C、分析错误D、分析错误正确答案:【循环体共执行了6次,每一次k的值均等于i+j,结果为10.】9、问题:以下程序的输出结果是()。#includestdio.hvoidmain(){inta,b;for(a=1,b=1;a=100;a++){if(b=10)break;if(b%3==1){b+=3;continue;}}printf(“%d\n”,a);}A)101B)6C)5D)4选项:A、分析错误B、分析错误C、分析错误D、注意continue和break的使用,循环体共执行了4次正确答案:【注意continue和break的使用,循环体共执行了4次】10、问题:以下程序的输出结果是()。#includestdio.hvoidmain(){inta=0,i;for(i=1;i5;i++){switch(i){case0:case3:a+=2;case1:case2:a+=3;default:a+=5;}}printf(%d\n,a);}A)31B)13C)10D)20选项:A、循环共执行了4次,由于switch语句中没有使用break语句,当i=1时执行了a+=3;a+=5;结果是a=8;当i=2时执行了a+=3;a+=5;结果是a=16;当i=3时执行了a+=2;a+=3;a+=5;结果是a=26;当i=4时执行了a+=5;结果是a=31B、分析错误C、分析错误D、分析错误正确答案:【循环共执行了4次,由于switch语句中没有使用break语句,当i=1时执行了a+=3;a+=5;结果是a=8;当i=2时执行了a+=3;a+=5;结果是a=16;当i=3时执行了a+=2;a+=3;a+=5;结果是a=26;当i=4时执行了a+=5;结果是a=31】第三章单元测试1、问题:假定int类型变量占用两个字节,定义:intx[10]={0,2,4};,则数组x在内存中所占字节数是()A)3B)6C)10D)20选项:A、理解错误B、理解错误C、理解错误D、intx[10]={0,2,4}实际上定义一个具有10个int型元素的一维数组,每个元素占2字节,故共占20个字节正确答案:【intx[10]={0,2,4}实际上定义一个具有10个int型元素的一维数组,每个元素占2字节,故共占20个字节】2、问题:执行下面的程序段后,变量k中的值为()。intk=3,s[2];s[0]=k;k=s[1]*10;A)不定值B)33C)30D)10选项:A、intk=3,s[2];定义了一个一维数组s[2],s[2]中有两个元素s[0]和s[1],后面的语句使s[0]=3,但s[1]没有确定的值,故执行语句k=s[1]*10后,k的值不确定B、理解错误C、理解错误D、理解错误正确答案:【intk=3,s[2];定义了一个一维数组s[2],s[2]中有两个元素s[0]和s[1],后面的语句使s[0]=3,但s[1]没有确定的值,故执行语句k=s[1]*10后,k的值不确定】3、问题:若有说明“intx[3][4];”,则对x数组元素的正确引用是()。A)x[2][4];B)x[1,3]C)x[4-2][0]D)x[3][0]选项:A、x[2][4]中的第二个下标越界B、x[1,3]不符合C语言的语法规则C、intx[3][4]共定义了12个数组元素,分别是x[0][0],x[0][1],x[0][2],x[0][3],x[1][0],x[1][1],x[1][2],x[1][3],x[2][0],x[2][1],x[2][2],x[2][3]。x[4-2][0]指的是x[2][0]。D、x[3][0]中的第一个下标越界正确答案:【intx[3][4]共定义了12个数组元素,分别是x[0][0],x[0][1],x[0][2],x[0][3],x[1][0],x[1][1],x[1][2],x[1][3],x[2][0],x[2][1],x[2][2],x[2][3]。x[4-2][0]指的是x[2][0]。】4、问题:若的以下语句,则下面()是正确的描述。charx[]=”12345”;chary[]={‘1’,’2’,’3’,’4’,’5’};A)x数组和y数组的长度相同B)x数组的长度大于y数组的长度C)x数组的长度小于y数组的长度D)x数组等价于y数组选项:A、理解错误B、由于字符串”12345”隐含着一个字符串结束标志'\0',故charx[]=”12345”定义的数组x的长度是6;而chary[]={‘1’,’2’,’3’,’4’,’5’};定义的y数组长度是5。C、理解错误D、理解错误正确答案:【由于字符串”12345”隐含着一个字符串结束标志'\0',故charx[]=”12345”定义的数组x的长度是6;而chary[]={‘1’,’2’,’3’,’4’,’5’};定义的y数组长度是5。】5、问题:程序#includestdio.hvoidmain(){intn[5]={0,0,0},i,k=2;for(i=0;ik;i++)n[i]=n[i]+1;printf(“%d\n”,n[k]);}输出结果是()。A)不确定的值B)2C)1D)0选项:A、理解错误B、执行过程分析错误C、执行过程分析错误D、循环体执行了2次,使得n[0]=1,n[1]=1,n[2]并没有被循环所赋值,故n[2]=0。正确答案:【循环体执行了2次,使得n[0]=1,n[1]=1,n[2]并没有被循环所赋值,故n[2]=0。】6、问题:程序#includestdio.hvoidmain(){intp[7]={11,13,14,15,16,17,18},i=0,k=0;while(i7p[i]%2){k=k+p[i];i++;}printf(%d\n,k);}执行后输出结果是()。A)58B)56C)45D)24选项:A、循环条件分析错误B、循环条件分析错误C、循环条件分析错误D、当表达式i7p[i]%2值为真时执行循环体,故该程序的循环体只执行了两次,k的值是24。正确答案:【当表达式i7p[i]%2值为真时执行循环体,故该程序的循环体只执行了两次,k的值是24。】7、问题:以下程序的输出结果是()。#includestdio.hvoidmain(){inti,a[10];for(i=9;i=0;i--)a[i]=10-i;printf(“%d%d%d”,a[2],a[5],a[8]);}A)258B)741C)852D)369选项:A、分析方法错误B、分析方法错误C、该程序的循环语句使得:a[9]=1,a[8]=2,a[7]=3,a[6]=4,a[5]=5,a[4]=6,a[3]=7,a[2]=8,a[1]=9,a[0]=10,printf(“%d%d%d”,a[2],a[5],a[8]);的输出结果852D、分析方法错误正确答案:【该程序的循环语句使得:a[9]=1,a[8]=2,a[7]=3,a[6]=4,a[5]=5,a[4]=6,a[3]=7,a[2]=8,a[1]=9,a[0]=10,printf(“%d%d%d”,a[2],a[5],a[8]);的输出结果852】8、问题:以下程序的输出结果是()#includestdio.hvoidmain(){intb[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;for(i=0;i3;i++)for(j=i;j=i;j++)t=t+b[i][b[j][j]];printf(%d\n,t);}A)3B)4C)1D)9选项:A、循环分析错误B、本题考查是的数组的下标变化,注意内循环的循环条件是j=i,输出结果是4。C、循环分析错误D、循环分析错误正确答案:【本题考查是的数组的下标变化,注意内循环的循环条件是j=i,输出结果是4。】9、问题:程序#includestdio.h#includestring.hvoidmain(){chars[]=\n123\\;printf(%d,%d\n,strlen(s),sizeof(s));}执行后输出结果是()。A)赋初值的字符串有错B)6,7C)5,6D)6,6选项:A、不理解字符串初始化B、对字符串和字符数组分析错误C、chars[]=\n123\\中‘、'\n'是转义字符换行,'\\'是转义字符表示'\',故字符串的长度是5,为数组s开辟了6个字节的内存空间。D、对字符串和字符数组分析错误正确答案:【chars[]=\n123\\中‘、'\n'是转义字符换行,'\\'是转义字符表示'\',故字符串的长度是5,为数组s开辟了6个字节的内存空间。】10、问题:程序执行后的输出结果是()。#includestdio.h#includestring.hvoidmain(){chararr[2][4];strcpy(arr[0],you);strcpy(arr[1],me);arr[0][3]='';printf(%s\n,arr);}A)youmeB)youC)meD)err选项:A、二维数组的在内存的存储方式是行主序存储,chararr[2][4]定义了8个数组元素,它们以arr[0][0],arr[0][1],arr[0][2],arr[0][3],arr[1][0],arr[1][1],arr[1][2],arr[1][3]顺序在内存开辟空间,语句strcpy(arr[0],you)使arr[0][0]=‘y’,arr[0][1]=‘o’,arr[0][2]=‘u’,arr[0][3]=‘\0’。语句strcpy(arr[1],me);使arr[1][0]=‘m’,arr[1][1]]=‘e’,arr[1][2]]=‘\0’。arr[0][3]=''使arr[0][3]重新赋值为''。printf(%s\n,arr)以字符串格式输出,arr为首地址,故输出结果为youme。?B、字符串结束标志分析的不对C、字符串起始地址分析的不对D、理解错误正确答案:【二维数组的在内存的存储方式是行主序存储,chararr[2][4]定义了8个数组元素,它们以arr[0][0],arr[0][1],arr[0][2],arr[0][3],arr[1][0],arr[1][1],arr[1][2],arr[1][3]顺序在内存开辟空间,语句strcpy(arr[0],you)使arr[0][0]=‘y’,arr[0][1]=‘o’,arr[0][2]=‘u’,arr[0][3]=‘\0’。语句strcpy(arr[1],me);使arr[1][0]=‘m’,arr[1][1]]=‘e’,arr[1][2]]=‘\0’。arr[0][3]=''使arr[0][3]重新赋值为''。printf(%s\n,arr)以字符串格式输出,arr为首地址,故输出结果为youme。?】第四章单元测试1、问题:以下函数值的类型是()。fun(floatx){floaty;y=3*x-4;returny;}A)intB)不确定C)voidD)float选项:A、没有指定函数类型时,系统默认函数的类型是int类型。B、没有指定函数类型时,系统默认函数的类型是int类型。C、没有指定函数类型时,系统默认函数的类型是int类型。D、没有指定函数类型时,系统默认函数的类型是int类型。正确答案:【没有指定函数类型时,系统默认函数的类型是int类型。】2、问题:有如下函数调用语句func(rec1,rec2+rec3,(rec4,rec5));该函数调用语句中,含有的实参个数是()。A)3B)4C)5D)不确定选项:A、func(rec1,rec2+rec3,(rec4,rec5))函数中共有rec1,rec2+rec3,(rec4,rec5)三个实在参数。B、func(rec1,rec2+rec3,(rec4,rec5))函数中共有rec1,rec2+rec3,(rec4,rec5)三个实在参数。C、func(rec1,rec2+rec3,(rec4,rec5))函数中共有rec1,rec2+rec3,(rec4,rec5)三个实在参数。D、func(rec1,rec2+rec3,(rec4,rec5))函数中共有rec1,rec2+rec3,(rec4,rec5)三个实在参数。正确答案:【func(rec1,rec2+rec3,(rec4,rec5))函数中共有rec1,rec2+rec3,(rec4,rec5)三个实在参数。】3、问题:以下程序的输出结果是()。#includestdio.hfun(intx,inty,intz){z=x*x+y*y;}voidmain(){inta=31;fun(5,2,a);printf(“%d\n”,a);}A)0B)29C)31D)无定值选项:A、理解错误B、x值不能回传C、变量a是主函数中的变量,作为实在参数通过fun(5,2,a)实现函数调用,只能将a的值传递给形参x,但x值不能回传给a,故a的值仍然是31。D、无效选项正确答案:【变量a是主函数中的变量,作为实在参数通过fun(5,2,a)实现函数调用,只能将a的值传递给形参x,但x值不能回传给a,故a的值仍然是31。】4、问题:程序#includestdio.hintfunc(inta,intb){return(a+b);}voidmain(){intx=2,y=5,z=8,r;r=func(func(x,y),z);printf(%d\n,r);}输出的结果是()。A)12B)13C)14D)15选项:A、理解错误B、理解错误C、理解错误D、r=func(func(x,y),z)运用了函数的嵌套调用,func(x,y)的值是7,func(func(x,y),z)相当于func(7,8),其值为15,故r=15。正确答案:【r=func(func(x,y),z)运用了函数的嵌套调用,func(x,y)的值是7,func(func(x,y),z)相当于func(7,8),其值为15,故r=15。】5、问题:程序#includestdio.hlongfib(intn){if(n2)return(fib(n-1)+fib(n-2));elsereturn(2);}voidmain(){printf(%d\n,fib(3));}输出结果是()。A)2B)4C)6D)8选项:A、理解错误B、该程序实现了函数的递归调用,欲求fib(3),在fib函数中由于实参3大于2,故需计算fib(2)+fib(1),在fib(2)+fib(1)中需调用fib(2)和fib(1),由于此时实参均不大于2,fib(2)和fib(1)的函数值都是2,然后回溯求得fib(3)的值等于4。C、理解错误D、理解错误正确答案:【该程序实现了函数的递归调用,欲求fib(3),在fib函数中由于实参3大于2,故需计算fib(2)+fib(1),在fib(2)+fib(1)中需调用fib(2)和fib(1),由于此时实参均不大于2,fib(2)和fib(1)的函数值都是2,然后回溯求得fib(3)的值等于4。】6、问题:程序#includestdio.hvoidf(intx,inty){intt;if(xy){t=x;x=y;y=t;}}voidmain(){inta=4,b=3,c=5;f(a,b);f(a,c);f(b,c);printf(%d,%d,%d\n,a,b,c);}执行后输出结果是()。A)3,4,5B)5,3,4C)5,4,3D)4,3,5选项:A、不理解形参、实参的传递方式,不理解局部变量的作用域B、不理解形参、实参的传递方式,不理解局部变量的作用域C、不理解形参、实参的传递方式,不理解局部变量的作用域D、变量a=4,b=3,c=5是主函数中的局部变量,作为实参调用f函数,f函数中只交换了形参x,y的值,并为回传给实参,故a=4,b=3,c=5不变。正确答案:【变量a=4,b=3,c=5是主函数中的局部变量,作为实参调用f函数,f函数中只交换了形参x,y的值,并为回传给实参,故a=4,b=3,c=5不变。】7、问题:程序#includestdio.hintf1(intx,inty){returnxy?x:y;}intf2(intx,inty){returnxy?y:x;}voidmain(){inta=4,b=3,c=5,d,e,f;d=f1(a,b);d=f1(d,c);e=f2(a,b);e=f2(e,c);?f=a+b+c-d-e;printf(%d,%d,%d\n,d,f,e);}执行后输出结果是()。A)3,4,5B)5,3,4C)5,4,3D)3,5,4选项:A、理解错误B、理解错误C、函数f1是求两数中的最大值,函数f2是求两数中的最小值,经过连续的函数调用,d获得了a,b,c中的最大值,e获得了a,b,c中的最小值,又执行f=a+b+c-d-e;f获得了三个数中的中间值。D、理解错误正确答案:【函数f1是求两数中的最大值,函数f2是求两数中的最小值,经过连续的函数调用,d获得了a,b,c中的最大值,e获得了a,b,c中的最小值,又执行f=a+b+c-d-e;f获得了三个数中的中间值。】8、问题:以下程序的输出结果是()。#includestdio.hinta,b;voidfun(){a=100;b=200;}voidmain(){inta=5,b=7;fun();printf(%d%d\n,a,b);}A)100200B)57C)200100D)75选项:A、对全局变量和局部变量理解错误B、全局变量的作用范围不包括同名局部变量所在的函数,fun()函数中的a,b是全局变量,main()函数中的a,b是局部变量,故输出结果是57。C、对全局变量和局部变量理解错误D、对全局变量和局部变量理解错误正确答案:【全局变量的作用范围不包括同名局部变量所在的函数,fun()函数中的a,b是全局变量,main()函数中的a,b是局部变量,故输出结果是57。】9、问题:程序#includestdio.hinta=3;voidmain(){ints=0;{inta=5;s+=a++;}s+=a++;printf(%d\n,s);}运行后的输出结果是()。A)8B)10C)7D)11选项:A、{inta=5;s+=a++;}中的a是局部变量,此时执行s+=a++,s的值是5。其后的s+=a++中的a是全局变量,执行该语句后,s的值是8。B、理解错误C、理解错误D、理解错误正确答案:【{inta=5;s+=a++;}中的a是局部变量,此时执行s+=a++,s的值是5。其后的s+=a++中的a是全局变量,执行该语句后,s的值是8。】10、问题:以下程序的输出结果是()。#includestdio.hintx=3;voidincre(){staticintx=1;x*=x+1;printf(%d,x);}voidmain(){inti;for(i=1;ix;i++)incre();}A)33B)22C)26D)25选项:A、全局变量、局部变量,静态变量、自动变量理解错误B、干扰项C、主函数中的x是全局变量,故循环语句中的循环执行了两次,incre()函数中的x是静态的局部变量,主函数第一次循环时,调用incre()函数,执行x*=x+1后,x的值是2,printf(%d,x)输出2;主函数第二次循环时,调用incre()函数,由于x静态变量,故x中保留的是上次执行后值,x=2,再执行x*=x+1后,x的值是6,printf(%d,x)输出6。D、全局变量、局部变量,静态变量、自动变量理解错误正确答案:【主函数中的x是全局变量,故循环语句中的循环执行了两次,incre()函数中的x是静态的局部变量,主函数第一次循环时,调用incre()函数,执行x*=x+1后,x的值是2,printf(%d,x)输出2;主函数第二次循环时,调用incre()函数,由于x静态变量,故x中保留的是上次执行后值,x=2,再执行x*=x+1后,x的值是6,printf(%d,x)输出6。】第五章单元测试1、问题:若有说明:intn=2,*p=n,*q=p;,则以下非法的赋值语句是().A)p=q;B)*p=*q;C)n=*q;D)p=n;选项:A、p和q是同类型的指针变量B、把q所指向空间中的值赋给p所指向空间中C、n可以获得q所指向空间中的值D、intn=2,*p=n,*q=p;中已定义p是指针变量且已获得变量n的地址,而p=n是让p获得n的值,这是无意义的。正确答案:【intn=2,*p=n,*q=p;中已定义p是指针变量且已获得变量n的地址,而p=n是让p获得n的值,这是无意义的。】2、问题:对于基类型相同的两个指针变量之间,不能进行的运算是().A)B)=C)+D)-选项:A、两个指针变量比较大小,可以区分所指向的地址不同位置B、基类型相同的两个指针变量之间可以赋值C、两个指针变量相加没意义D、基类型相同的两个指针变量之间相减可以表明所指向地址的距离正确答案:【两个指针变量相加没意义】3、问题:请选出正确的程序段().A)int*p;B)int*s,k;scanf(%d,p);*s=100;……C)int*s,k;D)int*s,k;char*p,c;char*p,e;s=k;s=k;p=c;p=c;*p='a';s=p;…*s=1;…选项:A、p是指针变量,在未获得值之前不能使用,scanf(%d,p);无意义。B、s是指针变量,在未获得值之前不能使用,此时使用*s无意义。C、定义与使用均没问题D、指针变量s和指针变量p基类型不同,s=p无意义正确答案:【定义与使用均没问题】4、问题:下面程序的输出结果是().#includestdio.hvoidmain(){inta[]={1,2,3,4,5,6,7,8,9,0,},*p;p=a;printf(“%d\n”,*p+9);}A)0B)1C)10D)9选项:A、分析错误B、分析错误C、p=a使得指针变量p指向了数组a的起始地址,*p的值是1,故输出结果为10D、分析错误正确答案:【p=a使得指针变量p指向了数组a的起始地址,*p的值是1,故输出结果为10】5、问题:程序#includestdio.hvoidmain(){intx[8]={8,7,6,5,0,0},*s;s=x+3printf(%d\n,s[2]);}输出结果是().A)随机值B)0C)5D)6选项:A、不理解指针与数组B、s=x+3使指针变量s指向了数组元素x[3]的地址,等价于s=x[3]。此时用s访问,则s[0]=5,s[1]=0,s[2]=0C、分析错误D、分析错误正确答案:【s=x+3使指针变量s指向了数组元素x[3]的地址,等价于s=x[3]。此时用s访问,则s[0]=5,s[1]=0,s[2]=0】6、问题:有如下说明inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为9的表达式是().A)*P+9B)*(P+8)C)*P+=9D)P+8选项:A、*P+9等于10B、*(P+8)相当于a][8],其值为9C、*P+=9相当于*P=*P+9,其值为10D、p+8是a[8]的地址正确答案:【*(P+8)相当于a][8],其值为9】7、问题:.以下程序调用findmax函数返回数组中的最大值#includestdio.hintfindmax(int*a,intn){int*p,*s;for(p=a,s=a;p-an;p++)if()s=p;return(*s);}voidmain(){intx[5]={12,21,13,6,18};printf(%d\n,findmax(x,5));}在下划线处应填入的是().A)psB)*p*sC)a[p]a[s]D)p-ap-s选项:A、ps中比较的是地址B、在findmax函数中的循环语句中,比较式*p*s的*p和*s其实就是数组中的元素,循环处理的的过程中,总是让s指向数组中最大元素的地址,返回*s就是求出了最大值。C、a[p]a[s]中p和s不能作为下标D、p-ap-s中比较的是地址的偏移量正确答案:【在findmax函数中的循环语句中,比较式*p*s的*p和*s其实就是数组中的元素,循环处理的的过程中,总是让s指向数组中最大元素的地址,返回*s就是求出了最大值。】8、问题:程序voidfun(int*a,inti,intj){intt;if(ij){t=a[i];a[i]=a[j];a[j]=t;fun(a,++i,--j);}}#includestdio.hvoidmain(){inta[]={1,2,3,4,5,6},i;fun(a,0,5)for(i=0;i6;i++)printf(%d,a[i]);}输出结果是().A)654321B)432156C)456123D)123456选项:A、fun函数是递归函数,实现了数组就地逆序存放B、分析错误C、分析错误D、没考虑数组的变化正确答案:【fun函数是递归函数,实现了数组就地逆序存放】9、问题:以下程序中函数sort的功能是对a所指数组中的数据进行由大到小的排序#includestdio.hvoidsort(inta[],intn){inti,j,t;for(i=0;in-1;i++)for(j=i+1;jn;j++)if(a[i]a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidmain(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;sort(aa[3],5);for(i=0;i10;i++)printf(“%d,”,aa[i]);printf(“\n”);}程序运行后的输出结果是().A)1,2,3,4,5,6,7,8,9,10B)10,9,8,7,6,5,4,3,2,1,C)1,2,3,8,7.6.5.4.9,10D)1,2,10,9,8,7,6,5,4,3选项:A、分析错误B、分析错误C、sort(aa[3],5);是对从aa[3]开始的5个元素从大到小排序,对数组中的其它元素并未处理D、分析错误正确答案:【sort(aa[3],5);是对从aa[3]开始的5个元素从大到小排序,对数组中的其它元素并未处理】10、问题:以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。#defineN10voidarrin(intx[N]){inti=0;while(iN)scanf(%d,);}在下划线处应填入的是().A)x+iB)x[i+1]C)x+(i++)D)x[++i]选项:A、i没有发生变化B、i没有发生变化C、x+(i++)是x数组中元素的地址,每次循环时让i发生了变化D、先让发生变化,没有访问到x[0]正确答案:【x+(i++)是x数组中元素的地址,每次循环时让i发生了变化】第六章单元测试1、问题:设有以下定义,叙述()是错误的。structex{intx;floaty;charz;}example;A)struct是结构体类型的保留字B)example是结构体类型名C)x、y、z是结构体类型成员名D)ex是结构体类型名选项:A、表述正确B、example是结构体类型的变量名C、表述正确D、表述正确正确答案:【example是结构体类型的变量名】2、问题:若有定义语句:struct{inta1;inta2;}a3;以下赋值语句正确的是()。A)a.a1=4;B)a2=-4;C)a3={4,5};D)a3.a2=5;选项:A、a不是结构体变量名B、不能对成员名进行赋值C、a3={4,5};在定义结构体变量时,可以用a3={4,5};进行初始化。但不允许作为一个独立的语句。D、a3是结构体类型的变量,a2是结构体的成员名,a3.a2符合结构体变量的引用格式正确答案:【a3是结构体类型的变量,a2是结构体的成员名,a3.a2符合结构体变量的引用格式】3、问题:设有以下结构体定义及初始化,表达式p-score的结果是()。structnode{intnum;floatscore;}stu[2]={101,91.5,102,92.5},*p=stu;A)101B)91.5C)102D)92.5选项:A、分析错误B、该定义使stu[0].num=101,stu[0].score=91.5,stu[1].num=102,stu[0].score=92.5,p指向数组stu的首地址,p-score的值是stu[0].score。C、分析错误D、分析错误正确答案:【该定义使stu[0].num=101,stu[0].score=91.5,stu[1].num=102,stu[0].score=92.5,p指向数组stu的首地址,p-score的值是stu[0].score。】4、问题:程序#includestdio.hstructSTU{charnum[10];floatscore[3];};voidmain(){structSTUs[3]={{20021,90,95,85},{20022,95,80,75},{20023,100,95,90}},*p=s;inti;floatsum=0;for(i=0;i3;i++)sum=sum+p-score[i];printf(%6.2f\n,sum);}输出结果是()。A)260.00B)270.00C)280.00D)285.00选项:A、解析错误B、所定义数组s各元素的值是s[0].num=20021,s[0].score[0]=90,s[0].score[1]=95,s[0].score[2]=85,s[1].num=20022,s[1].score[0]=95,s[1].score[1]=80,s[1].score[2]=75,s[2].num=20023,s[2].score[0]=100,s[2].score[1]=95,s[2].score[2]=90,指针变量p指向数组的首地址,循环完成了s[0].score[0]=90,s[0].score[1]=95,s[0].score[2]=85三个数的相加。C、解析错误D、解析错误正确答案:【所定义数组s各元素的值是s[0].num=20021,s[0].score[0]=90,s[0].score[1]=95,s[0].score[2]=85,s[1].num=20022,s[1].score[0]=95,s[1].score[1]=80,s[1].score[2]=75,s[2].num=20023,s[2].score[0]=100,s[2].score[1]=95,s[2].score[2]=90,指针变量p指向数组的首地址,循环完成了s[0].score[0]=90,s[0].score[1]=95,s[0].score[2]=85三个数的相加。】5、问题:设有如下定义:strucksk{inta;floatb;}data;int*p;若要使p指向data中的a域,正确的赋值语句是()。A)p=a;B)p=data.a;C)p=data.a;D)*p=data.a;选项:A、不能直接访问成员名B、没有取地址运算C、合法引用D、*p得到了data.a的值,p未必指向data中a域正确答案:【合法引用】6、问题:以下程序的输出结果是()。#includestdio.hstructHAR{intx,y;structHAR*p;}h[2];voidmain(){h[0].x=1;h[0].y=2;h[1].x=3;h[1].y=4;h[0].p=h[1];h[1].p=h;printf(%d%d\n,(h[0].p)-x,(h[1].p)-y);}A)12B)23C)14D)32选项:A、解析错误B、解析错误C、解析错误D、该结构体有三个域,其中两个数据域x,y,一个指针域p,程序中h[0].p指向h[1],h[1].p又指向了h[0],故h[0].p)-x的值是h[1].x,h[1].p)-y的值是h[0].y,输出结果为32正确答案:【该结构体有三个域,其中两个数据域x,y,一个指针域p,程序中h[0].p指向h[1],h[1].p又指向了h[0],故h[0].p)-x的值是h[1].x,h[1].p)-y的值是h[0].y,输出结果为32】7、问题:程序#includestdio.h#includestdlib.hstructNODE{intnum;structNODE*next;};voidmain(){structNODE*p,*q,*r;p=(structNODE*)malloc(sizeof(structNODE));q=(structNODE*)malloc(sizeof(structNODE));r=(structNODE*)malloc(sizeof(structNODE));p-num=10;q-num=20;r-num=30;p-next=q;q-next=r;printf(“%d\n”,p-num+q-next-num);}输出结果是()。A)10B)20C)30D)40选项:A、解析错误B、解析错误C、解析错误D、p-num=10,q-next-num其实是r-num,即q-next-num的值是30,输出结果为40。正确答案:【p-num=10,q-next-num其实是r-num,即q-next-num的值是30,输出结果为40。】8、问题:假定建立了以下链表结构,指针p、q分别指向如图所示的结点,则以下可以将q所指结点从链表中删除并释放该结点的语句组是()。A)free(q);p-next=q-next;B)(*p).next=(*q).next;free(q);C)q=(*q).next;(*p).next=q;free(q);D)q=q-next;p-next=q;p=p-next;free(p);选项:A、删除了q以后的所有结点B、正确C、未释放当前的q结点D、释放了当前q结点以后所有结点正确答案:【正确】9、问题:假设int类型占2个字节,long类型占4个字节,char类型占1个字节,有如下定义,则变量a所占内存字节数是()。unionU{charst[4];inti;longl;};structA{intc;unionUu;}a;A)4B)5C)6D)8选项:A、解析错误B、解析错误C、unionU定义了一个共用体,为该类型分配的空间是最大的那个域所占的空间,故该共用体占4个字节,structA定义了一个结构体,该类型变量所占的空间为各分量所占空间的和。因为a.c占2个字节,a.u占4个字节,所以变量a占据了6个字节的内存空间。D、解析错误正确答案:【unionU定义了一个共用体,为该类型分配的空间是最大的那个域所占的空间,故该共用体占4个字节,structA定义了一个结构体,该类型变量所占的空间为各分量所占空间的和。因为a.c占2个字节,a.u占4个字节,所以变量a占据了6个字节的内存空间。】10、问题:设有枚举类型定义:enumcolor{red=3,yellow,blue=10,white,black};则枚举量black的值是()。A)7B)15C)12D)14选项:A、枚举元素常量值反映定方式不对B、枚举元素常量值反映定方式不对C、枚举元素作为常量是有值的,因为blue=10,则white的值是11,black的值是12D、枚举元素常量值反映定方式不对正确答案:【枚举元素作为常量是有值的,因为blue=10,则white的值是11,black的值是12】高级语言期末考试1、问题:下面合法的C语言标识符是:。A、3xyB、XY.2C、a_2D、?xyz选项:A、3xyB、XY.2C、a_2D、?xyz正确答案:【a_2】2、问题:若有定义inta=8,b=5,c;执行语句c=a/b+0.4后,c的值是?。A、1.4B、1C、2.0D、2选项:A、1.4B、1C、2.0D、2正确答案:【1】3、问题:以下有关注释的说法中,错误的是:?。A、注释可以出现在程序的任何位置B、程序编译时,不对注释做任何处理C、程序编译时,要对注释做处理D、注释的作用是提示或解释程序的含义,帮助提高程序的可读性选项:A、注释可以出现在程序的任何位置B、程序编译时,不对注释做任何处理C、程序编译时,要对注释做处理D、注释的作用是提示或解释程序的含义,帮助提高程序的可读性正确答案:【程序编译时,要对注释做处理】4、问题:已知各变量的类型说明如下:intk,a,b,w;floatx=1.4;则以下不符合C语言语法的表达式是________。A、x%3B、w+=-2C、k=(a=2,b=3,a+b)D、a=5选项:A、x%3B、w+=-2C、k=(a=2,b=3,a+b)D、a=5正确答案:【x%3】5、问题:下列定义变量的语句错误的是。A、int_intB、doubleint_C、charForD、floatUS$选项:A、int_intB、doubleint_C、charForD、floatUS$正确答案:【floatUS$】6、问题:以下能正确地定义整型变量a,b和c并为它们都赋初值为5的语句是。A、inta=b=c=5;B、inta,b,c=5;C、inta=5,b=5,c=5;D、inta,c=b=5;选项:A、inta=b=c=5;B、inta,b,c=5;C、inta=5,b=5,c=5;D、inta,c=b=5;正确答案:【inta=5,b=5,c=5;】7、问题:以下程序执行后输出结果是?。main(){inta=5,b=4,c=3,d=2;if(a>b>C)printf(%d\n,d);elseif((c-1>=d)==1)printf(%d\n,d+1);elseprintf(%d\n

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论