2024年3月12日发(作者:)

C语言试题及答案解析(

二)

班级 姓名 学号____________

题号

得分

一、 选择题(20分)

1. 1966年,Bohra和Jacopini提出的三种基本程序设计结构是:________

A. if、while和for; B. switch、do-while和for;

C. while、do-while和for;D.顺序结构、分支结构和循环结构。

总得分

评卷人

审核人

2. 算法的特征不包括:______。

A. 有穷性 B.可行性 C.确定性 D.有1个或者多个输入。

3. C语言源程序的基本组成单位是______。

A. 函数 B. 语句 C. 声明和语句 D. 文件

4. 下列标识符中,只有______是合法的。

A. if B. 3ab C. Int D. A-4

5. 下列常量中,只有______是合法的。

A. 3e-0.3 B. ‘abc’ C. 02a1 D. ‘377’

6. 下列说法中正确的是:______。

A. C语言中的for语句的三个表达式都可以省略,而且分号也可以省略。

B. 宏替换比函数调用的执行速度慢。

C. 实质上,C语言中的指针就是一个变量的地址。

D. C语言中的任何函数都可以由程序员命名。

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

A. / B. % C. + D. -

8. 以下叙述中错误的是_______。

A. C语句必须以分号结束

第 1 页 共 10 页

B. 复合语句在语法上被看作一条语句

C. 空语句出现在任何位置都不会影响程序运行

D. 赋值表达式末尾加分号就构成赋值语句

9. 以下叙述中正确的是_______。

A.调用printf函数时,必须要有输出项

B.使用putchar函数时,必须在之前包含头文件stdio.h

C.在C语言中,整数可以以十二进制、八进制或十六进制的形式输出

D.调用getchar函数读入字符时,可以从键盘上输入字符所对应的ASCII码

10. 以下关于函数的叙述中正确的是_______。

A.每个函数都可以被其它函数调用(包括main函数)

B.每个函数都可以被单独编译

C.每个函数都可以单独运行

D.在一个函数内部可以定义另一个函数

11. 有以下程序段

typedef struct NODE{

int num;

struct NODE *next;

} OLD;

以下叙述中正确的是_______。

A.以上的说明形式非法

B.NODE是一个结构体类型

C.OLD是一个结构体类型

D.OLD是一个结构体变量

12. 以下叙述中错误的是_______。

A.C语言中对二进制文件的访问速度比文本文件快

B.C语言中,随机文件以二进制代码形式存储数据

C.语句 FILE fp; 定义了一个名为fp的文件指针

第 2 页 共 10 页

D.C语言中的文本文件以ASCII码形式存储数据

13. 当把以下四个表达式用作if语句的控制表达式时,有一个选项与其它三个选项含义不同,这

个选项是_______。

A.k%2 B. k%2==1 C. (k%2)!=0 D.!k%2==1

(sin(0.5))

2

14. 以下不能正确计算代数式值的C语言表达式是_______。

3

A.1/3*sin(1/2)*sin(1/2) B.sin(0.5)*sin(0.5)/3

C.pow(sin(0.5),2)/3 D.1/3.0*pow(sin(1.0/2),2)

15. 以下能正确定义且赋初值的语句是_______。

A.int n1=n2=10; B.char c=32;

C.float f=f+1.1; D.double x=12.3E2.5;

16. 以下程序的功能是:当a

#include

void main() /* Beginning */

{ int a,b,c;

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

if (a

}

程序不能得到正确结果的的原因是_______。

A.注释语句书写位置错误

B.a、b、c不能以八进制进行输出

C.没有按照八进制进行输入

D.if语句的条件表达式错误

17. 设有定义:int k=1,m=2; float f=7;,则以下选项中错误的表达式是_______。

A.k=k>=k B.-k++ C.k%int(f) D.k>=f>=m

18. 设有定义:int a=2,b=3,c=4;,则以下选项中值为0的表达式是_______。

A.(!a==1)&&(!b==0); B.(a

第 3 页 共 10 页

C.a && b; D.a||(b+b)&&(c-a)

19. 有以下程序段

int k=0,a=1,b=2,c=3; k=ac ? c:k;

执行该程序段后,k的值是_______。

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

20. 设变量a、b、c、d和y都已正确定义并赋值。若有以下if语句

if (a

if(c==d) y=0;

else y=1;

该语句所表示的含义是_______。

A.

y

0

1

abandcd

ab

abandcd

abandcd

abandcd

abandcd

abandcd

cd

B.

y

0

1

0

C.

y

1

D.

y

0

1

二、 阅读程序,写出下列程序的运行结果。(20分)

1、 已知字母A的ASCII码为65。

#include

void main(){

char a, b;

a='A'+'5'-'3'; b=a+'6'-'2' ;

printf("%d %cn", a, b);

}

2、#include

void f(int v, int w) {

int t;

t=v;v=w;w=t;

第 4 页 共 10 页

}

void main(){

int x=1,y=3,z=2;

if (x>y) f(x,y);

else if (y>z) f(y,z);

else f(x,z);

printf(“%d,%d,%d”,x,y,z);

}

3、#include

void 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("%dn",s);

}

4、#include

void main(){

int a=100,b=10;

int *p1=&a, *p2=&b;

*p1=b; *p2=a;

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

printf(“%d, %dn”,*p1,*p2);

}

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

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

#include

#define PI 3.1415926

void main(){

int r;

float s;

scanf("%d",r);

s=PI*r^2;

printf("s=%fn",s);

}

第 5 页 共 10 页

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

#include

#include

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、 以下程序用于通过指针对数组进行输入和输出

#include

void main(){

int a[10];

int *p=a;

int i;

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

scanf(“%d”,p++);

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

printf(“%5d”,p++);

}

4、 以下程序通过判断输入的成绩判断其级别:其中90分以上为A,80分以上为B,70分以上为

C,60分以上为D,其他为E。

#include

void main(){

int score,temp;

temp=score/10;

switch (temp){

case 10,9: printf(“A”);

case 8: printf(“B”);

case 7:printf(“C”);

case 6:printf(“D”);

default:printf(“E”);

}

}

第 6 页 共 10 页

四、 程序填空题:阅读程序,填充空白使之能完成预定功能。(10分)

1、以下程序的功能是计算:s=1+12+123+1234+12345。请填空。

#include

void main() {

int t=0,s,i;

_________;

for( i=1; i<=5; i++) {

t=i+______;

s=s+t;

}

printf("s=%dn",s); }

}

2、以下程序的功能是输出如下形式的方阵:

13 14 15 16

9 10 11 12

5 6 7 8

1 2 3 4

请填空。

#include

void main() {

int i,j,x;

for(j=4; _______; j--) {

for(i=1; i<=4; i++) {

x=(j-1)*4 + ______;

}

printf("%4d",x);

printf("n");

}

}

五、 编程题(要求给出PAD图或者N-S图)(30分)

第 7 页 共 10 页

1、 设计一个C函数,对输入的a、b两个整型参数,返回其中的最小数。利用main函数调用该函

数,并输出结果。

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

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

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

i

1

2

i1

)

2

,其中x

i

为第i个学生的平均分。 ③计算平均方差:

x

i

(

n

i1

n

n

x

n

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

第 8 页 共 10 页

参考答案与评分标准

一、选择题。

DDACD CBCBB

二、程序阅读题

1、67 G

CCDAB

DCABC

(每个1分,共20分)

(每个5分,共20分)

1、 1,3,2

2、 40

3、 10,10,10,10

三、程序改错题 (每个5分,共20分)

1、 第一个错误:scanf(“%d”,r)应为scanf(“%d,&r”)。

第二个错误:s=PI*r^2应为s=PI*r*r。

2、 第一个错误:for循环中的第二个表达式应为 i<10。

第二个错误:sum未赋初值,应加入:sum=0;

3、 应该在第二个for之前加入:p=a;

4、 应该在每个case语句之后加入break;

四、程序填空题(每个5分,共10分)

1、 s=0; t*10

2、 j>0;i

五、编程题(第一个题目5分,第二个10分,第三个15分。没有PAD图或者N-S图扣一半的分

数)

1、#include

int min(int a,int b){

return (a

}

void main(){

int a,b;

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

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

}

2、#include

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]);

第 9 页 共 10 页

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

void main(){

int n,i=0;

long fac=1;

scanf(“%d”,&n);

while (i

i++; fac*=i;

}

printf(“%ld”,fac);

}

递归方法:

#include

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));

}

第 10 页 共 10 页