高级语言程序设计自考模拟5.docx
《高级语言程序设计自考模拟5.docx》由会员分享,可在线阅读,更多相关《高级语言程序设计自考模拟5.docx(16页珍藏版)》请在冰豆网上搜索。
高级语言程序设计自考模拟5
[模拟]高级语言程序设计自考模拟5
单项选择题在每小题列出的四个备选项中只有一个是符合题目要求的。
第1题:
汇编程序的功能是()
A.将汇编语言程序转换成目标程序
B.将汇编语言程序转换成高级语言程序
C.将高级语言程序转换为目标程序
D.将汇高级语言程序转换为编语言程序
参考答案:
A
答案解析:
第2题:
设intx=1;a=9,b=6,c=9,d=8;执行语句:
if(a>b)if(c>b)if(b>d)x=2;elsex=6; 后x的值是()
A.1
B.2
C.6
D.不确定
参考答案:
C
答案解析:
当"a>b"、"c>b"、"b>d"都成立时x=2,只要有一个不成立就有x=6。
第3题:
设inta[10],*p=a; 则对数组的正确引用是()
A.a[p]
B.p[a]
C.*(p+2)
D.p+2
参考答案:
C
答案解析:
第4题:
若内部变量在离开了定义所在的函数或复合语句后,仍在生存期内。
则该变量是()
A.auto变量
B.register变量
C.局部变量
D.static变量
参考答案:
D
答案解析:
第5题:
下列运算符,优先级最低的是()
A.&&
B.!
C.->
D.+=
参考答案:
D
答案解析:
第6题:
对于文件打开方式"rb+"描述正确的是()
A.可读写文本文件
B.只读文本文件
C.可读写二进制文件
D.只读二进制文件
参考答案:
C
答案解析:
第7题:
设inta=1,b=2,c=4;经过表达式(c=a!
=b)&&(a==b)&&(c=b)运算后,a、b和c的值分别是()
A.1,2,0
B.1,2,1
C.1,2,2C.1,2,3
参考答案:
B
答案解析:
因a==b是不成立的,c=b不被运算,C所获得的值足表达式"a!
=b"的逻辑值。
第8题:
若x=100;,则表达式x++>100?
x+20:
x+10的值是()
A.110
B.120
C.130
D.101
参考答案:
D
答案解析:
第9题:
若定义了intm,n=0,*p1=&m;,则与m=n等价的语句是()
A.m=*p1
B.*p1=&*n
C.*p1=*&n
D.*&p1=&*n
参考答案:
C
答案解析:
第10题:
若有宏定义:
#defineMOD(x,y)x%y 则执行下面语句后的输出结果是inta=13,b=96;printf("%d\n",MOD(b,a));()
A.1
B.2
C.5
D.6
参考答案:
C
答案解析:
第11题:
设有如下程序段charstr[]="Hello!
";char*ptr;ptr=str; 执行完以上程序段后*(ptr+6)的值为()
A.'o'
B.'\0'
C.'\o
D.'o'
参考答案:
B
答案解析:
第12题:
以下程序输出的结果是()main(){intI,j,m=0,n=0;for(I=0;I<2;I++)for(j=0;j<2;j++)if(j>=I)m=1;n++;printf("%d\n",n);}
A.4
B.2
C.1
D.0
参考答案:
C
答案解析:
main(){intI,j.m=0.n=0;for(I=0;I<2;I++)for(j=0;j<2;j++)if(j>=i)m=1;n++;/*本行语句虽然包含"n++",但不包括在任何循环体内*/printf("%d\n",n):
}
第13题:
执行下面程序段后,变量k的值是()
A.10
B.30
C.3
D.不确定
参考答案:
D
答案解析:
数组元素s[1]没有初值,故其计算结果小确定。
第14题:
若有以下语句:
char*language[]={"fortran","basic","C","java"};char*q;q=language+3; 则语句printf("%c\n",*q;的输出是()
A.q的值
B.字符串"C"
C.&language[3]的值
D.程序错误,无法得到输出
参考答案:
D
答案解析:
指字符删变量的指针不能得到指针数组的首地址,出现编译错误。
第15题:
以下程序的执行结果是()#include<stdio.h>main(){printf("%d\n",NULL);}
A.-1
B.0
C.1
D.2
参考答案:
B
答案解析:
NULL的ASCⅡ值是00000000,语句"printf("%d\n",NULL);"要求NULL以整型数据输出,所以输出是0。
填空题
第16题:
若有定义:
doublew[6];,则数组元素下标的上限为______。
参考答案:
5
详细解答:
第17题:
若有定义语句:
inta[]={10,2,20,3,30,4,40},p;p=a;,则执行"p2+=;之后p的值是______。
参考答案:
a
详细解答:
"*"优先级高于"+=",语句"*p2+=;"相当于"(*p)+=2;",对指针变量p没有进行任何算术运算、其值不变。
第18题:
若定义了inta[9],*p;,将数组元素a[8]的地址赋给指针变量p的赋语句是______。
参考答案:
p=&a[8];
详细解答:
第19题:
C语言的保留字主要用于语句的构成,所有保留字均由______组成。
参考答案:
小写字母
详细解答:
第20题:
语句";"是无任何操作的语句,被称为______。
参考答案:
空语句
详细解答:
第21题:
______是双目运算符,其运算对象是表达式,其值是右边表达式的值。
参考答案:
逗号运算符
详细解答:
第22题:
若要使用系统函数getchar(),必须在程序的开头使用预编译命令______。
参考答案:
#includestdio.h
详细解答:
第23题:
若要以八进制输出整型变量,则要在输出语句中加上格式输出符______。
参考答案:
%0
详细解答:
第24题:
指针变量的使用主要有两种,一是______;二是引用所指向的变量。
参考答案:
赋值
详细解答:
第25题:
写出n小于m的奇数的表达式______。
参考答案:
n%2&&n<m
详细解答:
n小于m的奇数.即是n<m又要是奇数。
则n<m和n不能做2整除都要满足,转化为c语言表达式即是n%2&&n<m。
程序分析题
第26题:
以下程序运行时输入:
12<回车>,执行后输出结果
#include<stdio.h>
main()
{charch1,ch2;intn1,n2;
ch1=getchar();ch2=getchar();
n1=ch1-'0';n2=n1*10+(ch2-'0');
printf("%d\n",n2);
}
__________
参考答案:
12
详细解答:
#include<stdio.h>main(){charch1,ch2;intn1,n2;ch1=getchar();ch2=getchar();/*变量ch1和ch2分别获得初值1和2*/nI=ch1-'0';n2=n1*10+(ch2-'0');/*变量ch1和ch2都以其ASCⅡ值参与运算*/printf("%d\n",n2);}
第27题:
#include<stdio.h>
voidf(inty,int*x)
{y=y+*X;*x=*x+y;}
main()
{intx=2,y=4;
f(y,&x);
printf("%d%d\n",x,y);
}
__________
参考答案:
84
详细解答:
#include<stdio.h>voidf(inty,int*x)/*参数为指针变最,采用地址传递方式*/{y=y+*x;*x=*x+y;}main(){intx=2,y=4:
f(y,&x);printf("%d%d\n",x,y);}
第28题:
#include<stdio.h>
char*ss(char*s)
{returns+strlen(s)/2;)
main()
{char*p,*str="abcdefgh";
p=ss(str);printf("%s\n",p);
}
__________
参考答案:
efgh
详细解答:
#include<stdio.h>char*ss(char*s)/*函数为指针型函数,返回值为字符串s的中问一个字符的地址*/{returns+strlen(s)/2;}main(){char*p,*str="abcdefgh";p=ss(str):
printf("%s\n",p);/*打印输出以地址p为起始地址的字符串*/}
第29题:
#include<stdio.h>
intf(inta[],intn)
{if(n>1)returna[0]}+f(&a[1],n-1);
elsereturna[0];
}
main()
{intaa[3]={1,2,3},s;
s=f(&aa[0],3);printf("%d\n",s);
}
__________
参考答案:
6
详细解答:
#include<stdio.h>intf(inta[],intn){if(n>1)returna[0]+f(&a[1],n-1);/*这是一个递归调用过程*/elsereturna[0];}main(){intaa[3]={1,2,3},s;s=f(&aa[0],3);printf("%d\n",s);}
程序填充题
第30题:
以下程序从终端读入数据到数组中,统计其中正数的个数,并计算它们之和。
#include<stdio.h>
main()
{inti,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\n",count,sum);
}
参考答案:
&a[0]/*第一空。
对数纰进行初始化*/a[i]>0/*第二空。
判定数组元a[i]是否大于0*/sum+=a[i]/*第三空。
对大于0的数组元素求和1*/
详细解答:
第31题:
SumColumMin()的功能是:
求出M行N列二维数组每列元素中的最小值,并计算它们的和值。
和值通过形参传回主函数输出。
#include<stdio.h>
#defineM2
#defineN4
voidSumColumMin(______)/*第一空*/
{inti,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()
{intx[M][N]={3,2,5,1,4,1,8,3},s;
SumColumMin(x,&s);
printf("%d\n",s);
}
参考答案:
inta[M][N],int*sum/*第一空。
因和值通过形象传回主函数输出,故定义形参变量为指针变量*/a[k][i]>a[j][i]/*第二空。
比较每列各个元素的大小以获提最小值*/*sum=s/*第三空。
令形参变量sum所指向的内存单元获得和值以s传递回主函数*/
详细解答:
第32题:
求f(x[0,10])的累加和,其中f(x)=2x+1。
#include<stdio.h>
intF(intx)
{return______;)/*第一空*/
intSumFun(intn)
{
intx,s=0:
for(x=0;x<n;x++)______;/*第二空*/
returns;
}
main()
{
printf("Thesum=%d\n",______);/*第三空*/
}
参考答案:
x*x+1/*笫一空。
此为函数式"f(x)=2x+1的C语言表达式*/s+-=F(x)/*第二空。
求函数式"f(x)"的累加*/SumFum(10)/*第三空。
调用函数"StunFun()求累加值"*/
详细解答:
程序设计题
第33题:
输入一个整数n(n<10),如果n=3,则输出
1
222
33333
222
1
以此类推。
__________
参考答案:
#include<stdio>#include<stdlib.h>main(){intn,i,s=1,k;scanf("%d",&n);if(n>10)exit(0);/*判定输入变量值是否超过10,如超过则自动终止程序运行*/k=2*n-1;/*确定输出最长行输出的数字个数*/while(k!
=0)/*确定输出模式,并循环输出*/{for(i=0;i<n-1;i++)primf("");for(i=0;i<2*s-1;i++)printf("%d",s);printf("\n");if(s<k){--n;++s;--k;}/*当s<k时输出为增量形式输出*/else{++n;--s;--k;}/*当s>k时输出为减量形式输出*/}}
详细解答:
第34题:
把文本文件x1.dat复制到文本文件x2.dat中,要求仅复制x1.dat中的非空格字符。
__________
参考答案:
#include<stdio.h>voidmain(){charch;FILE*fp1,*fp2;fp1=fopen("x1.dat","r");/*以只读方式打开文件x1.dat*/fp2=fopen("x2.dat","w");/*以可写方式拱形文件x2.dat*/while(!
feof(fp1)){ch=fgetc(fp1);/*从文件x1.dat读取字符*/if(ch!
='')/*判定所读取字符是否为"空格"*/fputc(ch,fp2);}fclose(fp1);fclose(fp2);/*关闭文件*/}
详细解答: