全国自考(高级语言程序设计)模拟试卷2
一、1.单项选择题
0. C语言程序的三种基本结构是顺序结构、循环结构和( )
A.选择结构
B.递归结构
C.嵌套结构
D.转移结构
1. 下列符号中是正确的C标识符的是( )
A.a-2
B.x12
C.2.78
D.π
2. 假定有以下变量定义: int k=6,x=12; 则能使x、k值为5、6的表达式是( )
A.x%=++k%10
B.x%=k+k%5
C.x-=++k%5
D.x-=k++%5
3. 表达式if(!x)中的"!x"等效于( )
A.x==0
B.x==1
C.x!=0
D.x!=1
4. 有以下程序,程序运行后的输出结果是( ) main() {int a[10]={1,2,3,4,5,6,7,8,9,10),*p=&a[3],*q=p+2; printf("%d11",*p+*q); }
A.16
B.10
C.8
D.6
5. 有以下程序( ) main() {char p[]={"a","b","C"},q[]="abc"; printf("%d%d",sizeof(p),sizeof(q)); } 程序运行后输出的结果是
A.4 4
B.3 3
C.3 4
D.4 3
6. 要调用字符串长度测试函数strlen()时,在#include命令行中应包含( )
A.stdio.h
B.string.h
C.math.h
D.ctype.h
7. 有以下程序( ) main() { int x=102,y=012; printf("/0/02d,%2d ",X,y); } 执行后输出结果是
A.10,01
B.02,12
C.102,10
D.02,10
8. 有以下定义( ) #include<stdio.h> char a[10],*b=a; 不能给数组a输入字符串的语句是
A.gets(a)
B.gets(a[0])
C.gets(&a[0]);
D.gets(b);
9. 有以下程序( ) main() {char *p[10]={"abc","aabdfg","dcdbe","abbd","cd"}; printf("%d ",strlen(p[4])); } 执行后输出结果是
A.2
B.3
C.4
D.5
10. 有以下程序( ) #include<stdio.h> main() {unsigned char a,b; a=4|3; b=4&3; printf("%d%d ",a,b); } 执行后输出结果是
A.7 0
B.0 7
C.1 1
D.43 0
11. 下面程序的功能是输出以下形式的金字塔图案:
#include<stdio.h> main() {int i,j; for(i=1;i<=4;i++) {for(j=1;j<=4-i;j++)printf(""); for(j=1;j<=______;j++)printf("*"); printf("
"); } } 在下划线处应填入的是( )
A.i
B.2*i-1
C.2*i+1
D.i+2
12. 在C语言程序中,下列磁盘文件名错误的是( )
A.abc.dat
B.c:abc.dat
C. cabc.dat
D.a:abc.dat
13. 包含用户类型符"FILE"的定义的头文件是( )
A.string.h
B.file.h
C.stdio.h
D.stdlib.h
14. 定义存储在内存堆栈区的变量的存储类型符是( )
A.extern
B.static
C.register
D.auto
二、2.填空题
0. 一个C程序-般应由多个函数组成,但也可以由一个函数组成。这个函数是______。
1. C语言中整型常量的书写形式包括:八进制,十进制和______。
2. C语言标识符的第一个字符只能字母或______
3. 文件定位函数包含在头文件______中。
4. 与标准错误输出设备相对应的文件型指针是______。
5. 将大写字母转换为小写字母的函数是______。
6. 外部函数的存储类型符是______。
7. 下的findrnax函数返M数组s中最大元素的下标。数组中元素的个数由t传入。
findmax(int s[],int t)
{int k,p;
for(p=0,k=0;p<t;p++)
if(s[p]>s[k])______;
return k:
}
8. 语句printf("are"hi"y\bou ");输出的结果是______。
9. 设a、b、c为整型数,且a=2、b=3、c=4;则执行完下列语句后a的值是______。
a*=16+(b++)-(++c);
三、3.程序分析题
0. #include<stdio.h>
void main()
{int i;
for(i=1;i<5;i++)
printf("%d %c
",i,("A"+i));
}
1. #include<stdio.h>
void main()
{int i,j,a[4][4];
for(i=0;i<4;i++)
for(j=0;j<4;j++) a[i][j]=1+i;--j;
for(i=0;i<4;i++)
{for(j=0;j<4;j++)
if(a[i][j]>0)printf("%3 d",a[i][j]);
printf("
");}
}
2. #include<stdio.h>
int f(int n)
{static int s=1;
while(n)s*=n--;
return s;
}
main()
{int i,j;
i=f(3);j=f(5);
printf("The output is:
");
printf("i=%d j=%d
",i,j);
}
3. #include<stdio.h>
int trans(int m,int n)
{int i;
if(m>n){
i=m%n;trans(m,n);}
else i=m:
if(i<10)printf("%d
",i):
else printf("%c",’A’+i-10):
}
main()
{int i;
printf("The output is:
");
printf("n%d
",-23);
trans(21,3);
printf("n%d
",123);
trans(123,16);
}
四、4.程序填充题
0. 以下程序从终端读入数据到数组中,统计其中正数的个数,并计算它们之和。
#include<stdio.h>
main()
{int i,a[20],sum,count;
sum=count=0:
for(i=0;i<20;i++)scanf("%d",______);/*第一空*/
for(i=0;i<20;i++)
{if(______)/*第二空*/
{count++;
______;}/*第三空*/
}
printf("count=%d,sum=%d
",count,sum);
}
1. SumColumMin()的功能是:求出M行N列二维数组每列元素中的最小值,并计算它们的和值。和值通过形参传回主函数输出。
#include<stdio.h>
#define M 2
#define N 4
void SumColumMin(______)/*第一空*/
{int i,j,k,s=0;
for(i=0;i<N;i++)
{k=0;
for(j=1;j<M;j++)
if(______)k=j;/*第二空*/
s+=a[k][i];
}
______;/*第三空*/
}
main()
{int x[M][N]={3,2,5,1,4,1,8,3},s;
SumColumMin(x,&s);
printf("%d
",s);
}
2. 求f(x[0,10])的累加和,其中f(x)=2x+1。
#include<stdio.h>
int F(int x)
{return______;)/*第一空*/
int SumFun(int n)
{
int x,s=0:
for(x=0;x<n;x++)______;/*第二空*/
return s;
}
main()
{
printf("The sum=%d
",______);/*第三空*/
}
五、5.程序设计题
0. 从键盘上输入一个3*5的矩阵,将其转置后形成5*3的矩阵输出。
1. 输入30个学生的学号和3门课程的成绩(整数),统计并输出3门课程总分最高的学生的学号和总分。
