高级语言程序设计文档格式.docx
- 文档编号:22149550
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:16
- 大小:23.37KB
高级语言程序设计文档格式.docx
《高级语言程序设计文档格式.docx》由会员分享,可在线阅读,更多相关《高级语言程序设计文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
A)a[p-a]B)*(&
a[i])C)p[i]D)a[10]
A.a[p-a]表示a[0],正确。
B.*(&
a[i])表示a[i],正确。
C.p[i]表示&
a[i],正确。
D.a数组最大下标为9,错误。
5.以下程序的输出结果是
intmain()
{intx=10,y=10,I;
for(i=0;
x>
8;
y=++i)
printf("
%d,%d"
,x--,y);
}
A)10192B)9876C)10990D)101091
第一遍循环:
x=10,y=10,x>
8,输出1010后,x=9,y=1.
第二遍循环:
x=9>
8,输出91后x=8,y=2。
第三遍循环:
x=8,不满足条件,循环结束,无输出。
6.下面程序的输出是
voidprtv(int*x)
printf("
%d\n"
++*x);
}
intmain()
{inta=25;
prtv(&
a);
return0;
A)23B)24
C)25D)26
主函数传递给prtv函数的x值为25,在printf中,先对x自增,再输出x值为26。
7.下面能正确进行字符串赋值操作的语句是
A)chars[5]={"
ABCDE"
};
B)chars[5]={'
A'
、'
B'
C'
D'
E'
C)char*s;
s="
ABCDEF"
;
D)char*s;
scanf("
%s"
,s);
A.{}中的’“’也作为字符串中的一个字符,故右侧字符串长度为7>
5,越界,错误。
B.右侧字符的分割符应使用‘,’,而不是‘、’,错误。
C.正确。
D.s是一个字符串常量,应在定义同时初始化且不能通过scanf函数或任何其他方式修改其值,错误。
8.设x,y,z,t均为int型变量,则执行以下语句后,t的值为
x=y=z=1;
t=++x||++y&
&
++z;
A)不定值B)2C)1D)0
||和&
运算符的优先级高于赋值运算符=,所以t为一个逻辑值,其只能为0或1,又表达式++x||++y&
++z为真,故t=1。
9.设p1和p2是指向同一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是
A)k=*p1+*p2;
B)p2=k;
C)p1=p2;
D)k=*p1*(*p2);
B
B中不能将一个整形变量的值赋给一个指针变量,应改为p=&
k或者*p=k。
10.请读程序:
#include<
#defineSUB(X,Y)(X)*Y
{
inta=3,b=4;
%d"
SUB(a++,b++));
上面程序的输出结果是
A)12B)15
C)16D)20
A
printf函数中输出的内容等价于(a++)*b++,由于自增运算符优先级高于*,所以又等价于(a++)*(b++),应先输出a*b,后进行自增运算。
11.sizeof(float)的结果是:
A)4
B)6
C)8
D)不确定
sizeof操作符用来测定数据类型位长,但在不同的系统中,同一数据类型的位长并不一定相同,故不确定,选D。
12.若执行下面的程序时从键盘上输入3和4,则输出是
inta,b,s;
scanf("
%d%d"
&
a,&
b);
s=a;
if(a<
b)s=b;
s=s*s;
s);
A)14B)16C)18D)20
scanf输入a=3,b=4,s=a=3,a<
b,if条件成立,s=b=4,s=s*s=16,输出s=16,选B。
13.以下程序的输出结果是
#include<
{
NULL);
A)不确定的(因变量无定义)B)0C)-1D)1
NULL实际上为系统定义的一个符号常量,它的值就为0,所以输出0,选B。
14.读程序:
f(char*s)
char*p=s;
while(*p!
='
\0'
)p++;
return(p-s);
f("
));
return0;
A)3B)6C)8D)0
’\0’为字符串结束标志,t函数的作用实际为统计参数字符串的长度并返回给主函数,所以输出结果为字符串长度6,选B。
15.?
在下列叙述中,正确的一条是(?
?
)。
A)?
以下语句是正确的:
charc[]=”ab”;
B)?
一维数组的定义可采用下列格式:
inta(10);
C)?
下面的语句定义了一个二维数组:
floata[3,4];
D)?
以下两个语句中的a[3][4]的含义相同:
inta[3][4];
a[3][4]=1;
C语言数组可以在定义时用字符串赋初值,故答案为A。
其他项均不符合C语言关于数组的定义格式。
16.若有说明:
long*p,a;
则不能通过scanf语句正确给输入项读入数据的程序段是
A)*p=&
a;
%ld"
,p);
B)p=(long*)malloc(8);
C)scanf("
,p=&
a);
D)scanf("
,&
A中*p=&
赋值语句错误,应改为p=&
,才可以将p指针指向变量a,选A。
17.若已定义:
inta[9],*p=a;
并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是
A)p+1B)a+1C)a++D)++p
a为常量指针,不能修改其值,故不能使用自增运算符,选C。
18.下面程序的输出是
enumteam{my,your=4,his,her=his+10};
%d%d%d%d\n"
my,your,his,her);
A)0123B)04010C)04515D)14515
枚举元素my没有赋初值系统自动赋值为0,同理,枚举元素his没有赋初值,根据枚举元素赋值规则,系统将his的值赋为它前面的your的值+1,选C。
19.以下程序输出结果是
intmain()
intm=5;
if(m++>
5)printf("
,m);
elseprintf("
,m--);
return0;
A)7B)6C)5D)4
主函数第二行中if条件先判断m>
5不成立,然后有m=m++=6,再执行else语句,其中,先输出m=6,再使m自减为5,选B。
20.以下程序运行后,输出结果是intd=1;
fun(intp)
intd=5;
d+=p++;
,d);
inta=3;
fun(a);
d+=a++;
A)84B)99C)95D)44
主函数调用fun的同时,将实参a的值3传递给形参p,fun函数中,p=3,d+=p++;
语句可以拆分为d=d+p;
p++;
所以d=8,输出8。
子函数调用结束回到主函数中,fun函数中对形参p的值的修改不能改变实参a的值仍为3,d=d+a=4,输出4,选A。
二、填空题(本大题共7小题,每题2分,共14分。
1.在C语言中,一个函数的函数体一般包括_______和_______。
声明部分执行部分
函数结构构成规则。
在C语言中,一个函数的函数体一般包括声明部分和执行部分。
2.在C语言中,不同级运算符之间运算次序存在_________的区别,同级运算符之间运算次序存在________的规则。
先后结合性
不同级的运算符由优先级规定运算次序;
同级的运算符的运算顺序由结合性决定。
3.欲将字符串S1复制到字符串S2中,其语句是____________。
strcpy(s2,s1)
本题考查库函数strcpy的调用。
4.结构化程序设计中的三种基本结构是_________、__________、___________。
顺序选择循环
5.表达式x=x+1表示成增量表达式为___________。
x++或++x
自增表达式单独使用时,++x和x++等价。
6.定义inta[]={1,2,3,4,5,6},*p=a;
表达式(*++p)++的值是____________。
3
++p表示a[1]的地址,*++p表示a[1]的值,(*++p)++则表示a[1]++。
7.C语言中,二维数组在内存中的存放方式为按____优先存放
行
C语言规则是二维数组以行优先方式存放在内存空间。
三、判断题(本大题共7小题,每题2分,共14分。
1.虽然goto语句能提高程序运行效率,但为防止程序结构混乱应该禁用()
错
goto语句应该是慎用而非禁用。
2.条件表达式可以取代if语句,或者用if语句取代条件表达式()
if语句可由花括号包含多条执行语句,这是条件表达式所不能实现的,因此二者不能相互替换
3.在C程序中对用到的所有数据都必须指定其数据类型()
声明变量必须指定数据类型,用#define声明常量不用指定数据类型,只需指定常量名。
4.可以对字符型数组进行整体输入、输出()
字符型数组无法整体进行输入,只能逐个输入输出。
5.函数中的静态变量在函数每次调用时,都会重新设置初值()
函数中的静态变量只在函数第一次被调用时设置初值,之后会自动保存为上次调用结束后的值。
6.实参和与其对应的形参共占用一个存储单元()
实参形参各分单元。
7.一个实型变量的值肯定是精确的()
实型变量的精度是有限的,并不精确,而整型变量的值则是精确的。
四、程序分析题(用列表法列出关键变量在运行过程中的值)
(本题共3道小题,每题4分,共12分。
1.下面程序的运行结果是________。
#include<
{inti=5;
charc[6]="
abcd"
;
do
{
c[i]=c[i―1];
}while(――i>
0);
puts(c);
aabcd
i=5,c[5]=c[4]=’\0’;
i=4,c[4]=c[3]=’d’;
i=3,c[3]=c[2]=’c’;
i=2,c[2]=c[1]=’b’;
i=1,c[1]=c[0]=’a’;
i=0,不满足条件,循环结束,输出”aabcd”。
2.以下程序的执行结果是____________。
#include<>
inta[3][3]={1,2,3,4,5,6,7,8,9},i,s=0;
for(i=0;
i<=2;
i++)
s=s+a[i][i];
printf("s=%d\n",s);
s=15
将for循环拆分来看:
i=0时,s=0+a[0][0]=0+1=1
i=1时,s=1+a[1][1]=1+5=6
i=2时,s=5+a[2][2]=6+9=15
i=3时,循环结束。
输出s=15.
3.给出下列函数程序完成的功能
voidprnt(intn,intaa[])
inti;
for(i=1;
=n;
%6d"
aa[i]);
if(!
(i%5))printf("
\n"
);
若变量n中的值为24,则prnt函数共输出行,最后一行有个数
54
print函数的功能是依次输出形参数组中的数组元素,并且每输出5个后换行。
五、编程题(本大题共2小题,每题10分,共20分)
1.从键盘输入一个一维数组,将这个数组逆序输出。
答案
#defineN5
{inta[N]={9,6,5,4,1},i,temp;
printf("
\noriginalarray:
for(i=0;
i<
N;
i++)
%4d"
a[i]);
N/2;
{temp=a[i];
a[i]=a[N-i-1];
a[N-i-1]=temp;
}
\nsortedarray:
程序主体包括三个部分:
输入数组元素;
实现数组元素的逆序;
输出数组元素
输入数组元素:
通过一个for循环,利用scanf函数依次输入数组元素。
实现数组元素的逆序:
通过一个for循环,将数组前一半元素和后一半元素逐个交换。
a[i]=a[N-i-1]。
输出数组元素:
通过for循环,利用printf函数逐个输出数组元素。
2.编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。
例如,假定输入的字符串为:
asdasasdfgasdaszx67asdmklo,子字符串为:
as,则应输出6。
#include"
"
intfun(char*str,char*substr)
{inti,n=0,s=strlen(str);
s;
if((str[i]==substr[0])&
(str[i+1]==substr[1]))
n++;
returnn;
charstr[81],substr[3];
intn;
clrscr();
enter1:
gets(str);
enter2:
gets(substr);
puts(str);
puts(substr);
n=fun(str,substr);
n=%d\n"
n);
我们可以将程序拆分成几个部分:
首先利用gets函数写入两个字符串,然后通过子函数实现统计功能,再将统计值输出。
在子函数中,通过一个for循环遍历主串元素,并依次比较每一个主串元素以及它后一个元素是否均与字串两个元素对应相等,如果是,则计数器加1,最终遍历结束后将计数器的值返回给主函数。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高级 语言程序设计