全国自考(高级语言程序设计)模拟试卷10
一、1.单项选择题
0. 下列不属于面向机器语言的是( )
A.符号语言
B.二进制语言
C.汇编语言
D.C语言
1. 设int b=2;表达式(b<<2)/(b>>1)的值是( )
A.2
B.4
C.6
D.8
2. 设置变量定义为:int a=0x53;int b=6;,求表达式~a|b的值(假定现有计算机字长为16)( )
A.82
B.-82
C.72
D.-72
3. 为了判定两个字符串是否相等应当使用( )
A.if(s1==s2)
B.if(s1=s2)
C.if(strcmp(s1,s2)==0)
D.if(strcmp(s1,s2)=0)
4. 设char c[5]={"a","b"," ","C"," ");则printf("%s",c);的输出是( )
A."a""b"
B.ab
C.abc
D.ab c
5. 以下程序的运行结果是( ) #include<stdio.h> main() { int a[]={1,2,3,4,5,6,7,8,9,10,11,12}; int *p=&a[5],*q=NULL; printf("%d%d ",*p,*q); }
A.运行后报错
B.6 0
C.6 12
D.5 5
6. 当执行以下程序段时( ) do{y--;}while(--y) printf("%d ",y--);
A.循环体将执行一次
B.循环体将执行两次
C.循环体将执行无限次
D.系统将提示有语法错误
7. 设char str[100];int I=5;,则引用数组元素的错误形式的是( )
A.str[I+10]
B.*(srr+I)
C.(str+I-1)
D.*(&(str++)+I)
8. 下列表达式的值为0的是( )
A.3%5
B.3*5
C.3/5.0
D.3>5
9. 字符串"2008 Olympic"在存储单元中所占用的字节数是( )
A.9
B.10
C.11
D.13
10. 设a=5,b=3;,执行语句"printf("%d,%d,(a,b),(b,a));"输出是( )
A.5,3
B.3,5
C.5,5
D.3,3
11. 执行下列程序段后,*p的值是( ) char *p="asdf"; printf("%c",*(p+strlen(p)));
A.语句错误
B.s
C.d
D.a
12. 下列关于函数的说法不正确的是( )
A.函数是一个可反复使用的程序段
B.main()函数也可以做被调函数
C.函数参数的输入和输出统称为"函数问数据的传递"
D.从定义的角度来分,可分为用户函数和系统函数两类
13. 通常适用于从被调用函数中将一个值传回主调函数的参数传递方式是( )
A.利用返回值数据传递方式
B.利用形参与实参传递数据的方式
C.利用全局变量传递数据的方式
D.以上都不对
14. 下列关于文件随机定位函数fseek()的描述正确的是( )
A.若定位正确返回非零值
B.包含在头文件stdlib.h中
C.本函数只能用于二进制文件
D.本函数可以使用文件内部指针直接指向需要的某个数据
二、2.填空题
0. 高级语言编写的程序被称为______,它是不能在计算机上直接运行的,必须将其翻译成二进制程序后才能执行。
1. 位运算的对象只能是______。
2. 下面程序的输出结果是______。
#include<stdio. h>
main()
{static char b[]="Hello!world!";
char *chp=&b[6];
while(--chp>=&b[0])putchar(*chp);
putchar("
");
}
3. 请写出以下数学表达式的C语言表达式:______。
4. 下列程序语句执行后的结果是______。
main()
{int x="f";printf("%c
","A"+(x-"a"+1));}
5. 表示条件"10<x<100或x<0"的c语言表达式是______。
6. 若已知a=10、b=20,则表达式!a<b的值为______。
7. 没int b=2;表达式(b>>2)/(b>>1)的值是______。
8. 下列语句执行后输出的结果是______。
main()
{double d=3.2;int x,y;
x=1.2;y=(x+3.8)/5.0;
printf("%d
",d*y);
}
9. 如果形参是数组名,则传递方式称为"______"。
三、3.程序分析题
0. #include<stdio.h>
main()
{int a[4][3]={1,5,9,12,8,17,13,6,10,24,22,23},i,s=1;
for(i=2;i<2=3;i++)
s=s+a[i][3-i];
printf("s=%d
",s);
}
1. #include<stdio.h>
main()
{int i,j,row,colum,m;
static int arry[3][3]={{100,200,300},{28,27,29},{850,26,5)};
m=arry[0][0];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(arry[i][j]<m)
{m=arry[i][j];row=i;colum=j;}
printf("%d,%d,%d
",m,row,colum);
}
2. #include<stdio.h>
main()
{char b[]={"CDEFGH"};
char *chp=&b[3];
while(--chp<&b[0]);
putchar(*chp):
printf("n"):
}
3. #inelude<stdio.h>
sub(x,y,z)
int x,y,*z;
{*z=y-x;}
main()
{int a,b,C;
sub(10,5,&a);
sub(7,a,&b);
sub(a,b,&c);
printf("%d,%d,%d
",a,b,c);
}
四、4.程序填充题
0. 下面程序由终端键盘输入一个文件名。然后把从终端键盘输入的字符依次存放到该文件中,用#作为结束输入的标志。
#include<stdio.h>
#include
main()
{FILE *fp;
char ch,fname[10];
printf("Please input the file name.
");
gets(fname);
if((fp=______)==NULL)/*第一空*/
{printf("()pen it error
");______;}/*第二空*/
else(printf("Enter the content
");
while((ch=getchar())!="#")
______;/*第三空*/
}
fclose(fp);
}
1. 下面rotate函数的功能是:将n行n列的矩阵A转置为A。
#define N 4
void rotate(int a[][N])
{int i,j,t;
for(i=0;i<N;I++)
for(j=0;______;j++)/*第一空*/
{t=a[i][j];
______;/*第二空*/
a[j][i]=______;/*第三空*/
}
}
2. 输入2个整数,输出它们的最小公倍数和最大公约数。
#include<stdio.h>
void main()
{int m,n,gbs,gys;
scanf("%d,9/6d",m,n);
gbs=m;
while(______)/*第一空*/
gbs=______;/*第二空*/
gys=______;/*第三空*/
printf("%d %d
",gbs,gys);
}
五、5.程序设计题
0. 输出100以内所有个位数字为7且能被3整除的数。
1. 一个二维数组int a[4][4],请将其填满并输出其四个边的元素。
