计算机二级考试 程序设计基础试题及答案三

更新时间:2023-05-25 11:58:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

计算机二级考试 C语言

《程序设计基础》考试试卷三

1. 判断下面标识符中哪个是C语言中合法的用户定义标识符:

A. a-b B. #abd C. typedef D. _max

2. b 在内存中占 个字节,“B”在内存中占 个字节。

A. 1 B. 2 C. 3 D. 4

3. 下列表达式的值哪些不等于0?

A. 2>>1 B. ~a&a C. 1>5 D. a^a

4. 设有一分段函数: x=1 a<b且c=d

x=2 a>=b 则下列程序段哪个是正确的?

A. if(a<b) B. C. if (a>b) D. if (a>=b)

If(c==d) {if (c==d) if (c==d) x=2;

x=1; x=1; x=1; else

else x=2; else x=2;} else x=2; {if(c==d) x=1;}

5. 下列关于switch和break语句的讨论中,只有

A. break语句是switch 语句的一部分

B.在switch语句中可以根据需要使用或不使用break语句

C. switch语句中必须使用break语句

D.以上三种说法都不正确。

6. 若有两条语句:static char x[]=”abcde”;

static char y[]={ a , b , c , d , e };

则下列说法中正确的是:。

A. x数组和y数组长度相同 B. x数组长度大于y数组长度

C. x数组长度小于y数组长度 D. 以上三种说法均错误。

7. 返回值为void的函数,其含义是:A. 调用函数之后,被调用的函数没有返回值;

B. 调用函数之后,被调用的函数不返回

C. 调用函数之后,被调用的函数返回值为任意类型

D. 以上三种说法均不正确。

8. C语言中函数的隐含存储类别是,在一个C源程序文件中,若要定义一个只允许在本源文件中所有函数使用的全局变量,则变量需要使用的存储类别是 。

A. auto B. static C. register D. extern

9. 若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0)

s=a;

for(b=1;b<=c;b++) s=s+1;

则与上述程序段功能等价的赋值语句是

A. s=a+b; B. s=a+c; C. s=s+c; D. s=b+c;

10. 以下叙述中不正确的是

A. 在C中,函数中的自动变量可以赋初值,每调用一次,赋一次初值。

B. 在C中,在调用函数时,实在参数和对应形参在类型上只需赋值兼容。

C. 在C中,外部变量的隐含类别是自动存储类别。

D. 在C中,函数形参可以说明为register变量。

11. 对于scanf(“A=%d”,&a)语句,输入10的正确的输入形式是: A. a=10 B. A=10 C. 10 D. =10

计算机二级考试 C语言

12. C语言中,运算对象必须是整型的运算符是 。

A. % B. / C. %和/ D. >=

13. 为表示关系x≥y≥z,应使用C语言表达式

A. (x≥y)&&(y≥z) B. (x>=y) and(y>=z) C. (x>=y)&&(y>=z) D. (x>=y)‖(y>=z)

14. 若要求在if后一对圆括号中标式a不等于0的关系,则能正确表示这一关系的表达式是 。

A. a<>0 B. !a C. a=0 D. a

15. 以下说法正确的是。

A. C语言程序总是从第一个定义函数开始执行;

B. 在C语言程序中,要使用的函数必须在main()函数中定义;

C. C语言程序总是从main()函数开始执行;

D. C语言程序的main()函数必须在程序的开始部分。

16.下列描述中不正确的是

A. 字符型数组中可以存放字符串

B. 可以对字符型数组进行整体输入、输出

C. 可以对整型数组进行整体输入、输出

D. 不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值

17. C语言中用于结构化程序设计的三种基本结构是

A. 顺序结构、选择结构、循环结构

B. if、switch、break

C. for、while、do-while

D. if、for、continue

18.若已定义x和y为double类型,则表达式(x=1,y=x+3/2)的值是

A. 1 B. 2 C. 2.0 D. 2.5

19.设变量x为float型且已赋值,则以下语句中能将x中的数值保留到小数点后三位,并将第四位四舍五入的是

A. x=(int)(x*1000+0.5)/1000.0; B. x=(x*1000+0.5)/1000.0;

C. x=x*1000+0.5/1000.0; D. x=(x/1000+0.5)*1000.0;

20. 执行以下程序后,输出结果是A. –1 B. 1 C. 8 D. 0

main()

{ int y=11;

while(--y)

{ y--;}

printf(“%d\n”,y--); }

写出下列程序的执行结果(20分):

1.执行下列程序后,变量I的正确结果是 int I=10;

switch (i){

case 9: i+=1;

case 10: i+=1;

case 11: i+=1;

default: I+=1;}

2. 下面程序的输出结果是

计算机二级考试 C语言

main() { int a[4][4]={{3,2,-3,-4},{0,-12,-13,14},{-21,23,0,-24},{-31,12,-33,0}};

int i,j,s=0;

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

{ for(j=0;j<4;j++)

{ if(a[i][j]<0) continue;

if(a[i][j]= =0) break;

s+=a[i][j]; } }

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

3. 下面程序的输出结果是

aaa(char *s) { char *t=s;

while(*t) t++;

return(t-s);}

main() { char b[]={“Hello!”};

printf(“%d\n”,aaa(b));}

4. main()

{ int a[10]={1,2,3,4,5,6,7,8,9,0},*p;

p=a; printf(“%d”,*p); printf(“%d\n”,*(p+8));}输出结果是。

一. 程序改错:找出下列程序存在的错误,并进行改正。(20分)

1、以下程序的功能是:给r输入数据后计算半径为r的圆面积s。

#include <stdio.h>

void main(){

int r;

float s;

scanf("%d",r);

s=PI*r^2;

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

2、以下程序用于计算一个一维数组各元素平方根的和。

#include <stdio.h>

#include <math.h>

void main(){

int a[10],i;

float sum;

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

scanf(“%d”,&a[i]);

i=0;

while (!(i=9)){

sum+=sqrt(a[i]);

i++;}}

3. 下面的函数是用于求一个3*5的二位数组m的最大元素值。

Max_value(m[3][5])

{ int i,j,max;

max=m[0][0];

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

for (j=0;j<5;j++)

计算机二级考试 C语言

if(m[i][j]<max) max=m[i][j];

return (max);}

4. 下程序是从键盘上输入若干学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。

main()

{ float x,amax,amin;

scanf(“%f”,&x);

amax=x;

amin=x;

while(x<0)

{ if (x>amax) amax=x;

if(x<amin) amin=x;

scanf(“%f”,&x); };

printf(“amax=%f\n amin=%f\n”,amax,amin);}

二. 把以下的程序补完整(10分):

1. 下面的函数pow是求xy的值,请填空:

pow(int x,int y)

{ int j;

return j;}

2. 计算一个以5*5矩阵的主对角线和次对角线元素的和。

main()

{ static int a[5][5]={{1,2,3,4,5},{1,2,3,4,5},{1,2,3,4,5},{1,2,3,4,5}};

int pri_line=0;

int sec_line=0;

int i=0,j=0;

for (;i<5;i++)

for (;j<5;j++)

{ if pri_line+=a[i][j];

if sec_line+=a[i][j];}

printf(“The sum of pri_line is:%d\n”,pri_line);

printf(“The sum of seci_line is:%d\n”,sec_line);}

三. 编程题, 1. 设计一个C函数,对输入的a、b两个整型参数,返回其中的最小数。

利用main函数调用该函数,并输出结果。

2. 编程输入10个学生5门课程的成绩,实现:

①计算每个学生的平均分;

②计算每门课程的平均分;

xi1n2 xi (i 1)2

ni 1n③计算平均方差:,其中xi为第i个学生的平均分。

3. 编写一个C程序,求解n!。要求分别用非递归程序和递归程序实现。

n

计算机二级考试 C语言

《程序设计基础》试卷三参考答案与评分标准

一、1、D 2、A B 3、A 4、D 5、B 6、B 7、A 8、A D 9、B 10、D11、B 12、A 13、C 14、D 15、C 16、C 17、A 18、C 19、A 20、D 二、1、13 2、40 3、6 4、1 9

三、1、scanf(“%d”,r) 改为scanf(“%d”,&r) s=PI*r^2; 改为 s=PI*r*r;

1、 for (i=0;i<=10;i++)改为 for (i=0;i<10;i++) while (!(i=9))改为while (i<=9))

2、 if(m[i][j]<max) 改为 if(m[i][j]>max)

3、 while(x<0) 改为 while(x>=0)

四、1、j=1

y-- j=j*x 2、(i==j)(i==4-j )

计算机二级考试 C语言

五、1、#include <stdio.h>

int min(int a,int b){

return (a<b?a:b);

} void main(){

int a,b;

scanf(“%d,%d”,&a,&b);

printf(“%d”,min(a,b)); }

2. #include <stdio.h>

void main(){

float score[10][5], stuave[10],courseave[5],fangcha;

float temp1,temp2;

int i,j;

printf(“Please input the scores :”);

for (i=0;i<10;i++){

stuave[i]=0; temp1=0; temp2=0;

for (j=0;j<5;j++){

scanf(“%f”,&a[i][j]);

stuave[i]+=a[i][j];

}

stuave[i]/=5.0; temp1+=stuave[i]*stuave[i]; temp2+=stuave[i];

}

for (j=0;j<5;j++){

courseave[j]=0;

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

courseave[j]+=score[i][j];

courseave[j]/=10.0;}

fangcha=temp1/n-(temp2/n)*(temp2/n);

printf(“the average scores of each student are: ”); for (i=0;i<10;i++) printf(“%5.2f”,stuave[i]); printf(“the average scores of each course are: ”); for (i=0;i<5;i++) printf(“%5.2f”,courseave[i]); printf(“the fangcha is %5.2f”,fangcha);

}

3、非递归方法

#include <stdio.h>

void main(){

int n,i=0;

long fac=1;

scanf(“%d”,&n);

while (i<n){

i++; fac*=i;

}

printf(“%ld”,fac);

计算机二级考试 C语言

} 递归方法:

#include <stdio.h>

long fac(int n){

if (n= =0||n= =1) return 1; else return n*fac(n-1); }

void main(){

int n;

scanf(“%d”,&n);

printf(“%ld”,fac(n)); }

本文来源:https://www.bwwdw.com/article/hut4.html

Top