1、 《程序设计基础》考试试卷二 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. 下列标识符中,只有______是合法的
2、 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
3、 + D. - 8. 以下叙述中错误的是_______。 A. C语句必须以分号结束 B. 复合语句在语法上被看作一条语句 C. 空语句出现在任何位置都不会影响程序运行 D. 赋值表达式末尾加分号就构成赋值语句 9. 以下叙述中正确的是_______。 A.调用printf函数时,必须要有输出项 B.使用putchar函数时,必须在之前包含头文件stdio.h C.在C语言中,整数可以以十二进制、八进制或十六进制的形式输出 D.调用getchar函数读入字符时,可以从键盘上输入字符所对应的ASCII码 10. 以下关于函数的叙述中正确的是_______
4、 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语言中,随机
5、文件以二进制代码形式存储数据 C.语句 FILE fp; 定义了一个名为fp的文件指针 D.C语言中的文本文件以ASCII码形式存储数据 13. 当把以下四个表达式用作if语句的控制表达式时,有一个选项与其它三个选项含义不同,这个选项是_______。 A.k%2 B. k%2==1 C. (k%2)!=0 D.!k%2==1 14. 以下不能正确计算代数式值的C语言表达式是_______。 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
6、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 void main() /* Beginning */ { int a,b,c; scanf(“%d%d%d”,&a,&b,&c); if (a
7、a,b,c); } 程序不能得到正确结果的的原因是_______。 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
8、c||1; 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
9、果。(20分)
1、 已知字母A的ASCII码为65。
#include
10、 f(x,z);
printf(“%d,%d,%d”,x,y,z);}
3、#include
11、"%d\n",s);}
4、#include
12、 r;
float s;
scanf("%d",r);
s=PI*r^2;
printf("s=%f\n",s);}
2、 以下程序用于计算一个一维数组各元素平方根的和。
#include
13、include
14、
case 10,9: printf(“A”);
case 8: printf(“B”);
case 7:printf(“C”);
case 6:printf(“D”);
default:printf(“E”);}}
三、 程序填空题:阅读程序,填充空白使之能完成预定功能。(10分)
1、以下程序的功能是计算:s=1+12+123+1234+12345。请填空。
#include
15、t=i+______;
s=s+t; }
printf("s=%d\n",s); }}
2、以下程序的功能是输出如下形式的方阵:
13 14 15 16
9 10 11 12
5 6 7 8
1 2 3 4
请填空。#include
16、x); } printf("\n"); }} 四、 编程题(要求给出PAD图或者N-S图)(30分) 1、 设计一个C函数,对输入的a、b两个整型参数,返回其中的最小数。利用main函数调用该函数,并输出结果。 2、 编程输入10个学生5门课程的成绩,实现: ①计算每个学生的平均分; ②计算每门课程的平均分; ③计算平均方差:,其中xi为第i个学生的平均分。 3、 编写一个C程序,求解n!。要求分别用非递归程序和递归程序实现。 一、 选择题。DDACD CBCBB CCDAB DCABC 二、 程序阅读题 (每个5分,共20
17、分) 1、67 G 2、1,3,2 3、40 4、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; 三、
18、 程序填空题(每个5分,共10分)
1、 s=0; t*10 2、j>0;i
四、 编程题
6
五、 1、#include
19、uave[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+
20、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]
21、);
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






