C语言期末考试模拟练习题 字符串指针结构体单选题 含解析答案_第1页
C语言期末考试模拟练习题 字符串指针结构体单选题 含解析答案_第2页
C语言期末考试模拟练习题 字符串指针结构体单选题 含解析答案_第3页
C语言期末考试模拟练习题 字符串指针结构体单选题 含解析答案_第4页
C语言期末考试模拟练习题 字符串指针结构体单选题 含解析答案_第5页
已阅读5页,还剩17页未读, 继续免费阅读

下载本文档

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

文档简介

期末考试模拟练习题(3)一、单选题(共40题,40分)1、有以下程序#include<stdio.h>intmain(){charstr[]="xyz",*ps=str;while(*ps)ps++;for(ps--;ps-str>=0;ps--)puts(ps);return0;}执行后输出结果是______.A、yzxyzB、zyzC、zyzxyzD、xxyxyz正确答案:C解析:2、有以下程序#include<stdio.h>structst{intx;inty;}data[2]={1,10,2,20};main(){structst*p=data;printf("%d,",p->y);printf("%d\n",(++p)->x);2/26}程序的运行结果是______.A、10,1B、20,1C、10,2D、20,2正确答案:C解析:3、请选出以下程序的输出结果______.#include<stdio.h>intsub(ints[],inty){staticintt=3;y=s[t];t--;returny;}main(){inta[]={1,2,3,4},i,x=0;for(i=0;i<4;i++){sub(a,x);printf("%d",x);}printf("\n");}A、1234B、4321C、0000D、4444正确答案:C解析:4、以下程序的输出结果是______.#include<stdio.h>voidmain(){chara[10]={'1','2','3','4','5','6','7','8','9','\0'};inti;i=8;3/26printf("%s\n",&a[i-3]);}A、6B、6789C、6'D、789正确答案:B解析:5、以下程序的输出结果是______.main(){char*s="12134211";intv[4]={0,0,0,0},k,i;for(k=0;s[k];k++){switch(s[k]){case'1':i=0;case'2':i=1;case'3':i=2;case'4':i=3;}v[i]++;}for(k=0;k<4;k++)printf("%d",v[k]);}A、4211B、0008C、4678D、8888正确答案:B解析:6、阅读下面的程序#include<stdio.h>voidmain(){inti,j;scanf("%2d%*3d%2d",&i,&j);printf("%d%4d",i,j);}如果从键盘上输入1234567<回车>则程序的运行结果是()A、12674/26B、12345C、12345D、程序语法出错正确答案:A解析:7、假定int类型变量占用4个字节,其有定义:intx[8]={0,2,4};则数组x在内存中所占字节数是().A、3B、6C、10D、32正确答案:D解析:8、以下程序段()x=-1;do{x=x*x;}while(!x);A、是死循环B、循环执行两次C、循环执行一次D、有语法错误正确答案:C解析:9、设a和b均为double型常量,且a=5.5、b=2.5,则表达式((int)a+b/b)的值是______.A、6.500000B、6C、5.500000D、6.000000正确答案:D解析:10、voidfun(intx){inty;5/26y=++x;printf("x=%d\n",y);}voidmain(){fun(17);}程序输出的结果是()A、17B、18C、19D、20正确答案:B解析:11、以下程序的执行结果是_______.main(){intnum=0;while(num<=2){num++;printf("%d,",num);}}A、0,1,2B、1,2,C、1,2,3,D、1,2,3,4,正确答案:C解析:12、定义了三个变量:inta,b;floatc;使用scanf函数为三个变量输入值,哪个语句是正确的:()A、scanf("%d,%d,%f",a,b,c);B、scanf("%d,%d,%d",&a,&b,&c);C、scanf("%d,%d,%d",a,b,c);D、scanf("%d,%d,%f",&a,&b,&c);正确答案:D解析:6/2613、以下选项中不合法的用户标识符是:()A、PAB、A$C、_567D、Sim_K正确答案:B解析:14、以下程序的输出结果是______.#defineSQR(X)X*Xmain(){inta=16,k=2,m=1;a/=SQR(k+m)/SQR(k+m);printf("%d\n",a);}A、16B、2C、9D、1正确答案:B解析:15、有以下程序voidsum(inta[]){a[0]=a[1]++;}main(){inta[10]={10,9,8,7,6,5,4,3};sum(&a[2]);printf("%d\n",a[2]);}程序运行后的输出结果是______.A、6B、7C、8D、9正确答案:B解析:16、表达式(double)(28/6)的值为:()7/26A、3B、4C、4.0D、5正确答案:C解析:17、若有定义语句inta,b,c,*p=&c;以下哪个选项能正确执行()A、scanf("%d",a,b,c);B、scanf("%d%d%d",a,b,c);C、scanf("%d",p);D、scanf("%d",&p);正确答案:C解析:18、设a=5、b=6、c=7、d=8、m=2、n=2,执行(m=a>b)&&(n=c>d)后n的值为______.A、1B、2C、3D、4正确答案:B解析:19、以下哪个不是C语言的合法关键字:()A、switchB、caseC、printfD、default正确答案:C解析:20、若二维数组a有m列,则在a[i][j]前的元素个数为().A、j*m+iB、i*m+jC、i*m+j-1D、i*m+j+18/26正确答案:B解析:21、设有定义语句intx[6]={2,4,6,8,5,7},*p=x,i;要求依次输出x数组6个元素中的值,不能完成此操作的语句是______.A、for(i=0;i<6;i++)printf("%2d",*(p++));B、for(i=0;i<6;i++)printf("%2d",*(p+i));C、for(i=0;i<6;i++)printf("%2d",*p++);D、for(i=0;i<6;i++)printf("%2d",(*p)++);正确答案:D解析:22、在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是______.A、地址传递B、单向值传递C、由实参传给形,再由形参传回实参D、传递方式由用户指定正确答案:B解析:23、若执行以下程序时,从键盘上输入123456,则输出的结果是:()#include<stdio.h>voidmain(){inta=1,b=2;scanf("%2d%2d",&a,&b);printf("%d%d\n",a,b);}A、12B、1234562C、1234D、12124正确答案:C解析:24、设有charstr[]="Beijing";则执行9/26printf("%d\n",strlen(strcpy(str,"China")));后的输出结果为______.A、5B、7C、12D、14正确答案:A解析:25、执行下列语句后变量x和y的值是().y=10;x=y++;A、x=10,y=10B、x=11,y=11C、x=10,y=11D、x=11,y=10正确答案:C解析:26、#defineP3floatF(intx){return(P*x*x);}该函数的类型是______.A、整型B、浮点型C、字符型D、无类型正确答案:B解析:27、charw='a';intx=1;f1oaty=2.5;doublez=2.5;则表达式w*x+z-y值的数据类型为:_________.A、charB、intC、floatD、double正确答案:D解析:28、有以下程序main(){charch[]={"wwwwxyz"},*p;p=&ch[3];printf("%s",p);}程序执行后的输出结果是______A、wxyzB、wwxyzC、xyzD、wwwxyz正确答案:A解析:29、以下程序的输出结果是______.main(){intx[2][2]={4,3,2,1},*p=&x[0][0];printf("%d",((*p)+1));}A、1B、2C、4D、5正确答案:D解析:30、若有定义语句:doublex,y,*px,*py;执行了px=&x,py=&y;之后,正确的输入语句是()A、scanf("%f%f",x,y);B、scanf("%f%f"&x,&y);C、scanf("%lf%le",px,py);D、scanf("%lf%lf",x,y);正确答案:C解析:31、语句:printf("%d",(a=2)&&(b=-2));的输出结果是().11/26B、wwxyzC、xyzD、wwwxyz正确答案:A解析:29、以下程序的输出结果是______.main(){intx[2][2]={4,3,2,1},*p=&x[0][0];printf("%d",((*p)+1));}A、1B、2C、4D、5正确答案:D解析:30、若有定义语句:doublex,y,*px,*py;执行了px=&x,py=&y;之后,正确的输入语句是()A、scanf("%f%f",x,y);B、scanf("%f%f"&x,&y);C、scanf("%lf%le",px,py);D、scanf("%lf%lf",x,y);正确答案:C解析:31、语句:printf("%d",(a=2)&&(b=-2));的输出结果是().A、0B、1C、-1D、不确定正确答案:B解析:32、在使用sqrt()函数的程序中需要用到哪个头文件:()12/26A、math.hB、stdlib.hC、time.hD、string.h正确答案:A解析:33、inta[10];合法的数组元素的最小下标值为().A、10B、9C、1D、0正确答案:D解析:34、设有如下说明structST{longa;intb;charc[2];}NEW;则下面叙述中正确的是______.A、以上的说明形式非法B、ST是结构体变量C、NEW是一个结构体类型D、NEW是一个结构体变量正确答案:D解析:35、C语言执行程序的开始执行点是().A、程序中第一条可以执行的语句B、程序中第一个函数C、程序中的main函数D、包含文件中的第一个函数正确答案:C解析:13/2636、#defineA3.897678#include<stdio.h>main(){printf("A=%f",A);}程序运行结果为().A、3.897678=3.897678B、3.897678=AC、A=3.897678D、无结果正确答案:C解析:37、下面有关宏替换的叙述不正确的是A、宏替换不占用运行时间B、宏名无类型C、宏替换只是字符替换D、宏名必须用大写字母表示正确答案:D解析:38、设有定义:inta;floatb;,执行scanf("%2d%f",&a,&b);语句时,若从键盘输入876543.0<CR>,a和b的值分别是().A、876和543.000000B、87和6543.000000C、87和543.000000D、76和543.000000正确答案:B解析:39、若有说明inta[3][4];则a数组元素的非法引用是().A、a[0][2]B、a[1][3]C、a[2][0]D、a[0][4]14/26正确答案:D解析:40、有以下程序structS{intx;chary;};structSs1,s2;下面选项中说法正确的是___________.A、s1,s2是数据类型B、S是所定义的结构体变量C、可以使用S.x的方式访问数据项D、可以使用s1.y方式访问数据项正确答案:D解析:二、填空题(共6题,30分)1、/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后除以10的余数代替该位数字。再将新生成数据的第一位和第四位交换,第二位和第三位交换。例如:输入一个四位整数1234,则结果为:9876。------------------------------------------------------*/#include<stdio.h>voidmain(){inta,i,aa[4],t;printf("输入一个四位整数:");/**********FOUND**********/scanf("%d",a);aa[0]=a%10;/**********FOUND**********/aa[1]=a%100%10;15/26aa[2]=a%1000/100;aa[3]=a/1000;/**********FOUND**********/for(i=0;i<3;i++){aa[i]+=5;aa[i]%=10;}for(i=0;i<=3/2;i++){t=aa[i];aa[i]=aa[3-i];aa[3-i]=t;}for(i=3;i>=0;i--)printf("%d",aa[i]);}正确答案:第1空:scanf("%d",&a);第2空:aa[1]=a%100/10;;aa[1]=a/10%10;第3空:for(i=0;i<=3;i++);for(i=0;i<4;i++)解析:2、/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:找出一个大于给定整数m且紧随m的素数,并作为函数值返回。16/26------------------------------------------------------*/#include<stdio.h>intfun(intm){/**********FOUND**********/inti;k;for(i=m+1;;i++){for(k=2;k<i;k++)/**********FOUND**********/if(i%k!=0)break;/**********FOUND**********/if(k=i)return(i);}}voidmain(){intn;printf("\nPleaseentern:");scanf("%d",&n);printf("%d\n",fun(n));}正确答案:第1空:inti,k;;inti;intk;;intk,i;;intk;inti;第2空:if(i%k==0);if(!(i%k))第3空:if(k==i);if(i==k);if(k>=i)17/26解析:3、/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:将s所指字符串的反序和正序进行连接形成一个新串放在t所指的数组中。例如:当s所指的字符串的内容为"ABCD"时,t所指数组中的内容为"DCBAABCD"。------------------------------------------------------*/#include<stdio.h>#include<string.h>/**********FOUND**********/voidfun(chars,chart){inti,d;/**********FOUND**********/d=len(s);/**********FOUND**********/for(i=1;i<d;i++)t[i]=s[d-1-i];for(i=0;i<d;i++)t[d+i]=s[i];/**********FOUND**********/t[2*d]='/0';}voidmain(){chars[100],t[100];printf("\nPleaseenterstringS:");scanf("%s",s);fun(s,t);printf("\nTheresultis:%s\n",t);}正确答案:第1空:voidfun(chars[],chart[]);voidfun(char*s,char*t)18/26第2空:d=strlen(s);第3空:for(i=0;i<d;i++);for(i=0;d>i;i++);for(i=0;i<=d-1;i++);for(i=0;d-1>=i;i++)第4空:t[2*d]='\0';;t[i+d]='\0';;t[i+d]=NULL;;t[2*d]=NULL;;t[2*d]=0;;t[i+d]=0;解析:4、/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:根据整型形参m,计算如下公式的值:y=1/2+1/8+1/18+...+1/2m*m------------------------------------------------------*/#include<stdio.h>doublefun(intm){/**********FOUND**********/doubley=0inti;/**********FOUND**********/for(i=1;i<m;i++){/**********FOUND**********/y=+1.0/(2*i*i);}return(y);}19/26voidmain(){intn;printf("Entern:");scanf("%d",&n);printf("\nTheresultis%1f\n",fun(n));}正确答案:第1空:doubley=0;第2空:for(i=1;i<=m;i++)第3空:y+=1.0/(2*i*i);;y=y+1.0/(2*i*i);解析:5、/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:将长整型数中每一位上为偶数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。例如:当s中的数为:87654时,t中的数为:864。------------------------------------------------------*/#include<stdio.h>voidfun(longs,long*t){intd;longsl=1;*t=0;while(s>0){d=s%10;/**********FOUND**********/if(d%2=0){/**********FOUND**********/*t=d*sl+t;sl*=10;}/**********FOUND**********/s\=10;}}voidmain(){longs,t;printf("\nPleaseenters:");scanf("%ld",&s);fun(s,&t);printf("Theresultis:%ld\n",t);}正确答案:第1空:if(d%2==0);if(!(d%2)==1);if(d%2!=1)第2空:*t=d*sl+*t;;*t+=d*sl;;*t+=sl*d;;*t=*t+d*sl;;*t=*t+sl*d;;*t=sl*d+*t;第3空:s/=10;;s=s/10;解析:21/266、/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:计算数组元素中值为正数的平均值(不包括0)。例如:数组中元素的值依次为39,-47,21,2,-8,15,0,则程序的运行结果为19.250000。------------------------------------------------------*/#include<stdio.h>doublefun(ints[]){/**********FOUND**********/intsum=0.0;intc=0,i=0;/**********FOUND**********/while(s[i]=0){if(s[i]>0){sum+=s[i];c++;}i++;}/**********FOUND**********/sum\=c;/**********FOUND**********/returnc;}voidmain(){intx[1000];inti=0;printf("Pleaseinputsomenumbers,andendwithazero:\n");do{scanf("%d",&x[i]);}while(x[i++]!=0);printf("%lf\n",fun(x));}正确答案:第1空:22/26doublesum=0.0;;doublesum=0;第2空:while(s[i]!=0);while(!s[i]==0);while(s[i])第3空:sum/=c;

温馨提示

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

评论

0/150

提交评论