2018年04月自学考试00342《高级语言程序设计(一)》试题.docx
2018年4月高等教育自学考试高级语言程序设计(一)试题课程代码:00342一、单项选择题1 .C语言的关键字是A.strcpyB.printfC.stdioD.float2 .错误的表达式是A.20%5B.20/5C.20.85D.20.8/53 .设ihtx=10,y=5;,表达式x+,x+y+的值是A.10B.IlC.15D.164 .设ima;,循环次数为10的语句是A.for(a=0;a=10;a+);B.for(a=0;a=10;a+);C.for(a=0;a<10;a+);D.for(a=0;a<=10;a+);5 .当循环语句While(表达式);结束时,“表达式”的值是A.0B.1C.-1D.非06 .设inta=l,b=2,c=3;,不能将变量c的值赋给变量a和b的表达式是A.a=c,b=cB.a=(b=c+)C.(a=c)Il(b=c)D.(a=c)&&(b=c)7 .下列变量定义正确的是A.inta6;B.doublea6;C.float6a:D.charAb*;8 .关于函数不正确的说法是A.可以没有返回值B.可以没有形式参数C.返回值可以是指针类型D.一个函数中可以定义另一函数9 .设inta34=1,2,345,6;,值为4的数组元素是A.a0lB.a02C.a03D.all10 .调用递归函数func(l),返回值为3的是A. int func(int n) ( if(n<=O) return 0; else return func(n- l)+n;)C. int func(int n) (if(n=O) return 0; else retum func(n-l)*n;1H.设intx=l,y=2;,下列语句错误的是 A. x+=y;C. while(x<y);B. int func(int n)(if(n<=O) retum 0;else return time(n- 1)+3;)D. int func(int n)(if(n=O) return 0;else remm func(n-l)*3;)B. for(x=0;x<y;x+);D. iifx<y); else x-x+y;12.不是变量存储类型关键字的是A.autoB.stdoutC.staticD.register13 .下列二维数组定义正确的是A.chara(10J0);C.#defineN10charaNNl;14 .设inlm=5,*p;,下列语句正确的是B.cham=10,ann;D.intn;charanln;A.p=&m;B.p=m;C.*p=&m;D.*p=*m;15.当文件未结束时,系统函数feof的返回值是A.-lB.0C.1D.非0二、填空题16 .设inta=l1;,表达式a%3+a4的值是。17 .设intx=4,y=2;,表达式(x>>y)+(x<<y)的值是。18 .设ints5=2,4,6,8,*p=s;,执行语句Printfr%d,odn",s,*(P+4);后输出结果19 .设inta;floatb=1.9;,执行语句a=(int)b;后变量a和b的值分别是。20 .设intn=5;,执行语句Printf("%dn”,(n=3*4,n*5,n+l);后输出结果是。21 .设inlx=2;,执行语句Prinlf("%d",X+);后输出结果是。22 .设inia=l,b=2,c=3;,表达式aIlb-a&&c+!a的值是。23 .系统函数getchar()的功能是。24 .设CharSU="1234",执行语句Printf("%d,%dn*sizeof(s),strlen(s);后输出结果.25 .使用系统函数SIrCal()时,用到的文件包含命令是。三、程序分析题阅读下列程序,写出输出结果。26 .#include<stdio.h>intmain(void)(inti=0;char*Brics="Brazil","Russia'1,"India","China","SouthAfrica");do(printf("%sn'Bricsi);i=i+2;)while(i<6);return0;27 .#include<stdio.h>intmain(void)intx,y=3;for(x=1;XV=10;x+)(iffy>=1O)break;if(y%3=2)(y=y+3;continue;)y=y-l,Iprintf(',%d,%dn",x,y);return0;)28 .#include<stdio.h>intmain(void)(charch='-"inta=l,b=2;switch(ch)(case%,:a+=b;case'-,:a-=b;case'*':a*=b;break;caseV:a=b;)printf("%dn",a);return0;)29 .#include<stdio.h>intmain(void)(inta10=10,9,8,7,6,5,4,3,2/,i,j=9,temp;int*p=a;for(i=0;i<5;i+)(temp=ai;ai=a;aj-=temp;for(i=0;i<10;i+)printf("%d”,*p+);printf(n,');returnO;)四、程序填充题请将下列程序横线处缺少的部分利、上,使其能正确运行。30 .十个人参加选举,有三个候选人,每人投一票。输出每位候选人的姓名和得票数。#include<stdio.h>#include<string.h>typedefstructperson(charname20;intcount;PER;intmain(void)(inti,j;charNAME20;PERleader3="Li,0,Liu,0,"Wang',0);for(i=0;i<i+)*第一空*/Iscanf(,'%s,NAME);for(j=0u<3+)if(strcmp(NAME,leaderj.name)=O);*第二空*/1,for(i=0;i<3;i+)Printf("%s,%dW',leaderii.count);*第三空*/return0;)31 .键入一串字符,以回车换行符为结束标志,分别统计并输出其中英文字母和数字的个数。#include<stdio.h>intmain(void)/*第一空*/intIetter=O,digital=;while(ch=getchar()!=r')*第二空*/if(ch>='A'<fech<='Z,lch>=,a,<fech<=,z,)letter+;elseif()digital+;*第三空*/printf("Letter=%d,Digital=%dn",letter,digital);return0;)32 .从键盘为二维数组元素输入数据,计算并输出全部元素之和。#include<stdio.h>#defineN5intmain(void)(intij;floataNNl,sum=:*第一空*/for(i=0;i<N;i+)for(j=0y<Ny+)(scanf("%f,<feailj);sum=sum+;/*第二空*/)printf("sum=%.3n",);*第三空*/return0;)五、程序设计题33 .从文本文件old.lxl读取字符,将其中的数字字符O、T、2、9分别用英文字母字符Z、Y、WV、IT,T,SR、替换,其余字符不变,结果写入文本文件new.txt,并分别将两个文件的内容输出到屏幕。34 .(1)编写函数intmove(intb,intn,intm),将整型数组b的n个元素循环右移m个位置。例如:n=10,m=2时,移动前、后数组b中的数据如下图所示。移动前:1234567890移动后:9012345678(2)编写主函数,从键盘输入数组元素及n和m(0<mvn<20)的值,调用move函数,输出移动前后的全部数组元素。