C语言程序设计模拟试题A(附答案)_第1页
C语言程序设计模拟试题A(附答案)_第2页
C语言程序设计模拟试题A(附答案)_第3页
C语言程序设计模拟试题A(附答案)_第4页
C语言程序设计模拟试题A(附答案)_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

1、C语言程序设计模拟试卷A一、单项选择题(每题2分,共20分)1、下列有关C语言的叙述中错误的是(D)。A)C语句必须以分号结束B)任何一个C程序中有且只有一个主函数C)复合语句在语法上可被看作一条语句D)C程序中对数据的任何操作都可由运算符实现2、以下不能定义为用户标识符的是(C)。A)MAINB)_HJC)20ngD)LINE13、以下能正确定义一维数组的是(C)。A)inta5=0,1,2,3,4,5;B)inta5="012345”;C)chara="012345"D)chara5=0,1,2,3,4,5;4、执行下列程序段后输出的结果是(C)。x=9;wh

2、ile(x>7)printf(“*”-%xA)*B)*C)*D)*5、设charstr110="ABCDS,str210="xyz”;D) 0则执行语句printf("d”,strlen(strcpy(str1,str2)后的输出结果是解析:strcpy(str1,str2);后,str1里是"XYZ",Z后面有字符串结束符strcpy(str1,str2);执行后,函数返回的是str1,因为str1里是新值"XYZ",而strlen(strcpy(str1,str2)就是strlen(str1的新值),所以得3str

3、len统计到字符串结束符以前,即,不计入字符串结束符。A)9B)8C)5D)36、若用数组名作为函数调用的实参,则传递给形参的是(A)。A)数组的首地址B)数组第一个元素的值C)数组中全部元素的值D)数组元素的个数7、在C程序中,若未在函数定义时说明函数类型,则函数默认的类型为(C)A)voidB)doubleC)intD)char8、下面不能正确进行字符串赋值操作的语句是(C)。A)chars5="ABCD"B)chars5;s="ABCD"C)char*s;s="ABCDEF"D)char*s="ABCD"解析

4、:这样理论上的没错的把s指针指向字符串可以改变s指针但不能改变其指向的值正确的应该是这样chars="ABCDEF"或chars8;strcpy(s,"ABCDEF");9、设有说明ints5=1,3,5,7,9;int*p=s;则下列表达式中值为3的是(C)。A)+pB)+(*p)C)*(+p)D)*(p+=2)解析:A是把p得地址后移一个int单位长度,即使p指向数组的第二个元素。B是取得p当前指向的元素值然后加1,即1+1=2;C是先移动p,使其指向第二个元素,然后取得当前指针指向的元素值,即3.D是先使p指向数组的第三个元素,然后去的当前指针指向

5、的元素的值,即5。1R下面程序的卒&出结果是(B)intm=13;intfun(intx,inty)intm=3;return(x*y-m);main()inta=7,b=5;printf(“%n”d,fun(a,b)/m);A)1B)2C)3D)10二、填空题。(每空2分,共30分)1 .设有变量说明语句:intx=1,y=2;则执行下述printf语句的输出结果是_1.000000_printf("%fn",1.0+x/y);2 .执行下述程序:#include<stdio.h>main()intx,y;scanf("%2d%*2s%1d&

6、quot;,&x,&y);printf("%dn",x+y);若从键盘输入:12345671则程序的输出结果是_17_。解析:x,y为int类型,x的长度为2,y的长度为1,即x为12,y为5,故x+y=173 .以下程序的功能是:从键盘上输入若干名学生的成绩(百分制,可带小数,以输入负数或0为结束标志),统计并输出最高成绩和最低成绩。请填空。#include<stdio.h>main()floatx,amax,amin;scanf("%f",&x);amax=x;amin=x;while(x>0)if(x>

7、;amax)amax=x;elseif(x<amin)amin=x;scanf("%f,&x);printf("namax=%fnamin=%fn",amax,amin);4 .设n是整型变量,且已具有某正整数值。根据下述数学式111111122334nn1求s的值并输出。可编写如下之程序段来实现。请填空。intk;doubles,d;s=0.0;d=1.0;k=0;dos=s+d;_k+;d=1.0/(k*(k+1);while(k<=n);printf("%fn",s);5 .执行下述程序白输出结果是-3下0443#in

8、clude<stdio.h>main()inta6,i;for(i=0;i<6;i+)ai=9*(i-2+4*(i>3)%5;printf("%3d",ai);printf("n");解析:(i>3)为真时值为1,反之为0,6 .执行下述程序白输出结果是6o#include<stdio.h>main()inta=2,4,6,*ptr=&a0,x=8,y,z;for(y=0;y<3;y+)z=(*(ptr+y)<x)?*(ptr+y):x;printf("%dn",z);7

9、.执行下述程序白输出结果是60#include<stdio.h>main()inta2=10,20,30,40,50,60,(*p)2;p=a;printf("%dn",*(*(p+2)+1);8 .执行以下程序白输出结果是_10_0#include<stdio.h>main()ints,i,sum();for(i=1;i<=10;i+)s=sum(i);printf("s=%dn",s);sum(intk)intx=0;return(x+=k);9 .下述函数定义用来求出两个整数之各,并通过函数的模拟传地址调用,传回两整数

10、相加之和值,请填空。voidadd(intx,inty,int*z)*z=x+y;10.函数func的功能是将整型变量x的值转换成二进制数,并将该二进制数的每一位存入由整型指针b所指向的一维数组a最低位存放于a中,次低位存放于a1中,依此类推。请填空。voidfunc(intx,int*b)intr;dor=x%2;=r;x/=2;while(x);11以下程序中函数invert实现将数组内所有数组元素的值逆置。比如,执行本程序将输出:10987654321请填空。#include<stdio.h>main()inta10=1,2,3,4,5,678,9,10,i,n=10;inv

11、ert(a,n-1);for(i=0;i<10;i+)printf("%3d",ai);printf("n");invert(int*s,intnum)int*t,k;t=s+num;while(t>s)k=*s;*s=*t;*t=k;s+;t-;12若有以下定义和说明,则结构体变量w在内存中所占的字节数是unionaafloatx;floaty;charc6;structstunionaav;floatw5;doubleave;w;13.执行下述程序的输出结果是#include<stdio.h>structstrfloatx;c

12、har*y;*m;structstrgroup3=95.0,"Li",82.5,"Wang",73.5,"Sun"main()m=group;printf("%.lf,%sn",m->x,m->y);14下面的程序用来统计某文件中字符的个数。请填空#include<stdio.h>#include<stdlib.h>main()FILE*fp;longnum=0;if(fp=fopen("fnam.dat","r")=NULL)printf

13、("Can'topenthisfile!n");exit(0);while()fgetc(fp);num+;printf("num=%dn",num);fclose(fp);15执行下述程序后,输出结果为,#include<stdio.h>#defineFUN1(a,b)a+b#defineFUN2(a,b)a-b#defineCAL(a,b)a*b+a+3main()编辑版wordprintf("%dn",CAL(FUN1(3,5),FUN2(4,5);三、修改程序(在程序出错的语句下划横线并标号,把修改后的语句

14、写在程序之后的横线上。每小题5分,共10分)I .下列给定程序的功能是:读入一个整数(2<=k<=10000),打印它的所有质因子(即所有为素数的因子)。例如,若输入整数2310,则应输出2、3、5、7、II 。#include<conio.h>#include<stdio.h>IsPrime(intn);inti,m;m=1;for(i=2;i<n;i+)if!(n%i)m=0;continue;return(m);main()intj,k;printf(n“Pleaseenteranintegernumberbetween2and10000:”);

15、scanf(“%d”,k);,k);printf(nTheprimefactor(s)of%dis(are):for(j=2;j<=k;j+)if(!(k%j)&(IsPrime(j)printf(n%4d”,j);printf(n");2,下列给定程序中,函数fun的功能是:逐个比较ab两个字符串对应位置中的字符,把ASCII值大或等于的字符一次存放到c数组中,形成一个新的字符串。例如,若a中的字符串为aBCDeFgH,b中的字符串为:ABcd,则c中的字符串为:aBcdeFgh#include<stdio.h>#include<string.h&g

16、t;voidfun(char*p,char*q,char*c)intk=1;while(*p!=*q)if(*p<*q)ck=*q;elseck=*p;if(*p)p+;if(*q)q+;k+;main()chara10="aBCDeFgh”,b10=ABcd”,c80=""fun(a,b,c);printf("Thestringa:");puts(a);printf("Thestringb:");puts(b);printf("Theresult:");puts(c);四、阅读下列程序,在程序后面

17、的横线上,写出该程序的功能或给出运行结果(每小题5分,共20分)1. #include<stdio.h>voidmain()charch;intk=0;for(ch='A;ch<'H'ch+,k+)if(k%2=0)printf("%c,ch);printf(n");输出结果:2. #include<stdio.h>voidmain()intk=0;charc='A';doswitch(c+)case'A:k+;break;case'B'-;kcase'C':k+=

18、2;break;case'D':k=k%2;break;case'E':k=k*10;break;default:k=k/3;k+;while(c<'G');printf("n",k);输出结果:3. #include<stdio.h>voidmain()inta6=12,4,17,25,27,16,b6=27,13,4,25,23,16,i,j;for(i=0;i<6;i+)for(j=0;j<6;j+)if(ai=bj)break;if(j<6)printf("d',a

19、i);printf(n");输出结果:4. #include<stdio.h>voidmain()inta8=1,0,1,0,1Q1,0,i;for(i=2;i<8;i+)ai+=ai-1+ai-2;for(i=0;i<8;i+)printf("d',ai);printf(n");输出结果:五、编程题(本大题20分,第一题8分,第二题12分)1、计算分段函数的值:E1俨(x<0)Y=2*x2-2(x>=0)编程实现。2、输入10个学生3门课的成绩,用函数实现:找出最高的分数所对应的学号和成绩。模拟试卷十一参考答案:一、单

20、选题1) D2)C3)C4)C5)D6)A7)C8)C9)C10)B二、填空题1、1.0000002、173、x>0.04、k=k+15、-3-404436、67、608、109、int*z10、*(b+)11、t>s12、4213、95,Li14、fgetc(fp)!=EOF15、29三、改错题1、IsPrime(intn);改为IsPrime(intn)scanf("%d'用为scanf("%d&k);if!(n%i)m=0;continue;改为if(!(n%i)m=0;continue;if(!(k%j)&(IsPrime(j)改为if(!(k%j)&(IsPrime(j)2、studio.h改为stdio.hvoid;fun(char*p,char*q,char*c);改为voidfun(char*p,char*q,char*c)k=1改为k=0while(*p!=*q)改为while(*p)|(*q)k+后添加一个四、阅读程序1、ACEG2、

温馨提示

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

评论

0/150

提交评论