全国自考(高级语言程序设计)模拟试卷1
一、1.单项选择题
0. 下列语言中不属于面向过程的语言是( )
A.B语言
B.C语言
C.汇编语言
D.ALGOL语言
1. 下列选项中不是转义字符的是( )
A."
B.
C.
D.O74
2. 在C语言中,"c"和"c"存储所占用的字节数分别是( )
A.1,1
B.1,2
C.2,1
D.2,2
3. 下列程序段运行后,x的值是( ) int a=1,b=0,x=1; if(!(--a))x--; if(b)x=7;else++x;
A.0
B.1
C.7
D.8
4. 下列关于do-while语句的描述错误的是( )
A.可构成多重循环结构
B.循环次数不可能为0
C.循环次数可能为0
D.先执行后判断
5. 调用函数时,若实参是一个数组名,则向函数对应的形参传送的是( )
A.数据的长度
B.数组的首地址
C.数组的第一个元素的值
D.整个数据元素的值
6. 在位移位运算中,操作数左移一位,其结果相当于操作数( )
A.乘以2
B.除以2
C.乘以4
D.除以4
7. 若有以下宏定义: #define N 2 #define Y(n) ((n+1)*N) 则执行语句z=8*N+Y(1);后z的值为( )
A.20
B.16
C.14
D.不确定
8. 若有以下语句: int x[]={1,3,5,10,12}; int * ptr=x; 则数据组元素“10”的地址是( )
A.x+3
B.&(x+3)
C.ptr
D.ptr+10
9. 函数调用“strcpy(str3,strcat(str1,str2))”的功能是( )
A.将字符串str1复制到字符串str2中,再连接到字符串str3后
B.将字符串str1连接到字符串str2后,再复制到str3中
C.将字符串str2连接到str1后,再复制到str3中
D.将字符串str2复制到str1中,再连接到str3后
10. 执行语句“char a[10]={"abcd"),* p=a;”后,*(p+2)的值是( )
A.abcd
B."b"
C."C"
D." "
11. 定义函数时,下列选项中可以作为函数存储类型的是( )
A.register
B.auto
C.extern
D.void
12. 若a、b为int型变量,则执行以下语句后a的值为( ) a=1;b=10; do{b-=a; a++;)while(b-->0);
A.1
B.3
C.4
D.5
13. 若x、y、z、m、n均为int型变量,则执行下面语句后z的值为( ) m=10;n=5; x=(--m=n++)?--m:++n; y=m++; z=n;
A.5
B.6
C.7
D.10
14. 关于函数fseek(a,b,c)的说法错误的是( )
A.参数a是文件型指针,指向所需要的文件
B.参数b是int型,表示从开始位置的偏移字节数
C.参数c是int型,表示定位的起始位置
D.函数返回值是int型,定位正确返回0;定位错误返回非0
二、2.填空题
0. 设int a=2,b=4,c=1,d;执行d=!(a-b+c);后d的值是______。
1. 若有定义int a[3][4]={1,2,3,4,5,6,7,8};,则a[1][3]=______。
2. 以下程序运行后的输出结果是______。
main()
{int x=1,y=0,a=0,b=0;
switch(x)
{case 1:switch(y)
{case 0:a++;break;
case 1:b++;break;
}
case 2:a++;b++;break;
}
printf("%d%d
",a,b);
}
3. 若有语句:int i=-19,j=i%4;printf("%d ",j);则输出结果是______。
4. C语言中,输入和输出操作是由头函数______完成的。
5. 设i,j,k均为整型变量,则执行完"for(i=0,j=10;i<=j;i++,j--)k=i+j;"之后,k的值是______。
6. 若有数组char a[5]={97,99,107," ",108),(a~z的ASCⅡ值是97~122)则执行语句puts(a)的结果是______。
7. 移位运算被执行后,原对象中的数据______。
8. 设char string[]="this_is_a_book!";,则数组的长度应是______。
9. C语言中fputc()函数对文本文件的存取是以______为单位的。
三、3.程序分析题
0. #inclucde<stdio.h>
void prly(int*x)
{prinlf("%d
",++*x);}
main()
{int a=25;
prty(&a):
printf("%d
",a):
}
1. #include<stdio.h>
int ast(int x,int y,int *cp,int*dp)
{*cp=x+y;*dp=x-y;}
main()
{int a,b,c,d;
a=4;b=3;
ast(a,b,&C,&d);
printf("%d,%d
",c,d);
}
2. #include<stdio.h>
#include%<string.h>
main()
{char p1[10]="abc",p2[10]="ABC",str[50]="xyz":
strcpy(str+2,strcat(p1,p2)):
printf("%s
",str);
}
3. #include<stdio.h>
#include<string.h>
main()
{int y=9;
for(;y>0;y--)
{if(y%03==0)
{printf("%d",--y);continue;}
printf("%d",--y);
}
}
四、4.程序填充题
0. 将一个十进制整数转变成一个二进制整数。
#include<stdio.h>
main()
{int i=0.j,n,num[20];
scanf("%d",______);/*第一空*/
while(n!=0)
{num[i++]=______;/*第二空*/
n=______;)/*第三空*/
for(j=i-1;j>=0;j--)
printf("Ha",num[j]);
printf("
");
}
1. 以下程序用来统计从终端输入的字符中大写字母的个数。以"$"作为输入结束标记。
#include<stdio.h>
#include<ctypc.h>
main()
{int num[126],i;char c;
for(i=0;i<26;i++)
num[i]=0;
while((______)!="$")/*第一空*/
if(isupper(c))num[c-65]+=1;
for(i=0;i<26;i++)
if(______)/*第二空*/
printf("%c:%d
",______,num[i]);/*第三空*/
}
2. 输入5个字符,从中找出最大的并输出。要求用字符数组存放此字符,并用指针数组元素分别指向这5个字符。
#include<stdio.h>
main()
{char a[5],*p[5],*max;
int I;
for(I=0;I<5;I++)
______;/*第一空*/
for(I=0;I<5;I++)
scanf("%C",p[I]);
max=p[0];
for(I=0;______;I++)/*第二空*/
if(*max<*p[I])
______;/*第三空*/
printf("%c",*max);
}
五、5.程序设计题
0. 输入一个整数n(n<10),如果n=3,则输出
1
222
33333
222
1
以此类推。
1. 把文本文件xdat复制到文本文件xdat中,要求仅复制xdat中的非空格字符。
