高级语言程序设计自考题模拟30.docx

上传人:b****4 文档编号:4683519 上传时间:2022-12-07 格式:DOCX 页数:9 大小:19.56KB
下载 相关 举报
高级语言程序设计自考题模拟30.docx_第1页
第1页 / 共9页
高级语言程序设计自考题模拟30.docx_第2页
第2页 / 共9页
高级语言程序设计自考题模拟30.docx_第3页
第3页 / 共9页
高级语言程序设计自考题模拟30.docx_第4页
第4页 / 共9页
高级语言程序设计自考题模拟30.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

高级语言程序设计自考题模拟30.docx

《高级语言程序设计自考题模拟30.docx》由会员分享,可在线阅读,更多相关《高级语言程序设计自考题模拟30.docx(9页珍藏版)》请在冰豆网上搜索。

高级语言程序设计自考题模拟30.docx

高级语言程序设计自考题模拟30

高级语言程序设计自考题模拟30

一、单项选择题

(在每小题列出的四个备选项中只有一个是符合题目要求的)

1.若有定义:

floata=27.3;inti=0,k=3;则不符合C语言规定的赋值语句是______

A.i=!

a

B.i=(a+k)<=(i+k)

 

C.a=a++,-k++

D.i=a%11

答案:

D

[考点]赋值语句的书写规则

[解答]取模运算符“%”,二元运算符,具有左结合性,参与运算的必须为整量,D选项中a的类型是float,所以D不符合规定。

2.以下说法中不正确的是______

A.do-while和for循环均是先执行循环体语句,后判断表达式

B.while循环是先判断表达式,后执行循环体语句

C.使用while循环时,循环变量初始化的操作应在循环语句之前完成

D.for,while和for-while循环中的循环体均可由空语句构成

答案:

A

[考点]for,while,do-while循环的特点

[解答]for循环式先判断表达式,后执行循环语句。

3.若有定义语句:

inta,b,c,*p=&c;之后,接着执行以下选项中的语句,则正确的是______

A.scanf("%d",a,b);

B.scanf("%d",&p);

C.scanf("%d",p);

D.scanf("%d%d%d",a,b,c);

答案:

C

[考点]scanf函数

[解答]scanf函数中的输入项必须是指针,只有C符合要求。

4.设有定义:

intx=4;,以下表达式中,值不为20的是______

A.x*=x+1

B.x++,4*x

C.x*=(x+1)

D.2*x,x+=12

答案:

D

[考点]逗号运算符的运算方式

[解答]逗号运算符的作用是将若干表达式连接起来,它的优先级别在所有运算符中是最低的,结合方向是“自左向右”。

A和C项的结果是一样的,可展开为:

x=x*(x+1)=20;B项中先执行x++,逗号执行前x的值变为5,逗号后的值就是整个表达式的值为20;D选项逗号前并未给x赋值,所以表达式的值就是x+=12的值,即为16。

5.阅读下面程序段,执行后的结果为______

#include<stdio.h>

intfun(int,int);

main()

{intm=4,n=2,k;

k=fun(m,n);

printf("%d\n",k);}

fun(intm,intn)

{return(m*m*m-n*n*n);}

A.64

B.56

C.8

D.0

答案:

B

[考点]函数之间的数据传递

[解答]如果没有指明函数数值类型,则默认函数返回值的类型为int类型。

6.设有以下语句:

structex

{intx;doubley;char*z}apple;

则下面叙述中不正确的是______

A.struct是结构体类型的关键字

B.apple是结构体类型名

C.x,y,z都是结构体成员名

D.structex是结构体类型名

答案:

B

[考点]结构体的组成

[解答]structex是结构体类型名,apple是结构体变量名。

7.设staticintx;执行表达式(x+1>=2)&&(x=-1)&&(x+=1)后,x的值为______

A.0

B.1

C.-1

D.2

答案:

A

[考点]存储类型及逻辑运算

[解答]static型变量未赋值时,系统赋值为0;&&左端第一个表达式的值为假时,结果肯定为假,此时第二个表达式将不再运行。

8.若x是int型变量,且有下面的程序段:

for(x=4;x<7;x++)printf((x%2)?

("**%d):

("##%d\n"),k);

输出的结果是______

A.**4

**5

##6

B.##4

##5

**6

C.##4

**5##6

D.**4##5

**6

答案:

C

[考点]条件运算符

[解答]这种条件表达式的一般形式为:

表达式1?

表达式2:

表达式3,条件运算符的执行顺序是先求解表达式1,若非零则求解表达式2,否则求解表达式3,所求表达式即为整个条件表达式的值。

9.定义如下变量和数组:

intk:

intx[3][3]={1,2,3,4,5,6,7,8,9};

则下面语句的输出结果是______

for(k=0;k<3;k++)

printf("%d",x[2-k][k]);

A.951

B.963

C.753

D.741

答案:

C

[考点]二维数组元素的引用方法

[解答]题中通过二维数组的行列下标来定位元素的位置,从而实现元素的引用。

10.以下程序运行后,a的值是______

main()

{inta,k=4,m=2,*p1=&k,*p2=&m;

a=p1==&m;

printf("%d\n",a);

}

A.4

B.0

C.1

D.运行时出错,a无定值

答案:

B

[考点]指针及逻辑运算

[解答]题中,k与m的地址是不一样的,a=p1==&m,先运行关系运算符==,p1不等于&m,所以为假,为0,所以a=0。

11.C语言规定,调用一个函数,实参与形参都是简单变量时,它们之间的传递方式是______

A.地址传递

B.单向值传递

C.用户指定方式

D.双向值传递

答案:

B

[考点]调用函数时数据的传递方式

[解答]在C语言中,函数间参数的传递方式是实参向形参的单向值传递,而单向值传递是指只能从主调函数向被调函数传递数据。

12.执行以下程序段后,s的值为______

inta[]={6,3,7,2,1,5,4,10};

ints=0,k;

for(k=0;k<8;k+=2)

s+=*(a+k);

A.18

B.28

C.14

D.无定值

答案:

A

[考点]循环结构和指针

[解答]*(a+k)指向的是第k+1个元素,因为数组下标是从O开始的,所有s的值为6,7,1,4四个值相加所得。

13.设有数组定义:

chararray[]="china";,则数组array所占用的空间和长度为______

A.4个字节,5

B.5个字节,5

C.6个字节,5

D.7个字节,6

答案:

C

[考点]字符数组的空间及字符长度

[解答]字符串“china”存储在数组中时,其后的'\0'也是占内存的,所以是6个字节,但其长度不包括'\0',所以其长度为5。

14.如果打开文件时,选用的文件操作方式是"wb+",则下列说法中正确的是______

A.要打开的文件必须存在

B.打开文件后只能读数据

C.打开文件后只能写数据

D.文件打开后删除原内容再写

答案:

D

[考点]文件的打开与关闭

[解答]“wb+”对二进制文件进行读或写操作。

如果该文件不存在,系统自动建立新文件;如果该文件存在,其内容被清除。

15.包含用户类型符“FILE”的定义的头文件是______

A.string.h

B.stdlib.h

C.stdio.h

D.file.h

答案:

C

[考点]文件指针

[解答]文件指针是指向与文件参数有关的结构体类型的指针变量,系统在头文件“stdio.h”中已经定义。

二、填空题

1.若a,b,c均是整型变量,则计算表达式a=(b=3)+(c=7)后,a的值为______,c的值为______。

答案:

10,7

[考点]算术表达式

[解答]括号的优先级是最高的,c的值为7,a为10。

2.表达式8.0*(1/2)的值为______。

答案:

0.0

[考点]算术表达式

[解答]“就长不就短”原则,所以最后的数据类型为实型。

3.设x,y,z均为整型变量,请写出描述“x或y中至少有一个大于z”的表达式______。

答案:

(x>z)||(y>z)

[考点]逻辑表达式

[解答]至少有一个,使用或运算符。

4.在C语言中,二维数组元素在内存中的存放顺序是______。

答案:

顺序

[考点]二维数组的初始化

[解答]二维数组元素在内存中的存放中是顺序存放,即先行后列。

5.以下程序的输出结果是______。

#include<stdio.h>

main()

{chars[]="abcdefg";

s[4]='\0';

printf("%s\n",s);}

答案:

abcd

[考点]字符串的输出

[解答]%s格式输出,遇到'\0',结束。

6.在一个源文件中定义的外部变量的作用域为______。

答案:

从定义该变量的位置开始至本文件结束

[考点]外部变量的作用域

[解答]外部变量的作用域为定义点到程序结束。

7.设chars[20]="My";,则执行strcat(s,"Boy!

")后s的内容是______。

答案:

MyBoy!

[考点]strcat函数

[解答]srcat函数的功能是将字符串连接到字符数组的最后一位有效字符,并组成新的字符串。

8.设inta[2][5]={{8},{5}};则数组元素______的值为5。

答案:

a[1][0]

[考点]二维数组的初始化

[解答]8和5分别赋给了第一行和第二行的第一个元素。

9.fopen函数打开文件成功,返回值是与打开文件相关的______。

答案:

文件指针

[考点]fopen函数

[解答]能正确打开指定的文件,则返回一个指向文件的文件指针。

10.a盘根目录下的一级子目录tc中的text.exe文件的磁盘文件名是______。

答案:

a:

\tc\text.exe

[考点]磁盘文件名

[解答]磁盘文件名的一般组成是盘符:

路径\文件主名.扩展名。

路径是由目录序列组成的,目录间的分隔符号为“\”。

三、程序分析题

1.main()

{intn,k=0;

for(n=0;n<20;n++)

{k=0;

while(k<=n)

{if(n==5*k)

printf("%d,",n);

k++;

}

}

}

答案:

0,5,10,15,

2.#include<stdio.h>

intt(intx,inty,intp,intq)

{p=x*x+y*y;

q=x*x-y*y;

}

main()

{inta=4,b=3,c=5,d=6;

t(a,b,c,d);

printf("%d%d\n",c,d);

}

答案:

56(注意:

传递实参的值,但不改变实参的值)

3.#include<stdio.h>

intb=2;

intfunc(int*a)

{*a+=b;return(*a);}

main()

{inta=3,res=1;

res+=func(&a);

printf("%d%d\n",a,res);}

答案:

56

4.#include<stdio.h>

main()

{structAPPLE{

struct{intx;

inty;

}in;

inta;intb;

}e;

e.a=2;e.b=3;

e.in.x=e.a*e.b;

e.in.y=e.a+e.b;

printf("%d,%d",e.in.x,e.in.y);

}

答案:

6,5

四、程序填充题

1.以下程序从终端读入数据到数组中,统计其中正数的个数,并计算它们之和。

#include<stdio.h>

main()

{inti,a[20],sum,count;

sum=count=0;

for(______)scanf("%d",&a[i]);/*第一空*/

for(i=0;i<20;i++)

 {if(______)/*第二空*/

{count++;

______;}/*第三空*/

}

printf("count=%d,sum=%d\n",count,sum);

}

答案:

i=0;i<20;i++

a[i]>0

sum+=a[i] 

2.下面程序是将字符串p中的所有字符复制到字符串b中,要求每复制三个字符后插入一个空格。

#include<stdio.h>

voidcp(char*p,char*b)

{inti,k=0;

while(*p)

{i=0;

while(______)/*第一空*/

{b[k]=*p;

k++;p++;i++;

}

if(*p)

{______;/*第二空*/

}

}

______;/*第三空*/

}

main()

{chara[20],b[20];

gets(a);

cp(a,b);

puts(b);

printf("\n");

}

答案:

i<3&&*p

b[k++]=''

b[k]='\0'

3.以下程序由终端输入一个文件名,然后把从终端键盘输入的字符依次存放到该文件中,用“#”作为结束输入的标志。

#include<stdio.h>

#include<stdlib.h>

main()

{FILE*fp;

charch,fname[10];

printf("inputthenameoffile\n");

gets(fname);

if((fp=______)==NULL){printf("cannotopen\n");exit(0);}/*第一空*/

else{printf("enterdata\n");

while(______)fputc(______,fp);}/*第二、三空*/

fclose(fp);

}

答案:

fopen(fname,"w")

(ch=getchar())!

='#'

ch

五、程序设计题

1.编一个程序,其功能是对名为“abc.txt”的磁盘文件中“@”之前的所有字符进行处理,处理方法是每个字节的内容减10。

答案:

#include<stdio.h>

#include<stdlib.h>

main()

{

FILE*fp;

charc;

if((rp=fipen("abc.txt","r+"))==NULL)/*测试文件是否正确被打开*/

{printf("Cannotopenfile!

\n");exit(0);}

while(!

feof(fp))

if((c=fgetc(fp))!

='@'/*如果不是@字符则进行加密运算*/

{c=c-10;/*加密运算*/

fseek(fp,-11,1);/*前移一个字符。

因在fgetc(fp)时文件内部指针会自动后移一个字符,指向应被加密字符的下一个字符*/

fputc(c,fp);/*将获得加密的字符填入该位置,且文件内部指针会自动后移一个字符*/

fseek(fp,01,1);/*避免指针漂移,定位文件内部指针在当前位置不移动,并将其传递给函数feof(fp)*/

elsebreak;

rclose(fp);

return(0);

2.用指针方法实现:

输入8个整数,将最大数和最后一个数交换,最小数和第一个数交换,然后整体倒序输出。

答案:

#include<stdio,h>

#defineN8

main()

{intz[N],*p=a,i,d,d1=0,x,x1=0;

for(i=0;i<N;i++)

{scanf("%d",p);

if(i==0){d=*p;x=*p;}

if(d<*p){d=*p;d1=i;}

elseif(x>*p){x=*p;x1=i;}

}

p--;

a[d1]=*p;*p=d;

a[x1]=*(p-7);*(p-7)=x;

for(i=N-1;i>=0;i--,p--)

printf("%d",*p);

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 司法考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1