高级语言程序设计自考模拟10.docx
《高级语言程序设计自考模拟10.docx》由会员分享,可在线阅读,更多相关《高级语言程序设计自考模拟10.docx(18页珍藏版)》请在冰豆网上搜索。
高级语言程序设计自考模拟10
[模拟]高级语言程序设计自考模拟10
单项选择题在每小题列出的四个备选项中只有一个是符合题目要求的。
第1题:
下列不属于面向机器语言的是()
A.符号语言
B.二进制语言
C.汇编语言
D.C语言
参考答案:
D
答案解析:
第2题:
设intb=2;表达式(b<<2)/(b>>1)的值是()
A.2
B.4
C.6
D.8
参考答案:
D
答案解析:
左移位运算移一位相当于乘2,右移位运算右移一位相当于除2。
第3题:
设置变量定义为:
inta=0x53;intb=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题:
设charc[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(){inta[]={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.60
C.612
D.55
参考答案:
A
答案解析:
#include<stdio.h>main(){inta[]={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题:
设charstr[100];intI=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题:
字符串"2008Olympic"在存储单元中所占用的字节数是()
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()
{chars[]="159",*P;
p=s;
printf("%C",*p++);
printf("%C",*p++);
}
程序运行后的输出结果是______。
参考答案:
15
详细解答:
第17题:
以下程序运行时若从键盘输入:
102030<回车>,输出结果是______。
#include<stdio.h>
main()
{
inti=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(){inti=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>
intrune(inta,intb)
{return(a+b);)
main()
{intx=2,y=5,z=8,r;
r=rune(rune(x,y),z);
printf("%dkn",r);
}
该程序的输出结果是______。
参考答案:
15
详细解答:
#include<stdio.h>intrune(inta,intb){return(a+b);}main(){intx=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题:
在TurboC中语言源程序的扩展名为______。
参考答案:
c
详细解答:
第23题:
在函数调用过程中,如果形参是指针变量,则实参必须是______。
参考答案:
地址表达式
详细解答:
第24题:
判断一个字符是否是英文字母的函数是______。
参考答案:
isalpha()
详细解答:
第25题:
读字符串函数是______。
参考答案:
fgets()
详细解答:
程序分析题
第26题:
#include<stdio.h>
voidfun(intm,intn,intar[][4],int*bar)
{
inti,j,x;
for(i=0;i<3;i++)
{x=ar[i][0];
for(j=0;j<3;j++)
bar[i]=X;
}
}
main()
{inta[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");
}
__________
参考答案:
12193
详细解答:
#include<stdio.h>voidfun(intm,intn,intar[][4],int*bar)/*定义函数并定义其形参变最,其中数组ar是一个每行只有4个元素的数组*/{inti,j,x;for(i=0;i<m;i++){x=ar[i][0];for(j=0;j<n;j++)bar[j]=x;}}main(){inta[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>
voidswap(intx,inty)
{intt;
t=x;x=y;y=t;
printf("%d%d",x,y);
}
main()
{inta=3,b=4;
swap(a,b);
printf("%d%d\n",a,b);
}
__________
参考答案:
4334
详细解答:
#include<stdio.h>voidswap(intx,inty)/*形参为整型变量,参数传递的方式为非地址传递方式*/{intt;t=x;x=y;y=hprintf("%d%d",x,y);}main(){inta=3,b=4;swap(a,b);/*调用swap()函数*/printf("%d%d\n",a,b);/*对函数swap()的调用并没有政变变量a和b的值*/}
第28题:
#include<stdio.h>
main()
{char*a="12134211";
intv1=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";intv1=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>
intfun(inth)
{staticinta[3]={1,2,3);
intk;
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()
{intt=1;fun(fun(t));}
__________
参考答案:
3537
详细解答:
#include<stdio.h>intfun(inth){staticinta[3]={1,2,3};/*定义一个静态数组a。
每次使用其元素退出后,值都会被保留*/intk;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(){intt=1;fun(fun(t));)}
程序填充题
第30题:
以下程序求a数组中的所有素数的和,函数isprime用来判断自变量是否为素数。
素数是只能被1和本身整除且大于1的自然数。
#include<stdio.h>
intisprime(intx)
{inti,r=1;
for(i=2;i<=x/2;i++)
if(x%i==0){r=0;break;)
______;}/*第一空*/
main()
{inti,a[10],sum=0;
printf("Enter10nums:
\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
if(______)/*第二空*/(printf("%d",a[i]);
______;/*第三空*/
}
printf("\nThesum=%d\n",sum);
}
参考答案:
returnr/*第一空。
函数isprime()是用来判断给定的一个数是否是素数,进行判断之后应当给予主调函数一个回应,即返回值。
*/isprime(a[i])==1/*第二空。
调用函数isprime()判断数组元素是否为素数。
*/sum+=a[i]/*第三空。
对被判断为素数的数组元素进行求和运算。
*/
详细解答:
第31题:
下面程序的功能是调用函数fun计算:
m=1-2+3-4+…+9-10,并输出结果。
#include<stdio.h>
intfun(intn)
{intm=0,f=1,i;
for(______;i<-n;i++)/*第一空*/
{m+=i*f;
f=______;/*第二空*/
}
returnm;
}
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()
{
inta[3][3],sum;
inti,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;inti=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()charch,fname[20];FILE*fp;scanf("%s",fname);if((fp=fopen(fname,"w"))==NULL)/*如果fp为空则创建文件失败*/{printf("Cannotopenthefilerequired.");exit(0);}ch=getchar();while(ch='*'){fputc(ch,fp);putchar(ch);eh=getchar();}/*对文件输入内容*/fclose(fp);/*关闭文件*/}
详细解答: