全国自考(高级语言程序设计)模拟试卷4
一、1.单项选择题
0. 下列关于C语言的描述正确的是( )
A.C语言是面向硬件的高级语言
B.C语言是面一种面向对象的程序设计语言
C.C语言是一种结构化程序设计语言
D.C语言的前身是汇编语言
1. C语言的基本数据类型包括( )
A.字符型和数值型
B.字符型和逻辑型
C.整型和实型
D.指针型和数据型
2. 已知有以下定义(假定现有计算机字长为16) int a=0x48,b=0xf0; a^b的值为( )
A.184
B.183
C.290
D.287
3. 若有以下定义: char s[20]=="programming",*ps=s; 则不能代表字符o的表达式是( )
A.*(ps+2)
B.s[2]
C.ps[2]
D.*ps+=2
4. 若有说明语句:int I,;则以下关于x、*x、x[0]、&x[0][0]的描述正确的是( )
A.x、*x、x[0]、&x[0][0]均表示元素x[0][0]的地址
B.只有x、*x表示元素x[0][0]的地址
C.只有x[0]、&x[O]L0]表示元素x[0][0]的地址
D.只有&x[0][0]表示元素的地址
5. 若有下列类型说明语句: char w;int x;float y;double z; 则表达式w*x+z-y的结果的数据类型是( )
A.char
B.int
C.float
D.double
6. 下列程序正确的运行结果为( ) #include<stdio.h> main() {int a[]={2,6,8,10,14,18); int *ptr[-]={&a[0],&a[1],&a[2],&a[3],&a[4]); int i; for(i=0;i<5;i++) a[i]=a[i]/2+a[i] printf("%d ",*(*(ptr+2))); printf("%d ",*(*ptr)); }
A.12 21
B.21 12
C.12 3
D.3 12
7. 以下函数的功能是( ) ABC(ps) char *ps; {char *P; p=ps; while(*p++); return(p-ps); }
A.比较两个字符串的大小
B.求字符串的长度
C.将字符串ps复制到P中
D.以上三种说法都不对
8. 若x、y是int型变量,则执行以下语句后的x值是( ) #include<stdio.h> main() { int x,y; for(y=1,x=1;y<50;y++) {if(x>=10)break; if(x%2==1) x+=5;} x-=3; }
A.3
B.6
C.7
D.10
9. 执行下列语句后b的值为( ) int a,b,C,l=4,m=6,n=8; int *p1=&1,*p2=&m,*p3; a=p1==&1;b=3*(-*p1)/(*p2)+7; c=*(p3=&n)=*p1*(*p2);
A.4
B.5
C.7
D.8
10. 若有以下说明,则在seanf函数调用语句中对结构体变量成员引用方式不正确的是( ) struct pub {char name[20]; int age; int sex; }pub[5],*P;
A.scanf("%s",pup[0].name);
B.scanf("%d",&pup[0].age);
C.scanf("%d",&p->sex);
D.scanf("%d",*P.age);
11. 设有以下定义 int a[4][3]={{1,2,3},{4,5,6},{7,8,9),{10,11,12}; int *ptr[3]={a[0]},*p=a[0]; 则以下能正确表达数组元素a[1][2]的表达式是( )
A.*((*ptr+1)[2])
B.*(*(p+5))
C.*((*ptr+1)+4)
D.*(*(p+1)+2)
12. 执行以下程序段后s的值为( ) int a[]={5,6.4,4,8,9,5,8}; int s=0; int k; for(k=0;k<8;k+=2) s+=*(a+k):
A.17
B.22
C.27
D.32
13. 不能把字符串"Hello!"符给数组b的语句是( )
A.char b[10]={"H","e","l","l","o","!"};
B.char b[10];b="Hello!";
C.char b[10];strcpy(b,"Hello!");
D.char b[10]="Hello!";
14. 下列选项中合法的数组定义是( )
A.int a[]="string";
B.int a[5]={0,1,2,3,4,5};
C.char a="sting";
D.char a[]={0,1,2,3,4}
二、2.填空题
0. 若有定义:double w[6];,则数组元素下标的上限为______。
1. 若有定义语句:int a[]={10,2,20,3,30,4,40},p;p=a;,则执行"p2+=;之后p的值是______。
2. 若定义了 int a[9],*p;,将数组元素a[8]的地址赋给指针变量p的赋语句是______。
3. C语言的保留字主要用于语句的构成,所有保留字均由______组成。
4. 语句";"是无任何操作的语句,被称为______。
5. ______是双目运算符,其运算对象是表达式,其值是右边表达式的值。
6. 若要使用系统函数getchar(),必须在程序的开头使用预编译命令______。
7. 若要以八进制输出整型变量,则要在输出语句中加上格式输出符______。
8. 指针变量的使用主要有两种,一是______;二是引用所指向的变量。
9. 写出n小于m的奇数的表达式______。
三、3.程序分析题
0. #include<stdio.h>
main()
{int a[]={2,4,6,8,10};
int y=1,x,*P;
p=&a[1];
for(x=0;x<3;X++)
y+=*(p+x);
printf("%d
",y);
}
1. #include<stdio.h>
main()
{char *p[]={"BOOL","OPK","H","ASD");
int;
for(i=3;i>=0;i--,i--)
printf("%s",*(p+i));
printf("
");
}
2. #include<stdio.h>
int d=1:
int fun(int p)
{d+=P++;
printf("%d",d);
}
main()
{int a=3;
fun(a);
d+=a++;
printf("%d
",d);
}
3. #include<stdio.h>
main()
{int i,j,row,col,max;
int a[3][4]={{1,2,3,4,},{10,4,20,6,},{0,-1,-3,-5,}};
max=a[0][0];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if(a[i][j]>max)
{max=a[i][j];row=i;col=j;)
printf("max=%d,row=%d,col=%d
",max,row,col);
}
四、4.程序填充题
0. 函数YangHui的功能是把杨辉i角形的数据赋给二维数组的下半三角,形式如下:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
其构成规律是:(1) 第0列元素和主对角线元素均为1(2) 其余元素为其左上方和正上方元素之和(3) 数据的个数每行递增1
#include<stdio.h>
#define N 5
void YangHui(int x[N][N])
{int i,j;
x[0][0]=1;
for(i=1;i<N;i++)
{x[i][0]=______=1;/*第一空*/
for(j=1;j<i;j++)
if(______)/*第二空*/
x[i][j]=______;/*第三空*/
}
}
1. 下面程序段可以求出n!的值。
#include<stdio.h>
main()
{int i,n;
long np;
scanf("%d",&n);
______;/*第一空*/
for(i=2;______;i++)/*第二空*/
______;/*第三空*/
printf("n=%d,n!=%ld
",n,np);
}
2. 下面程序可用来统计文件中字符的个数。
#include<stdio.h>
main()
{FILE *fp;
long num=0;
if((fp=______)==NULL)/*第一空*/
{printf("Can not open file
");exit(0);}
while(______)/*第二空*/
{______;}/*第三空*/
printf("num=%d
",num);
fclose(fp);
}
五、5.程序设计题
0. 编一个程序其功能是输入一个正整数,判断是否是素数,若为素数则输出1,否则输出0。(素数是只能被1和本身整除且大于1的自然数)
1. 有一个字符串,包含n个字符。写一个函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串。要求在主函数中输入字符串及m值并输出复制结果。
延伸阅读
- 考前自救指南:希赛自考题库快速提分
- 自考专属刷题工具,刷题即提分!
- 最后9天,自考历年真题应该怎么刷?
- 自考备考一站式服务:希赛自考题库APP
- 0基础逆袭秘籍:希赛全套自考学习包(含智能题库)
- 避开备考误区!用希赛自考APP快速提分!
自考微信公众号
扫码添加
自考备考资料免费领取
去领取
扫描二维码