2018年4月自考高级语言程序设计(一)真题
来源 :中华考试网 2019-10-20
中二、填空题:本大题共10小题,每小题2分,共20分
11.设int a=11;,表达式a%3+a/4的值是_______。
12.设int x=4,y=2;,表达式(x>>y)+(x<<9)的值是_______。
13.设int s[5]={2,4,6,8},*p=5;,执行语句 printf("%d,%d\n",s[2],*(p+4));后输出结果_______。
14.设 int a;float b=1.9;,执行语句a=(int)b;后变量a和b的值分别是_______。
15.设int n=5;,执行语句 printi("%d\n",n=3*4,n*5,n+1));后输出结果是_______。
16.设int x=2;,执行语句pim("%d",x++);后输出结果是_______。
17.设int a=1,b=2,c3;,表达式a||b-a&&c+!a的值是_______。
18.系统函数 getchar()的功能是_______。
19.设chr s[ ]="\\1234";,执行语句 printi("%d,%d\n",sizeof(s),strlen(s));后输出结果是_______。
110.使用系统函数strcat()时,用到的文件包含命令是_______。
三、程序分析题:本大题共4小题,每小题4分,共16分。阅读下列程序,写出输出结果。
21.#include int main(void){ int i=0; char *Brics[]={"Brazil","Russia","India","China", "South Africa"}; do { printf("%s\n",Brics[i]); i=i+2; }while(i<6); return 0;}
22.#include int main(void){ int x,y=3; for(x=1;x<=10;x++)
{
if(y>=10) break; if(y%3==2) { y=y+3; continue; } y=y-1; } printf("%d,%d\n",x,y); return 0;}
23.#include int main(void){ char ch='-'; int a=1,b=2; switch(ch) { case '+': a+=b; case '-': a-=b; case '*': a*=b; case '/': a/=b; } printf("%d\n",a); return 0;}
24.#include int main(void){ int a[10]={10,9,8,7,6,5,4,3,2,1},i,j=9,temp; int *p=a; for(i=0i<5;i++) { temp=a[i]; a[i]=a[j]; a[j--]=temp; } for(i=0;i<10;i++) printf("%d ",*p++); printf("\n"); return 0;}
四、程序填充题:本大题共3小题,每小题6分,共18分。请将下列程序横线处缺少的部分补上,使其能正确运行。
31.十个人参加选举,有三个候选人,每人投一票。输出每位候选人的姓名和得票数。#include #include t ypedef struct person{ char name[20]; int count;}PER;int main( void){ int i,j; char NAME[20]; PER leader[3]={{"Li",0},{"Liu",0};{"Wang",0}}; for(i=0;i<_______;i++) /*第一空*/ { scanf("%s",NAME); for(j=0;j<3;j++) if(strcmp(NAME,leader[j]-name)==0) _______; /*第二空*/ } for(i=0;i<3;i++) printf("%s,%d\n",_______,leader[i].count); /*第三空*/ return 0;}
32.键入一串字符,以回车换行符为结束标志,分别统计并输出其中英文字母和数字的个数。#include int main(void){ _______; /*第一空*/ int letter=0,digital=0; while((ch=getchar())!='_______') /*第二空*/ if(ch>='A'&&ch<='z'|| ch="">='a'&&ch<='z') letter++; else if(_______) digital++; /*第三空*/ printf("Letter=%d,Digital=%d\n",letter,digital); return 0;}
33.从键盘为二维数组元素输入数据,计算并输出全部元素之和。#include#define N 5int main(void){ int i,j; float a[N][N],sum=_______; /*第一空*/ fox(i=0;i< return *第三空* printf(?sum='%.3f\n",_______);' } *第二空* sum="sum+_______;" scanf(?%f?,&a[i][j]); {
五、程序设计题:本大题共2小题,每小题8分,共16分。
41.从文本文件old.txt读取字符,将其中的数字字符'0'、'1'、'2'、……'9'分别用英文字母字符'Z'、'Y'、'X'、'W'、'V','U'、'T'、'S'、'R'、'Q'替换,其余字符不变,结果写入文本文件new.txt,并分别将两个文件的内容输出到屏幕。
42.(1)编写函数 int move(int b[],int n, int m),将整型数组b的n个元素循环右移m个位置。 例如:n=10,m=2时,移动前、后数组b中的数据如下图所示。
(2)编写主函数,从键盘输入数组元素及n和m(0