高级语言程序设计自考模拟10
[模拟] 高级语言程序设计自考模拟10
单项选择题在每小题列出的四个备选项中只有一个是符合题目要求的。
第1题:
下列不属于面向机器语言的是( )
A.符号语言
B.二进制语言
C.汇编语言
D.C语言
参考答案:D
答案解析:
第2题:
设int b=2;表达式(b<<2)/(b>>1)的值是( )
A.2
B.4
C.6
D.8
参考答案:D
答案解析:
左移位运算移一位相当于乘2,右移位运算右移一位相当于除2。
第3题:
设置变量定义为:int a=0x53;int b=6;,求表达式~a|b的值(假定现有计算机字长为16)( )
A.82
B.-82
C.72
D.-72
参考答案:B
答案解析:
因计算机字长为16.故a的二制表示是0000000001010011,b的二进制表示是0000000000000110。运算符"~"自右向左结合,运算符"|"是自左向右结合;且运算符"~"的优先级高于运算符"|"的优先级,则进行计算的顺序是"(~a)|b"。最终计算结果是1111111101010010(十进制值为-82)。
第4题:
为了判定两个字符串是否相等应当使用( )
A.if(s1==s2)
B.if(s1=s2)
C.if(strcmp(s1,s2)==0)
D.if(strcmp(s1,s2)=0)
参考答案:C
答案解析:
第5题:
设char c[5]={'a','b','\0','C','\0');则printf("%s",c);的输出是( )
A.'a''b'
B.ab
C.abc
D."ab\0c"
参考答案:B
答案解析:
第6题:
以下程序的运行结果是( ) #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\n",*p,*q);}
A.运行后报错
B.6 0
C.6 12
D.5 5
参考答案:A
答案解析:
#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\n",*P,*q);/*被置空的指针不能参与"*"运算*/ }
第7题:
当执行以下程序段时( ) do{y--;}while(--y)
printf("%d\n",y--);
A.循环体将执行一次
B.循环体将执行两次
C.循环体将执行无限次
D.系统将提示有语法错误
参考答案:C
答案解析:
变量y无初值,系统默认非空。循环将无限次地被执行下去。
第8题:
设char str[100];int I=5;,则引用数组元素的错误形式的是( )
A.str[I+10]
B.*(srr+I)
C.(str+I-1)
D.*(&(str++)+I)
参考答案:D
答案解析:
第9题:
下列表达式的值为0的是( )
A.3%5
B.3*5
C.3/5.0
D.3>5
参考答案:D
答案解析:
3>5不为真,故表达式的值为0。
第10题:
字符串"2008 Olympic"在存储单元中所占用的字节数是( )
A.9
B.10
C.11
D.13
参考答案:D
答案解析:
第11题:
设a=5,b=3;,执行语句"printf("%d,%d,(a,b),(b,a));"输出是( )
A.5,3
B.3,5
C.5,5
D.3,3
参考答案:B
答案解析:
第12题:
执行下列程序段后,*p的值是( ) char *p="asdf";
printf("%c",*(p+strlen(p)));
A.语句错误
B.s
C.d
D.a
参考答案:D
答案解析:
指针变量P在得到初值"asdf"之后没有初改变过,P就是字符串"asdf"的首地址.故*P的值为a。
第13题:
下列关于函数的说法不正确的是( )
A.函数是一个可反复使用的程序段
B.main()函数也可以做被调函数
C.函数参数的输入和输出统称为"函数问数据的传递"
D.从定义的角度来分,可分为用户函数和系统函数两类
参考答案:B
答案解析:
第14题:
通常适用于从被调用函数中将一个值传回主调函数的参数传递方式是( )
A.利用返回值数据传递方式
B.利用形参与实参传递数据的方式
C.利用全局变量传递数据的方式
D.以上都不对
参考答案:A
答案解析:
第15题:
下列关于文件随机定位函数fseek()的描述正确的是( )
A.若定位正确返回非零值
B.包含在头文件stdlib.h中
C.本函数只能用于二进制文件
D.本函数可以使用文件内部指针直接指向需要的某个数据
参考答案:D
答案解析:
填空题
第16题:
有以下程序
#include<stdio.h>
main()
{char s[]="159",*P;
p=s;
printf("%C",*p++);
printf("%C",*p++);
}
程序运行后的输出结果是______。
参考答案:
15
详细解答:
第17题:
以下程序运行时若从键盘输入:10 20 30<回车>,输出结果是______。
#include<stdio.h>
main()
{
int i=0,j=0,k=0;
scanf("%d%*d%d",&i,&j,&k);
printf("%d%d%d\n",i,j,k);
}
参考答案:
10300
详细解答:
#include<stdio.h> main() { int i=0,j=0,k=0;scanf("%d%*d%d",&i,&j,&k);/*"%*d"不被识别,但仍然占位;故i,j分
别获得值10和30.而k的值默认被初始化为0*/ printf("%d%d%d\n",
i,j,k); }
第18题:
有如下程序
#include<stdio.h>
int rune(int a,int b)
{return(a+b);)
main()
{int x=2,y=5,z=8,r;
r=rune(rune(x,y),z);
printf("%dkn",r);
}
该程序的输出结果是______。
参考答案:
15
详细解答:
#include<stdio.h> int rune(int a,int b) {return(a+b);} main() {int x=2,y=5,z=8,r; r=rune(rune(x,y),z);/*主函
数反复嵌套调用函数rune(),r的实际计算过程为r=x+y+z*/ printf("%d\n",r); }
第19题:
表示整数X的绝对值大于5时值为"真"的C语言表达式是:______。
参考答案:
x>5||x<-5
详细解答:
第20题:
用来定义寄存器类型变量的C语言保留字是______。
参考答案:
register
详细解答:
第21题:
分别用十进制表示整形常量-0xlf为______。
参考答案:
-31
详细解答:
第22题:
在Turbo C中语言源程序的扩展名为______。
参考答案:
c
详细解答:
第23题:
在函数调用过程中,如果形参是指针变量,则实参必须是______。
参考答案:
地址表达式
详细解答:
第24题:
判断一个字符是否是英文字母的函数是______。
参考答案:
isalpha()
详细解答:
第25题:
读字符串函数是______。
参考答案:
fgets()
详细解答:
程序分析题
第26题:
#include<stdio.h>
void fun(int m,int n,int ar[][4],int*bar)
{
int i,j,x;
for(i=0;i<3;i++)
{x=ar[i][0];
for(j=0;j<3;j++)
bar[i]=X;
}
}
main()
{int a[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1)},b[3],i;
fun(3,4,a,b);
for(i=0;i<3;i++)printf("%4d",b[i]);
printf("\n");
}
__________
参考答案:
12 19 3
详细解答:
#include<stdio.h>void fun(int m,int n,int ar[][4],
int*bar)/*定义函数并定义其形参变最,其中数组ar是一个每行只有4个元素
的数组*/ { int i,j,x;for(i=0;i<m;i++) {x=ar[i][0]; for(j=0;j<n;j++) bar[j]=x; } } main() {int a[3][4]="12,41,36,28},{19,33,15,27},{3,27,19,1}),b[4],i; fun(3,4,a,b); for(i=0;i<3;i++)printf("%4d",
b[i]);/*采用格式化输出,以4位的宽度输出褴数b[i],左边不是的位数以空
格填充* printf("\n"); }
第27题:
#include<stdio.h>
void swap(int x,int y)
{int t;
t=x;x=y;y=t;
printf("%d%d",x,y);
}
main()
{int a=3,b=4;
swap(a,b);
printf("%d%d\n",a,b);
}
__________
参考答案:
4 3 3 4
详细解答:
#include<stdio.h> void swap(int x,int y)/*形参为整型变量,
参数传递的方式为非地址传递方式*/ {int t;t=x;x=y;y=h printf("%d%d",x,y);} main() {int a=3,b=4;swap(a,b);/*调用swap()函数*/ printf("%d%d\n",a,b);/*对函数swap()的调用并没有政变变量a和b的值*/ }
第28题:
#include<stdio.h>
main()
{char *a="12134211";
int v1=0,v2=0,v3=0,v4=0,k;
for(k=0;k<=strlen(a);k++)
switch(*a++)
{default:v4++;
case'1':v1++;
case'3':v3++;
case'2':v2++;)
printf("v1=%d,v2=%d,v3=%d,v4=%d\n",v1,v2,v3,v4);}
__________
参考答案:
v1=3,v2=5,v3=4,v4=1 解折:#include<stdio.h>main3() {char *a="12131211";int v1=0,v2=0,v3=0,v4=0,k;for(k=0;
k<strlen(a);k++)/*,循环被终止的条件是k的值大于字符串a的长度8*/ switch(*a++)/*选择的条件是数组a的元素,并且a作为于指针变量有一个自增
1运算*/ {default:v4++;case'1':v1++;case'3':v3++;case'2':v2++}/*因没有break语句,从符介条什的语句开始,每一行case语
句都会被执行*/ printf("vt=%d,v2=%d,v3=%d,v4=%d\n",v1,v2,v3,
v4);}
详细解答:
第29题:
#include<stdio.h>
int fun(int h)
{static int a[3]={1,2,3);
int k;
for(k=0;k<3;k++)a[k]+=a[k]-h;
for(k=1;k<3;k++)printf("%d\t",a[k]);
return(a[h]);
}
main()
{int t=1;fun(fun(t));}
__________
参考答案:
3 5 3 7
详细解答:
#include<stdio.h> int fun(int h) {static int a[3]={1,
2,3};/*定义一个静态数组a。每次使用其元素退出后,值都会被保留*/ int k; for(k=0;k<3;k++)a[k]+=a[k]-h; for(k=1;k<3;
k++)printf("%d\t",a[k]);return(a[h]);} main() {int t=1;fun(fun(t));) }
程序填充题
第30题:
以下程序求a数组中的所有素数的和,函数isprime用来判断自变量是否为素
数。素数是只能被1和本身整除且大于1的自然数。
#include<stdio.h>
int isprime(int x)
{int i,r=1;
for(i=2;i<=x/2;i++)
if(x%i==0){r=0;break;)
______;}/*第一空*/
main()
{int i,a[10],sum=0;
printf("Enter 10 nums:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
if(______)/*第二空*/(printf("%d",a[i]);
______;/*第三空*/
}
printf("\nThe sum=%d\n",sum);
}
参考答案:
return r/*第一空。函数isprime()是用来判断给定的一个数是否是素数,
进行判断之后应当给予主调函数一个回应,即返回值。*/ isprime(a[i])==1/*第二空。调用函数isprime()判断数组元素是否为素数。*/ sum+=a[i]/*第三空。对被判断为素数的数组元素进行求和运算。*/
详细解答:
第31题:
下面程序的功能是调用函数fun计算:m=1-2+3-4+…+9-10,并输出结果。
#include<stdio.h>
int fun(int n)
{intm=0,f=1,i;
for(______;i<-n;i++)/*第一空*/
{m+=i*f;
f=______;/*第二空*/
}
return m;
}
main()
{printf("m=%d\n",______);)/*第三空*/
参考答案:
i=1/*第一空。公式"m=1-2+3-4+…+9-10"中第一项的值为1,故i的初值应
为1。*/ f*(-1)/*第二空。公式的规律是;所有的偶数项都为负值。*/ fun(10)/*第三空。公式的最大项为10,故调用函数fun()时参数传递的数值应
为10。*/
详细解答:
第32题:
下面程序的功能是:先从键盘上输入一个3行3列矩阵的各个元素的值,然后
输出主对角线之和。
#include<stdio.h>
main()
{
int a[3][3],sum;
int i,j;
______;/*第一空*/
for(i=0;i<3;i++)
for(______)/*第二空*/
scanf("%d",&a[i][j]);
for(i=0;i<3;i++)
sum=______;/*第三空*/
printf("sum=%d\n",sum);
}
参考答案:
sum=0/*第一空。对和变量sum进行初始化。*/ j=0;j<3;j++/*第二空。对数组元素的初始化过程,定义列宽度。*/ sum+a[i][i]/*第三空。对
对角线数组元素进行求和。*/
详细解答:
程序设计题
第33题:
编程要求输出两个字符串对应位置相等的字符,并输出其位置号(自然编号)。
__________
参考答案:
#include<stdio.h>main() { char*c,*s;int i=0;gets(c);/*字符数组c获得字符串内容*/ gets(s);/*字符数组s获得字
符串内容*/ while(e[i]&&s[i])/*相应位置的两个字符都不为空*/ { if(c[i]==s[i])/*判断相应位置的字符是否相同*/ { printf("%c\t",c[i]);/*输出该字符*/ printf("%d\n",i+1);/*
输出该字符的位置号(自然编号)*/ } } }
详细解答:
第34题:
建立一个磁盘文件,文件名由键盘输入,文件内容也由键盘输入。文件内容的
输入以"*"作为输入结束标志。__________
参考答案:
#include<stdio.h>#include<stdlib.h>main() char ch,fname[20];FILE *fp;scanf("%s",fname);
if((fp=fopen(fname,"w"))==NULL)/*如果fp为空则创建文件失败*/ { printf("Can not open the file required.");exit(0);} ch=getchar();while(ch='*') { fputc(ch,fp);putchar(ch);eh=getchar();}/*对文件输入内容*/ fclose(fp);/*关闭文件*/ }
详细解答: