2023年自考类计算机类(工学类)高级语言程序设计(一)2010-2022历年真题选编带答案难题含解析_第1页
2023年自考类计算机类(工学类)高级语言程序设计(一)2010-2022历年真题选编带答案难题含解析_第2页
2023年自考类计算机类(工学类)高级语言程序设计(一)2010-2022历年真题选编带答案难题含解析_第3页
2023年自考类计算机类(工学类)高级语言程序设计(一)2010-2022历年真题选编带答案难题含解析_第4页
2023年自考类计算机类(工学类)高级语言程序设计(一)2010-2022历年真题选编带答案难题含解析_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

2023年自考类计算机类(工学类)高级语言程序设计(一)2010-2022历年真题选编带答案难题含解析(图片大小可自由调整)第1卷一.历年考点试题黑钻版(共75题)1.设inta=2,b=3;floatx=3.5,y=2.5;,表达式(float)(a+b)/2+(int)x%(int)y的值是______。2.以下所列各函数的首部中,正确的是______A.voidapple(var:Integer,varb:Integer)B.voidapple(inta,b)C.voidapple(inta,intb)D.Subplay(aasinteger,basinteger)3.设定义以下函数:fun(int*p){return*p;},该函数返回的是______。4.一个三位整数(100~999),若各位数的立方和等于该数自身,则称其为“水仙花数”(如:153=13+53+33),找出所有的这种数。

#include<stdio.h>

main()

{intn,a,b,c;

for(c=1;c<=9;c++)

for(b=0;______;b++)/*第一空*/

for(a=0;a<=9;a++)

{

n=______;/*第二空*/

if(a*a*a+b*b*b+c*c*c==______)/*第三空*/

printf("%d\n",n);

}

}5.在C盘中有一个名为temp.txt的文本文件。

#include<stdio.h>

#include<stdlib.h>

main()

{inti,n;

FILE*fp;

if((fp=fopen("c:\\temp.txt","w+"))==NULL)

{printf("cannotsetthetempfile\n");exit(0);}

for(i=1;i<=10;i++)fprintf(fp,"%3d",i);

for(i=0;i<5;i++)

{fseek(fp,*6L,SEEK_SET);

fscanf(fp,"%d",&n);

printf("%3d",n);

}

fclose(fp);

}6.设intx=1,y=1;,则执行表达式--x&&y++后,y的值是______。7.根据Fibonacci数列公式:

计算并输出前20项之和。8.#include<stdio.h>

intf(int

a)

{

staticintd=10;/*静态变量*/

d+=a;

returnd;

}

voidmain()

{

printf("f1=%d",f(3));

printf("f2=%d\n",f(5));

}9.在C盘根目录下创建一个名为“c.txt"的文本文件,文本文件的内容从键盘读取,直到遇到"\n"(回车键)为止。程序清单如下:

#include<stdio.h>

#include<______>/*第一空*/

voidmain()

{FILE*fp;

charc;

if((fp=fopen("c:\c.txt","W"))==NULL)

{printf("cannotopenfile!\n");exit(0);}

while((______)!=='\n'/*第二空*/

______;/*第三空*/

fclose(fp);

}10.若有定义:float*p[3];则以下叙述中正确的是______A.定义了一个基类型为float的指针变量p,该变量具有3个指针B.定义了一个指针数组p,该数组含有3个元素,每个元素都是基类型为float的指针C.定义了一个名为*p的整型数组,该数组含有3个float类型元素D.定义了一个可指向一维数组的指针变量p,所指一维数组应具有3个float类型元素11.有以下定义语句,编译时出现编译错误的是______A.chara='a';B.chara='\a';C.chara='bb';D.chara='\x1d';12.某幼儿园入园分班规定如下:

输入某个孩子的年龄后,输出其分班情况(要求使用switch语句)。13.在C语言程序中,下列磁盘文件名错误的是

A.abc.datB.c:abc.datC.\tc\abc.datD.a:\abc.dat14.下列程序正确的运行结果为

#include<stdio.h>

main()

{inta[]={2,6,8,10,14,18);

int*ptr[-]={&a[0],&a[1],&a[2],&a[3],&a[4]);

inti;

for(i=0;i<5;i++)

a[i]=a[i]/2+a[i]

printf("%d\n",*(*(ptr+2)));

printf("%d\n",*(*ptr));

}A.12

21B.21

12C.12

3D.3

1215.C语言中整型常量的书写形式包括:八进制,十进制和______。16.设有定义语句“intx=6,*p=&x;”,则值不为6的表达式是

A.xB.*pC.p+0D.*&x17.以下程序输出的结果是

#include<stdio.h>

intfun(intk)

{if(k>0)fun(k-1);

printf("%d",k);

}

main()

{intw=3;fun(w);

printf("\n");

}A.3210B.0123C.210D.01218.设有定义inta[3][4],*p=a[1];,则指针变量p指向的元素是______。19.将一个文本文件ma.dat拷贝到另一个文本文件na.dat中。

#include<stdio.h>

main()

{

FILE*ma,*na;

ma=fopen("ma.dat",______);/*第一空*/

na=fopen("na.dat","w");

while(!feof(ma))fputc(fgete(ma),______)/*第二空*/

felose(na);______;/*第三空*/

}20.C语言早期规定建立文件缓冲区采用的形式是

A.缓冲文件系统B.非缓冲文件系统C.分页文件系统D.A&B21.读字符串函数是______。22.为二维数组各元素输入数据,计算并输出全部元素之和。

#define

M

5

voidmain()

{

inti,j,a[M][M],sum=______;

/*第一空*/

for(______)

/*第二空*/

for(j=0;j<M;j++)

{

scanf("%d",&a[i][j]);

sum+=______;

/*第三空*/

}

printf("sum=%d\n",sum);

}23.设有定义语句intx[]={1,2,3,4,5},P=x;,则不能正确引用数组x的元素的表达式是______A.(P--)B.(--P)C.(P++)D.(++P)24.字符串是由若干个字符组成的,其最后一个字符是______。25.若a、b为int型变量,则执行以下语句后a的值为

a=1;b=10;

do{b-=a;

a++;)while(b-->0);A.1B.3C.4D.526.输入一个数字(范围在0~9之间,若不在此范围内显示输入错),输出对应的英文单词(Zero,One,Two,……,Nine)。

main()

{

inti;

char*digit[10]={"Zero","One","Two","Three","Four",

"Five","Six","Seven","Eight","Nine"};

scanf("%d",______);/*第一空*/

printf("%d→",i);

if(______)/*第二空*/

printf("%s\n",digit[______]);/*第三空*/

elseprintf("Inputerror!\n");

}27.以下函数调用语句中实参的个数是______。

apple((x1,x2),(x3,x4,x5),x6)28.设intx=9;,执行语句printf("%d\n",x<<2);后的结果是______。29.C语言词类主要分为常量、变量、运算符、______、表达式和保留字6类。30.main()

{charstr[]="1234567";

inti;

for(i=0;i<7;i+=3)

printf("%s\n",str+i);

}31.(1)编写一个计算梯形面积的函数。函数头是:floatarea(noats,floatx,noath)其中变量s、x和h分别表示梯形的上底、下底和高。

(2)主函数从键盘输入梯形的上底、下底和高的值,通过调用上述函数输出梯形面积(保留小数点后两位)。32.#include<stdio.h>

structcountry

{

intno;

charname[20];

}a[]={1,"China",2,"Russia",3,"America"},*p=a;

voidmain()

{

p++;

printf("%d,%s",(*p).no,(*p).name);

p--;

printf("%d\n,%s",p->no,p->name);

printf("%d,%s\n",a[2].no,a[2].name);

}33.gcd(intp,intq)

{

if(p==q)returnp;

elseif(p>q)returngcd(p-q,q);

elsereturngcd(p,q-p);

}

voidmain()

{

intm=24,n=36,min,max;

max=gcd(m,n);

min=m*n/max;

printf("max=%d,min=%d\n",max,min);

}34.main()

{inta[10]={1,8,7,10,5,23,27,29,30,77};

intb[10]={8,29,30,2,4,6,75,80,24,36};

inti;intj;

for(i=0;i<10;i++)

{for(j=0;j<10;j++)

if(a[i]==b[j])

break;

if(j<10)printf("%d",a[i]);

}

}35.系统规定有3个标准输入输出设备,其中标准错误输出设备是______。36.下列运算符,优先级最低的是

A.&&B.!C.->D.+=37.设floata[4][5];,则数组a中第一维下标的最大值是______。38.一个源文件中定义的全局变量的作用域为

A.本文件的全部范围B.本程序的全部范围C.本函数的全部范围D.从定义该变量开始至本文件结束39.#include<stdio.h>

voidmain()

{inti;

for(i=1;i<5;i++)

printf("%d\t%c\n",i,('A'+i));

}40.设intm=0;,执行表达式m||(m=2)||(m=3)||(m=4)后,m的值是______。41.#include<string.h>

char*scmp(char*s1,char*s2)

{if(strcmp(s1,s2)<0)return(s1);

elsereturn(s2);

}

main()

{inti;charstring[20],str[3][20];

for(i=0;i<3;i++)gets(str[i]);

strcpy(string,scmp(str[0],str[1]));

strcpy(string,scmp(string,str[2]));

printf("%s\n",string);

}

依次输入:

ABCD

ABBA

ABC42.以下合法的数组说明是______A.chara[6]="string"B.inta[]={0,1,2,3,4,5};C.chara="string";D.inta[5]={0,1,2,3,4,5};43.下面程序段的输出结果是______。

#include<stdio.h>

intb=1:

intfunc(int*a)

{*a+=b;return(*a);)

main()

{inta=2,res=1;

res+=func(&a);

printf("%d%d\n",a,res);}44.#include<stdio.h>

inti=1;

intfun(intj)

{

return(++i+j);

}

voidmain()

{

intj;

for(j=1;j<=3;j++)

printf("%d\n",fun(j));

}45.使用递归函数计算n!(n=0,1,2,3,……)的是

A.fac(intn)

{inti,f=1;

if(n==0)return1;

elsefor(i=1;i<=n;i++)f*=i;

returnf;

}B.fac(intn)

{

if(n==0||n==1)return1;

elsereturnn*fac(n-1);

}C.fac(intn)

{inti=1,f=1;

if(n==0)return1;

elsewhile(i<=n)f*=i++;

returnf;

}D.fac(intn)

{inti=1,f=1;

if(n==0)return1;

elsedo{f*=i;}while(i++<n);

returnf;

}46.设inta[10],*p=a;

则对数组的正确引用是

A.a[p]B.p[a]C.*(p+2)D.p+247.键入一串字符(换行作为结束标志),统计字符的个数,将该串字符及字符个数显示到屏幕上并写入文件str.dat中。

#include<stdio.h>

main()

{

charch;intsumch=0;

FILE*fp;

fp=fopen("str.dat","w");

while((ch=getchar())!=______)/*第一空*/

{

sumch++;

putchar(ch);

fputc(______,fp);/*第二空*/

}

printf("sumch=%d\n",sumch);

fprintf(______,"sumch=%d\n",sumch);/*第三空*/

fclose(fp);

}48.以下内循环语句执行了______次。

inti,j;

for(i=5;i;i--)

for(j=0;j<4;j++){…}49.转义字符由______符号开始的单个字符或若干个字符组成。50.设charb;,判断b为数字字符的逻辑表达式是______。51.main()

{inta=1,b=2,c=3;

if(a<=c)

if(b==c)printf("a=%d\n",a);

elseprintf("b=%d\n",b);

printf("c=%d\n",c);

}52.#defineSIZE4

main()

{intn[SIZE]={8,3,4,1};

inti,j;

for(i=0;i<SIZE;i++)

{printf("%d",n[i]);

for(j=1;j<=n[i];j++)printf("*"):

printf("\n");

}

}53.若有宏定义:#defineMOD(x,y)x%y

则执行下面语句后的输出结果是

inta=13,b=96;

printf("%d\n",MOD(b,a));

A.1B.2C.5D.654.设整型变量a的值是6,执行下列语句后a的值是

switch(a%2)

{

case0:a-=2;

case1:a+=1;

default:a=6;

}A.4B.5C.6D.755.#include<stdio.h>

intb=2;

intfunc(int*a)

{*a+=b;return(*a);}

main()

{inta=3,res=1;

res+=func(&a);

printf("%d%d\n",a,res);}56.intf(intn)

{staticintf=1;

f=f*n;

returnf;

}

main()

{inti;

for(i=1;i<5;i++)

printf("%d,",f(i));

}57.下列不属于面向机器语言的是

A.符号语言B.二进制语言C.汇编语言D.C语言58.文件使用方式"rb+"的含义是

A.对文本文件只读B.对文本文件读和写C.对进制文件读和写D.对二进制文件只写59.使用系统函数对两个字符串进行比较,该系统函数的名字是______。60.写出n小于m的奇数的表达式______。61.若有说明inti,j,k;则表达式i=10,j=20,k=30,k*=i+j的值为______。62.C语言规定常量有整型常量、______、______、字符串常量。63.若用数组名作为函数调用时的实参,则实际上传递给形参的是

A.数组的第一个元素值B.数组元素的个数C.数组中全部元素的值D.数组首地址64.程序中使用了字符串函数(如strcmp),则必须包含的头文件名为______。65.文件定位函数包含在头文件______中。66.给定程序中,函数fun的功能是将形参std所指结构体数组中年龄最大者的数据作为函数值返回,并在main函数中输出。

#include<stdio.h>

typedefstruct

{charname[10];

intage;

}STD;

STDfun(STDstd[],intn)

{STDmax;inti;

max=______;

/*第一空*/

for(i=1;i<n;i++)

if(max.age<______)max=std[i];/*第二空*/

returnmax;

}

main()

{STDstd[5]={"aaa",17,"bbb",16,"ccc",18,"ddd",17,"eee",15};

STDmax;

max=fun(std,5);

printf("\ntheresult:\n");

printf("\nName:%s,Age:%d\n",______,max.age);

/*第三空*/

}67.structprob

{char*a;

intb;

}x[]={"ZhangSan",19,"LiSi",21,"WangWu",20);

main()

{inti,m1,m2;

m1=m2=X[0].b;

for(i=1;i<3;i++)

if(x[i].b>m1)m1=x[i].b;

elseif(x[[i].b<m2)m2=x[i].b;

for(i=0;i<3;i++)

if(x[i].b!=m1&&x[i].b!=m2)

{print("%s:%d\n",x[i].a,x[i].b);

break;

}

}68.汇编程序的功能是

A.将汇编语言程序转换成目标程序B.将汇编语言程序转换成高级语言程序C.将高级语言程序转换为目标程序D.将汇高级语言程序转换为编语言程序69.在翻译过程中,翻译程序翻译一句执行一句,该翻译程序称为______A.解释程序B.汇编程序C.编译程序D.服务程序70.#include<stdio.h>

intd=1:

intfun(intp)

{d+=P++;

printf("%d",d);

}

main()

{inta=3;

fun(a);

d+=a++;

printf("%d\n",d);

}71.从键盘向一维数组中输入10个实数,计算并输出其最大值和平均值。72.如果形参是数组名,则传递方式称为"______"。73.有以下程序段

main()

{intx=0,y=5,z=3;

while(z-->0&&++x<5)y=y-1;

printf("%d,%d,%d\n",x,y,z);

程序执行后的输出结果是A.3,2,0B.3,2,-1C.4,3,-1D.5,-2,-574.下列函数的主要功能是在w指向的数组的前*n个数据中插入x,要求w指向的数组的前*n个数据已按由小到大顺序存放。插入x后,该数组中的数据仍按照从小到大的顺序排列,同时将*n修改为插入x后长度。

voidf(char*w,charx,int*n)

{inti,p=0;

w[*n]=x;

while(x>w[p])______;

for(i=*n;i>p;i--)w[i]=______;

______;

++*n:

}75.系统标准输入设备的文件型指针是

A.stdinB.stdoutC.stderrD.由用户自己定义的第1卷参考答案一.历年考点试题黑钻版1.参考答案:3.52.参考答案:C[考点]函数的定义

[解析]函数的定义格式为:函数返回值类型名函数名(类型名形参1,类型名形参2,…,类型名形参n),所以只有选项C符合。3.参考答案:形参p所指存储单元中的值[考点]取值运算符

[解析]*p代表的是形参所指单元中的值。4.参考答案:

b<=9

c*100+b*10+a

n5.参考答案:1

3

5

7

96.参考答案:17.参考答案:#include<stdio.h>

main()

{inti;floatf[22]={1,1},sum=0;

for(i=2;i-1<=20;i++)/*循环终止条件为i-1<=20,以确保所计算的sum的值为前20项的值*/

{f[i]=f[i-1]+f[i-2];

sum+=f[i]/f[i-1];

}

printf("sum=%.4f\n",sum);

}8.参考答案:13,189.参考答案:

stdlib.h

c=getchar()

fontc(c,fp)10.参考答案:B[考点]指针数组

[解析]float*p[3];定义了一个指针数组,指向float型的数据,有3个数组元素,每一个都是指向数组的指针。11.参考答案:C[考点]字符变量初始化

[解析]bb是字符串,字符串的表示要用双引号,可以赋给字符数组或字符指针,变量,但字符串不能赋给字符变量,只能给字符变量赋值单个字符。12.参考答案:voidmain()

{

intage;

scanf("%d",&age);printf("%5d",age);

switch(age)

{

case1:

case2:

case3:printf("Lowerclass\n");break;

case4:printf("Middleclass\n");break;

case5:

case6:printf("Higherclass\n");break;

default:printf("Can'tenter\n");

}

}13.参考答案:D14.参考答案:A[解析]

#include<stdio.h>main(){inta[]={2,6,8.10,14,18);int*ptr[]={&a[4],&a[3],&a[2],&a[1],&a[0]};/*定义一个指向整型数据的指针的数组,并以数组a的前5个元素的地址为初值*/for(i=0;i<5;i++)a[i]=a[i]/2+a[i];/*数组a的元素分别加上各自现有值的1/2并保存在该元素中*/printf("%d\n",*(*(ptr+2)));/*输出的是指针数组ptr的第三个元素所指向的数组a的元素值*/printf("%d\n",*(*ptr));/*输出的是指针数组ptr的第一个元素所指向的数组a的元素值*/}15.参考答案:十六进制16.参考答案:C[解析]本题主要考查的知识点为指针变量。[要点透析]p+0就是p,p是x的地址,不是表达式。17.参考答案:B[解析]

#include<stdio.h>

intfun(intk)

{if(k>0)fun(k-1);

printf("%d",k);

}/*这是一个递归调用过程,先输出的是处于最底层的一次调用;即当k=1时调用函数fun()时的输出结果*/

main()

{intw=3;fun(w);/*调用函数fun()*/

printf("\n");

}18.参考答案:a[1][0]19.参考答案:"r"/*第一空。以只读方式打开文件ma.dat*/

na/*第二空。向文件na.dat输入从文件ma.dat得到的字符*/

fclose(ma)/*第三空。关闭所有文件以结束复制过程*/20.参考答案:D21.参考答案:fgets()22.参考答案:

0

i=0;i<M;i++

a[i][j]23.参考答案:B24.参考答案:'\0'25.参考答案:D[解析]当第一次进入循环时a=1,先执行"b-=a;a++;"此时b=9,a=2;然后判定b是否小于0。如果b小于0,断续执行循环体;如果b不小于0,循环终止。完成判定后b自减1。如此循环体被执行四次,最终因b=-3<0而终止。循环终止时a=5、b=-4。26.参考答案:第一空:&n

第二空:i>=0&&i<=9

第三空:i27.参考答案:3[考点]函数调用的一般格式

[解析](x1,x2),(x3,x4,x5)是两个逗号表达式,传递的是它们的值,因此它们是两个实参。28.参考答案:3629.参考答案:函数调用30.参考答案:1234567

4567

731.参考答案:

floatarea(floats,floatx,floath)

{

return(s+x)*h*0.5;

}

main()

{floars1,x1,h1;

scanf("%f%%f",&s1,&x1,&h1);

printf("area=%7.2f\n",area(s1,x1,h1,));

}32.参考答案:1,china2

Russia3,American33.参考答案:max=12,min=7234.参考答案:8293035.参考答案:stderr36.参考答案:D37.参考答案:338.参考答案:D[解析]本题主要考查的知识点为全局变量的作用域。[要点透析]全局变量的作用域是从定义点到整个程序结束,既从定义该变量时开始到该程序结束,全局变量都产生作用。39.参考答案:1

B

2

C

3

D

4

E[解析]

#include<stdio.h>

voidmain()

{inti;

for(i=1;i<5;i++)/*限定循环次数为4次*/

printf("%d\t%c\n",i,('A'+i));,/*输出的值并输出ASCⅡ值为('A'+i)"字符*/

}40.参考答案:241.参考答案:ABBA42.参考答案:B[考点]数组初始化

[解析]字符串“string”长度为6,但是因为系统在字符串后面加上'\0'作为结束符,所以占7个字节,A项中字符串超出其容量,应为a[7];同理,D项中超出了数组容量;而C项中,字符串不能赋值给字符变量,应赋单个字符。43.参考答案:34[解析]

#include<stdio.h>

intb=1;

intfunc(int*a)/*参数传递采用地址传递的方式,函数本身可改变函数体外的变量的值*/

{*a+=b;return(*a);}

main()

{inta=2,res=1;

res+=func(&a);/*根据函数"func()"的定义,实参必须是变量的地址*/

printf("%d%d\n",a,res);}/*"main()"函数内的变量a的值被改变*/44.参考答案:

3

5

745.参考答案:B[解析]A、C、D项分别使用for、while、do…while循环来计算n!(n=0,1,2,3,……)的值。46.参考答案:C47.参考答案:‘\n'/*第一空*/

ch/*第二空*/

fp/*第三空

温馨提示

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

评论

0/150

提交评论