2012年全国高等教育自学考试高级语言程序设计标准预测试卷(6):2012年全国高等教育自学考试高级语言程序设计标准预测试卷。试卷总分100分;共有5类型题目
一、单项选择题,每小题2分,共30分,在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。
1.C语言中错误的int类型常数是( )
A.123
B.1F7
C.038
D.OxAF
2.以下属于C语言保留字的是( )
A.define
B.put
C.fclose
D.extern
3.sizeof(float)是( )
A.函数调用
B.int型表达式
C.float型表达式
D.非法表达式
4.结构体变量各成员内存分配的顺序是( )
A.顺序的
B.逆序的
C.随机的
D.只分配一个最大成员内存占用量
5.若定义了int a;char b;float c;,
则表达式a*b-c的类型是( )
A.float
B.char
C.int
D.double
6.若有以下定义和语句:
char *s1="12345",*s2="1234":
printf("%d ",strlen(strcpy(s1,s2)));
则输出结果是( )
A.4
B.5
C.6
D.不确定
7.
若x、y均是int型变量,则执行以下语句后的结果是( )
for(x=1;x<5;x+=2)
for(y=1;y<5;y++)
{printf("%2d",x*y);
if(y==4)printf(" ");
}
A.1 2 3 4
3 6 9 12
B.2 3 4 5
3 4 5 6
C.1 2 3 4 5 6 9
D.2 3 4
3 6 9
6 9 12
8.设整型变量m、na、b的值均为1,执行(m=a==b)||(n=a>b)后m,n的值是( )
A.0,1
B.1,0
C.1,1
D.0,0
9.char型常量在内存中存放的是( )
A.二进制代码值
B.十进制代码值
C.十六进制代码值
D.ASCⅡ代码值
10.
11.现有下列程序语句,执行后的结果是( )
#include<stdio.h>
void main()
{char s1[100]="123",s2[100]="qwer";
puts(s1);puts(s2);
printf("%s%s",s1,s2);
}
A.123 qwer123 qwer
B.123qwer123qwer
C.123qwerl23qwer
D.123qwer123qwer
12.假定所有变量均已正确说明,下列程序段运行后x的值是( )
a=b=c=0;x=60;
if(!a)x--;
else if(b)if(c)x=3;
else x+=4;
A.3
B.4
C.60
D.63
13.若有以下定义,则不能正确地表示数组中的元素的是( )
char *s="1,2,3,4,5,6,7,8,9,0,";
A.*s
B.s[9]
C.*(s+1)
D.*(s+10)
14.设有下列数据定义语句,则"printf("%d ",d[0],y/d[0],X*d[1].x);"的输出是( )
struct{int x;int y;}d[2]={{1,3},{2,7)};
A.0
B.1
C.3
D.6
15.执行以下程序段后,m的值是( )
int a[2][3]={{1,2,3},{4,5,6)};
int m,*ptr;
ptr=&a[0][0];
m=(*ptr)*(*(ptr+2))*(*(ptr+4));
A.15
B.24
C.45
D.不确定
二、填空题,每小题2分,共20分请在每小题的空格中填上正确答案。错填、不填均无分。
16.从计算机的角度来讲,______是计算机程序中解决问题的方法步骤。
17.函数strcmp()和函数strcat()包含在头文件______中。
18.函数调用自身的调用是______。
19.下面程序的输出是______。
#include<stdio.h>
main()
{char x=0.40;
printf("%d ",x=x<<1);}
20.现在程序的输出是______。
#include<stdio.h>
main()
{int arr[10],j,k=0;
for(j=0;j<10;j++)
arr[j]=j;
for(j=1;j<4;j++)
k+=arr[j]+j;
printf("%d ",k);
}
21.阅读下列程序:
#include<stdio.h>
#define MAXCOUT 4
void fun()
main()
{int cout;
for(cout=1;tout<=MAXCOUT;cout++)
fun();
}
void fun()
{int j=0;
j+=2;printf("%d",j);
}
22.设有int x=11;表达式(x++*1/3)的值是______。
23.设有如下程序段:
intj=0,sum=1;
do{
sum+=j++;}
while(j<6);
printf("%d ",sum);
上述程序段的输出结果是______。
24.以下循环体的执行次数是______。
#include<stdio.h>
main()
{int j,k;
for(j=0,k=1;j<=k+1;j+=2,k--)
printf("%d ",j);)
25.下面程序段的输出结果是______。
#include<stdio.h>
int b=1:
int func(int *a)
{*a+=b;return(*a);)
main()
{int a=2,res=1;
res+=func(&a);
prf("%d%d ",a,res);}
三、程序分析题,每小题5分,共20分阅读下列程序,将输出结果写到各题右侧的空白处。
26.#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);
}
27.#include<stdio.h>
main()
{char *p[]={"BOOL","OPK","H","ASD");
int;
for(i=3;i>=0;i--,i--)
printf("%s",*(p+i));
printf(" ");
}
28.#include<stdio.h>
int d=1:
int fun(int p)
{d+=P++;
printf("%d",d);
}
main()
{int a=3;
fun(a);
d+=a++;
print f("%d ",d);
}
29.#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);
}
四、程序填充题,每空5分,共15分给出下列程序,将横线处缺少的部分补上,使其能正确运行。
30.
完善下面程序段,以使其完成以下数学函数的计算。
#include<stdio.h>
#include<math.h>
main()
{float x,y,f1,fun();
scanf("%f%f",&x,&y);
fl—X*x/fun(______);/*第一空*/
printf("A=%f ",f1);
}
float fun(float f)
{float f2;
f2=f*f+sqrt(1十______/*第二空*/+______);/*第三空*/
return(f2);
}
31.以下程序能将字符串Program!反向打印出来,请填空。
#include<stdio.h>
void out(char *str)
{char *s=______;/*第一空*/
if(*s==NULL)return:
while(______)s++;/*第二空*/
s--;
printf("%c ",*s);
______=NULL;/*第三空*/
out(str);
}
main()
{char c[]="Program!";
out(c);}
32.下面程序把从终端读入的文本(用"@"作为文本结束的标志)复制到一个名为bi.dat的新文件中,请填空。
#include<stdio.h>
FILE*fp;
main()
{char ch;
if((fp=______)==NULL)/*第一空*/
exit(0);
while((______)!="@")/*第二空*/
fputc(ch,fp);
______;/*第三空*/
}
五、程序设计题,每小题7.5分,共15分。
33.从键盘上输入一个3*5的矩阵,将其转置后形成5*3的矩阵输出。
34.输入30个学生的学号和3门课程的成绩(整数),统计并输出3门课程总分最高的学生的学号和总分。