您好,欢迎访问三七文档
当前位置:首页 > 高等教育 > 习题/试题 > 2010年1月高级语言程序设计(一)真题及参考答案
2010年112010年1月高级语言程序设计(一)试题一、单项选择题(本大题共15小题,每小题2分,共30分)1.下列不属于保留字的是(D)A.defaultB.RegisterC.structD.unsign2.下列不能作为常量的是(A)A.0582B.0xa5C.’\n’D.2.5e-23.设typedeflongclass;,则class是(C)A.整型变量B.长整型变量C.长整型数据类型的新标识符D.新的而非长整型数据类型的标识符4.设charc=’A’;inti=1,j;,执行j=!c&&i++;后,i和j的值分别是(A)A.1和0B.1和1C.2和0D.2和l5.设inta;,执行表达式(a=1,2,3),a+1后,a和表达式的值分别是(A)A.1和2B.2和3C.3和4D.4和56.下列关于函数定义正确的是(D)A.fun(intx,y){intz;returnz;}B.voidfun(intx,inty){returnx+y;}C.fun(x,y){intx,y;doublez;z=x+y;returnz;}D.doublefun(intx,inty){doublez;z=x+y;returnz;)7.下列用户自定义标识符正确的是(B)A.4aB.b_1C.-&D.*p8.下列程序段中循环体执行的次数是(B)intx=-1;Do{x=x*x;}while(!x);A.0B.1C.2D.无限9.实现字符串连接的系统函数名是(A)A.strcatB.strcmpC.strcpyD.strlen10.若实参是一个数组名,在调用函数时,实参向形参传递的是(B)A.数组的长度B.数组的首地址C.数组每个元素的值D.数组每个元素的地址11.设inta[][4]={l,2,3,4,5,6,7};,则a[1][3]的值是(A)A.0B.3C.4D.712.若定义一个只限本源文件使用的全局变量,则该变量的存储类别是(C)A.externB.registerC.staticD.auto13.设chark=’a’;floatj=2.0;,执行k+=5/j;printf(“%c”,k);后,输出结果是(C)A.aB.bC.cD.d14.下列程序段正确的是(D)A.chars[]={‘xyz’};scanf(‘‘%s”,s);B.float*p,i;p=*p+i;C.chars[5]=‘word’;puts(s);D.inta[5]={0},*p=a;*p=*(p+1);15.关于编译预处理命令,叙述正确的是(A)A.预处理命令都以”#”开头D.每个程序必须在开头使用预处理命令#includestdio.hB.预处理命令必须位于程序的首部C.预处理命令只能实现宏定义和条件编译的功能二、填空题(本大题共10小题,每小题2分,共20分)16.设floata,b,c;,若a、b和c分别为三角形的三条边长,它们”能构成等边三角形”的逻辑表达式是a+bc&&a+cb&&b+ca。17.设inti;floatf=3.14;,执行i=(int)f;后,变量f的值是3.14。l8.设chars[]=\t\’Name\\Address\n;,s的长度是16。19.执行printf(“%d\n”,3&&2&5);后的结果是0。20.算术运算符的优先级比关系运算符的优先级高。21.单目运算符的结合性是自右向左。2010年1222.设intx=1,y=3,z;,执行z=xy?++x:y++;后,z的值是3。23.设intm=3;floatn=12.6;charch=’a’;,若用输入语句实现上述三个变量的初始化结果且键入数据形式为:3,12.6a回车换行,则scanf语句应是scanf(%d,%f%c,&m,&n,&ch);。24.若定义函数时类型缺省,则该函数默认的类型是int。25.设inta[5]={l,3,5,7,9},*p=&a[2];,则++(*p)的值是6。三、程序分析题(本大题共4小题,每小题4分,共16分)26.voidmain(){intcolor=2;switch(color){case1:printf(“red\n”);break;case2:printf(“yellow\n”);case3:printf(“blue\n”);}}==========yellowblue27.voidmain(){intm,n;for(m=1;m=3;m++){for(n=1;n=2*m-1;n++)printf(“*”);printf(“\n”);}}==========*********28.voidmain(){floatx=3.6;inti;i=x;printf(x=%5.3f,i=%d\n,x,i);}==========x=3.600,i=329.voidmain(){inta[2][3]={{1,2,3},{4,5,6}};intb[3][2],i,j;for(i=0;i=1;i++){for(j=0;j=2;j++){printf(%5d,a[i][j]);b[j][i]=a[i][j];}printf(\n);}printf(“arrayb:\n”);for(i=0;i=2;i++)for(j=0;j=1;j++)printf(“%5d”,b[i][j]);}============1232010年13456arrayb:142536四、程序填充题(本大题共3小题,每小题6分,共18分)请将下列程序横线处缺少的部分补上,使其能正确运行。30.从键盘输入10个学生的姓名、性别和成绩,计算并输出这些学生的平均成绩。#defineN10structstudent{charname[20];charsex;intscore;}stu[N];voidmain(){inti;floataver,sum=0;for(i=0;iN;i++){scanf(“%d,%c,%s”,&stu[i].score,&stu[i].sex,stu[i].name);/*第一空*/sum=sum+stu[i].score;/*第二空*/}aver=sum/N;/*第三空*/printf(“aver=%6.2f\n”,aver);}31.从键盘输入一串字符(以”?”作为结束标志),保存到文本文件text.txt中。#include“stdio.h”voidmain(){FILE*fp;/*第一空*/charch;if((fp=fopen(“text.Txt”,w))==NULL)exit(0);/*第二空*/while((ch=getchar())!=’?’)fputc(ch,fp);/*第三空*/fclose(fp);}32.用递归方法计算学生年龄,已知第一位学生年龄为10岁,其余学生一个比一个大2岁,求第5位学生的年龄。递归公式如下:age(n)=22)1(110nnagen intage(intn){if(n==1)return(10);/*第一空*/elsereturn(age(n-1)+2);/*第二空*/}voidmain(){printf(‘‘%d\n”,age(5));/*第三空*/}五、程序设计题(本大题共2小题,每小题8分,共16分)33.从键盘输入三个整数a、b和c,按照由小到大的顺序输出。33、思路:这是3个数的排序。先让a和b比较,如果ab则交换a和b,经过这次比较之后a为a、b中小的;接着让a和c比较,如果ac则交换a和c,经过这次比较之后a为三个数中最小的;最后让b和c比较,如果bc则交换b和c。经过这3次比较和交换就让a、b、c按照由小到大的顺序排列好了。2010年14#includestdio.hvoidmain(){inta,b,c,t;scanf(%d%d%d,&a,&b,&c);if(ab){/*如果a大于b,则交换a和b*/t=a;a=b;b=t;}if(ac){/*如果a大于c,则交换a和c*/t=a;a=c;c=t;}if(bc){/*如果b大于c,则交换b和c*/t=b;b=c;c=t;}printf(%d,%d,%d,a,b,c);}34.(1)编写一函数,将指针变量pl和p2所指向的整数值交换。其中:函数头是voidswap(int*pl,int*p2)(2)编写一个主程序,从键盘输入两个整数,调用上述函数实现两个数据的交换并输出。34、思路:本题的函数头已经给出,在函数体中要将p1和p2所指向的整数值交换,其实就是交换(*p1)和(*p2)即可,因为(*p1)表示p1所指的值,(*p2)表示p2所指的值。在主函数中,要调用swap函数,则传递的参数应该为2个地址,即用来交换它们值的两个变量地址。#includestdio.hvoidswap(int*p1,int*p2){intt;t=*p1;*p1=*p2;*p2=t;}voidmain(){inta,b;scanf(%d%d,&a,&b);printf(交换前a=%d,b=%d\n,a,b);swap(&a,&b);printf(交换后a=%d,b=%d\n,a,b);}2010年15
本文标题:2010年1月高级语言程序设计(一)真题及参考答案
链接地址:https://www.777doc.com/doc-3067048 .html