C语言模拟考试课程组测试 二维数组运算符循环单选题 含答案_第1页
C语言模拟考试课程组测试 二维数组运算符循环单选题 含答案_第2页
C语言模拟考试课程组测试 二维数组运算符循环单选题 含答案_第3页
C语言模拟考试课程组测试 二维数组运算符循环单选题 含答案_第4页
C语言模拟考试课程组测试 二维数组运算符循环单选题 含答案_第5页
已阅读5页,还剩14页未读, 继续免费阅读

下载本文档

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

文档简介

模拟考试-课程组测试(2)一、单选题(共40题,40分)1、若有以下的定义:intt[3][2];能正确表示t数组元素地址的表达式是().A、&t[3][2]B、t[3]C、&t[1]D、t[2]正确答案:D解析:AB均越界C为值2、若执行以下程序,则输出的结果是:#include<stdio.h>voidmain(){inta=0,b=1,c=2;if(++a>0||++b>0)--->没有进行运算++c;printf("%d,%d,%d",a,b,c);}A、1,1,2B、1,2,2C、1,2,3D、1,1,3正确答案:D解析:3、以下程序输出结果正确的是().#include<stdio.h>voidmain(){inti;for(i=1;i<=3;i++){if(i%2==1)printf("$");elseprintf("*");}}2/21A、$$*B、$*$C、*$*D、**$正确答案:B解析:4、函数调用:strcat(strcpy(str1,str2),str3)的功能是()A、将串str1复制到串str2中后再连接到串str3之后B、将串str1连接到串str2之后再复制到串str3之后C、将串str2连接到串str1之后再将串str1复制到串str3中D、将串str2复制到串str1中后再将串str3连接到串str1之后正确答案:D解析:5、有以下函数fun(char*a,char*b){while((*a!='\0')&&(*b!='\0')&&(*a==*b)){a++;b++;}return(*a-*b);}该函数的功能是()A、计算a和b所指字符串的长度之差B、将b所指字符串复制到a所指字符串中C、将b所指字符串连接到a所指字符串后面D、比较a和b所指字符串的大小正确答案:D解析:该函数的功能是比较a和b所指字符串的大小,当a所指定字符串大于b所指时,函数返回正数,当a所指字符串小于b所指时,函数返回负数,当a所指字符串等于b所指时,函数返回零。6、有以下程序#include<stdio.h>#defineN5#defineMN+1#definef(x)(x*M)main(){inti1,i2;i1=f(2);i2=f(1+1);3/21printf("%d%d\n",i1,i2);}程序的运行结果是______.A、1212B、117C、1111D、127正确答案:B解析:根据宏替换的替换规则,我们可知,f(2)=2*N+1=2*5+1=11,f(1+1)=1+1*N+1=1+1*5+1=7。7、下面程序main(){inti;intaa[3][3]={{2},{4},{6}};for(i=0;i<3;i++)aa[i][i]=aa[i][i]+1;printf("%d\n",aa[0][0]);}的输出是______.A、3B、1C、6D、0正确答案:A解析:aa[0][0]=0+1=18、inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;b=p[6];|-->4b中的值是______.A、10B、6C、8D、9正确答案:A解析:9、下面的程序中_____错误(每行程序前面的数字是行号).1#include<stdio.h>2main()3{4floata[3]={0.0};5inti;6for(i=0;i<3;i++)scanf("%d",a[i]);4/217for(i=1;i<3;i++)a[0]=a[0]+a[i];8printf("%f\n",a[0]);9}A、没有B、第4行C、第6行D、第8行正确答案:C解析:浮点数应该用%f输入,不应该用%d10、以下程序的输出结果是______.main(){inti,x[2][2]={1,2,3,4},*p=&x[0][0];for(i=0;i<4;i+=2)printf("%d",p[i]);}A、14B、13C、12D、11正确答案:B解析:p[0]=x[0][0]-->1,p[2]=x[2][2]-->311、a,b,c均为int变量.赋值表达式a=(b=10)%(c=6)执行后,a,b,c的值依次为_____.A、1,10,6B、4,10,6C、2,10,6D、不能确定正确答案:B解析:在这里()运算级最高。12、有以下程序#defineP3voidF(intx){return(P*x*x);}main(){printf("%d\n",F(3+5));}程序运行后的输出结果是______.5/21A、192B、29C、25D、编译出错正确答案:D(void不能和return共用)解析:return语句用于从被调函数带回一个函数值。void关键字表示“无类型”,即不需要从被调函数中带回函数值,所以不需要return语句,故编译时出错。13、以下程序段的输出结果为().intx;for(x=1;x<=10;x++)if(x%3==0)printf("%d",++x);A、4710B、47C、369D、36912正确答案:A解析:1和2对3取余都是3,不是014、#include<stdio.h>main(){inti,j,m=55;for(i=1;i<=3;i++)for(j=3;j<=i;j++)m=m%j;printf(''%d\n'',m);}程序的运行结果是().A、0B、1C、2D、3正确答案:B解析:55对3取余为115、全局变量的定义应该在().A、函数内部B、函数外面C、文件外面D、最后一行正确答案:B6/21解析:全局变量的定义应该在函数外面16、以下函数调用语句中实参的个数是().S(a1,a2);A、2B、3C、4D、5正确答案:A解析:17、以下程序的输出结果是______.main(){chara[10]={'1','2','3','4','5','6','7','8','9','\0'},*p;inti;i=8;p=a+i;printf("%s\n",p-3);}A、6B、6789C、6'D、789正确答案:B解析:p-3=a+8-3=a+5,则p指向a[5],则p指向6,所以输出如B所示结果。18、有以下程序main(){char*s[]={"apple","pear","peach"},*p;p=s[1];printf("%c,%s\n",*(p+1),s[0]);}执行后输出结果是______A、e,pearB、e,appleC、p,pearD、p,peach正确答案:B解析:7/2119、下面程序的输出是______.intm=13;intfun2(intx,inty){intm=3;return(x*y-m);}main(){inta=7,b=5;printf("%d\n",fun2(a,b)/m);}A、1B、2C、7D、10正确答案:B解析:本题考查函数的调用。函数fun2的作用是将形参x和y的值相乘后减去3,在fun2中的变量m是一个局部变量,它的值在fun2函数内有效;在主函数中的m指的是全局变量,其值为13,所以fun2(a,b)/m的值为(7*5-3)/13,即2。20、若有说明inta[3][4];则对a数组元素的正确引用是().A、a[2][4]越界B、a[1,3]格式C、a[2][0]D、a(2)(1)[]正确答案:C解析:21、有以下程序#include<string.h>main(){charp[]={'a','b','c'},q[10]={'a','b','c'};printf("%d%d\n",strlen(p),strlen(q));}以下叙述中正确的是______.A、在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3B、由于p数组中没有字符串结束符,长度不能确定;但q数组中字符长度为3C、由于q数组中没有字符串结束符,长度不能确定;但p数组中字符长度为3D、由于p和q数组中没有字符串结束符,故长度都不能确定正确答案:B解析:使用初始化列表对字符数组赋初值,系统不会自动为其添加字符串结束符,使用字符串初始化时才会自动添加,所以选项A是错的。数组长度在未指定的情况下由初始化列表项中数据的个数决定,若已指定且初始化项数不足时,多出部分会自动初8/21始化为0,0等价于宁符串结束符'\0'。所以选项B是正确的,C和D都是错误的。本题应该选B。22、t为int类型,进入下面的循环之前,t的值为0while(t=1){……}则以下叙述中正确的是______.A、循环控制表达式的值为0B、循环控制表达式的值为1C、循环控制表达式不合法D、以上说法都不对正确答案:B解析:循环控制表达式的值为123、下面程序的输出结果是().#include<stdio.h>voidmain(){unsignedintnum,k;num=26;k=1;do{k*=num%10;num/=10;}while(num);printf("%d\n",k);}A、2B、12C、60D、18正确答案:B解析:24、inta=7;floatx=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是________.A、2.500000B、3.500000C、2.000000D、0.000000正确答案:A9/21解析:25、下列描述中不正确的是_____.A、字符型数组中可以存放字符串B、可以对字符串进行整体输入、输出C、可以对整型数组进行整体输入、输出D、不能在赋值语句中通过赋值运算符"="对字符型数组进行整体赋值正确答案:C解析:不可以对整型数组进行整体输入、输出26、以下对二维数组a的正确说明是().A、inta[3][];B、floata(3,4);C、doublea[3][4];D、floata(3)(4);正确答案:C解析:行可以缺失(前面一个),列不可以缺失(后面的必须有)27、已有定义:inti,a[10],*p;,则合法的赋值语句是A、p=100;B、p=a[5];C、p=a[2]+2;D、p=a+2;正确答案:D解析:本题考核的知识点是指针变量的赋值。本题中定义了一个整型数组a和一个整型指针变量p。选项A)中将一个整型数赋值给一个指针变量,C语言规定,只能将地址赋给指针变量,故选项A)不正确;选项B)中a[5]为一数组元素,同样不是一个地址,故选项B)不正确;选项C)中a[2]为一数组元素,同样是一个整型数据,不是个地址,故选项C)不正确;选项D)中数组名a代表数组首地址加2,代表第三个元素的地址,故选项D)正确,所以,4个选项中选项D)符合题意。28、若有定义:doublex[]={0,2.3,4.5};则数组x存放的元素个数是_____.A、不确定B、1C、2D、3正确答案:D解析:11/21D、q=newint;正确答案:C解析:p=&c;意思:取c的地址给p,类型不对。p要的是指向int型的变量的地址,但这里却给了个float型的。q=p;:用p给q赋值。类型不对。p是指向int的指针,q却是指向float的指针,类型不同不能赋值。除非强制转换。p=NULL;:p是一个指针,但它不指向任何变量,所以答案对的。也就是暂时先不给它赋值,以后再赋值。q=new:语法错误。new是关键字。33、下列属于头文件包含的命令是:()A、#defineB、#include<time.h>C、#endifD、#else正确答案:B解析:34、函数不需要返回值时,函数类型应是()A、doubleB、intC、charD、void正确答案:D解析:void和return不共存35、有如下定义structstudent{charname[20];intno;};structstudents={"YaoHui",2};根据上述定义,能输出数据项name的语句是()A、printf("%c",);B、printf("%s",);C、printf("%d",);D、printf("%c",s.no);正确答案:B解析:12/2136、设有以下说明语句struct{intn;charch[8];}PER;则下面叙述中正确的是______.A、PER是结构体变量名B、PER是结构体类型名C、struct是结构体类型D、n是结构体变量正确答案:A我觉得应该选B解析:37、有以下程序段().charch;intk;ch='a';k=12;printf(''%c,%d,'',ch,ch,k);printf(''k=%d\n'',k);已知字符a的ASCII十进制代码为97,则执行上述程序段后输出结果是()A、因变量类型与格式描述符的类型不匹配输出无定值B、输出项与格式描述符个数不符,输出为零值或不定值C、a,97,12k=12D、a,97,k=12正确答案:D解析:1、%c打印字符,ch='a'所以打印a2、%d打印十进制整数,字符'a'对应的整型值(ASCII码)是973、虽然printf的第三个参数是k,但是在前面的""格式串里没有打印要求(例如%d),所以不会打印4、第二个printf,%d是打印是十进制整数,k=12所以打印12(另外"k="是在格式串里面有的,就原样输出了)38、执行下列程序段后,m的值是________.intw=2,x=3,y=4,z=5,m;m=(w<x)?w:x;A、4B、3C、5D、2正确答案:D解析:(x)?a:b在x是真时返回a,否则返回b39、以下程序的输出结果是______.main(){13/21intx[2][2]={4,3,2,1},*p=&x[1][0];printf("%d",*(p+1));}A、1B、2C、3D、4正确答案:A解析:*p=&x[1][0]为2(二行一列),p+1为1(二行二列)40、执行下列语句后,z的值是______.intx=4,y=25,z=5;z=y/x*z;A、31B、30C、5D、1正确答案:B解析:二、填空题(共6题,30分)1、/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。例如:若输入字符串“-1234”,则函数把它转换为整数值-1234。------------------------------------------------------*/#include<stdio.h>longfun(char*p){inti=1;longn=0;/**********FOUND**********/if(p=='-'){p++;i=-1;}elseif(*p=='+')p++;14/21while(*p>='0'&&*p<='9')n=10*n+*p++-'0';/**********FOUND**********/returnn+i;}voidmain(){chars[6];longn;printf("Enterastring:\n");gets(s);/**********FOUND**********/n==fun(s);printf("%ld\n",n);}正确答案:第1空:if(*p=='-')第2空:returnn*i;第3空:n=fun(s);解析:2、/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:判断整数x是否是同构数。若是同构数,函数返回1;否则返回0。说明:所谓“同构数”是指这个数出现在它的平方数的右边。例如:输入整数25,25的平方数是625,25是625中右侧的数,所以25是同构数。注意:x的值由主函数从键盘读入,要求不大于1000。------------------------------------------------------*/15/21#include<stdio.h>intfun(intx){/**********FOUND**********/intk/**********FOUND**********/k=x;/**********FOUND**********/if((k%10==x)&&(k%100==x)&&(k%1000==x))return1;elsereturn0;}voidmain(){intx,y;printf("\nPleaseenteraintegernumbers:");scanf("%d",&x);if(x>100){printf("dataerror!\n");exit(0);}y=fun(x);if(y)printf("%dYES\n",x);elseprintf("%dNO\n",x);}正确答案:第1空:intk;第2空:k=x*x;第3空:if((k%10==x)||(k%100==x)||(k%1000==x));if((k%100==x)||(k%10==x)||(k%1000==x));if((k%1000==x)||(k%100==x)||(k%10==x));if((k%10==x)||(k%1000==x)||(k%100==x));if((k%100==x)||(k%1000==x)||(k%10==x));if((k%1000==x)||(k%10==x)||(k%100==x))16/21解析:3、/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。------------------------------------------------------*/#include<stdio.h>voidmain(){charc;intletters=0,space=0,digit=0,others=0;printf("pleaseinputsomecharacters\n");/**********FOUND**********/while((c=getchar())=='\n'){/**********FOUND**********/if(c>='a'&&c<='z'&&c>='A'&&c<='Z')letters++;/**********FOUND**********/elseif(c=!'')space++;elseif(c>='0'&&c<='9')digit++;elseothers++;}printf("allinall:char=%dspace=%ddigit=%dothers=%d\n",letters,space,digit,others);}正确答案:第1空:while((c=getchar())!='\n')第2空:if(c>='a'&&c<='z'||c>='A'&&c<='Z');if(c<='z'&&c>='a'||c>='A'&&c<='Z');if(c<='z'&&c>='a'||c<='Z'&&c>='A');if(c>='a'&&c<='z'||c<='Z'&&c>='A')第3空:elseif(c=='')解析:4、/*-------------------------------------------------------【程序填空】---------------------------------------------------------功能:输入一个整数,计算它可能是哪两个整数的平方和,并打印结果数据。如:34是5和3或3和5的平方和。-------------------------------------------------------*/#include<stdio.h>/*fori/Ofunctions*/#include<stdlib.h>/*foratoi()*/17/21#include<math.h>/*forsqrt()*/voidmain(void){intgiven;/*thegivennumber*/introw,column;/*rowandcolumnindicators*/intcount;/*numberofsolutions*/charline[100];printf("\nRepresentingaGivenNumberastheSumofTwoSquares");printf("\n=====================================================\n");printf("\nAnintegerPlease--->");gets(line);given=atoi(line);printf("\nCountXY");printf("\n---------------");row=1;/*startsfromfarenough*/column=(int)(sqrt((double)given)+0.5);count=0;/*sosolutionyet*/while(row<=given&&column>0)/*scandown...*/if(row*row+column*column==given){/***********SPACE***********/【?】;printf("\n%5d%7d%7d",count,row,column);row++;column--;}elseif(row*row+column*column>given)/***********SPACE***********/【?】;else/***********SPACE***********/【?】;if(count==0)printf("\n\nSorry,NOANSWERfound.");elseprintf("\n\nThereare%dpossibleanswers.",count);}正确答案:第1空:count++;++count;count=count+1第2空:column--;--column;column=column-1第3空:row++;++row;row=row+1解析:5、/*-------------------------------------------------------【程序填空】---------------------------------------------------------功能:对数组A中的N(0<N<100)个整数从小到大进行连续编号,输出各个元素的编号。要求不能改变数组A中元素的顺序,且相同的整数要具有相同的编号。例如:数组是:A=(5,3,4,7,3,5,6)则输出为:(3,1,2,5,1,3,4)-------------------------------------------------------*/#include<stdio.h>18/21main(){inti,j,k,n,m=1,r=1,a[2][100]={0};printf("Pleaseentern:");scanf("%d",&n);for(i=0;i<n;i++){printf("a[%d]=",i);scanf("%d",&a[0][i]);}/***********SPACE***********/while(【?】){for(i=0;i<n;i++)if(a[1][i]==0)/***********SPACE***********/【?】;k=i;for(j=i;j<n;j++)/***********SPACE***********/if(a[1][j]==0&&a[0][j]<a[0][k])【?】;a[1][k]=r++;m++;for(j=0;j<n;j++)if(a[1][j]==0&&a[0][j]==a[0][k]){a[1][j]=a[1][k];m++;}}for(i=0;i<n;i++)printf("a[%d]=%d,%d\n",i,a[0][i],a[1][i]);}正确答案:第1空:m<n;n>m第2空:break第3空:k=j解析:6、/*-------------------------------------------------------【程序填空】---------------------------------------------------------功能:编程求任意给定的n个数中的奇数的连乘积,偶数的平方和以及0的个数,n通过sc

温馨提示

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

评论

0/150

提交评论