程序设计基础试题及答案二.docx
《程序设计基础试题及答案二.docx》由会员分享,可在线阅读,更多相关《程序设计基础试题及答案二.docx(11页珍藏版)》请在冰点文库上搜索。
![程序设计基础试题及答案二.docx](https://file1.bingdoc.com/fileroot1/2023-6/16/7f99021c-dd94-472a-aeb9-5f5d5572232f/7f99021c-dd94-472a-aeb9-5f5d5572232f1.gif)
程序设计基础试题及答案二
程序设计基础试题及答案二
《程序设计基础》考试试卷二
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.ifB.3abC.IntD.A-4
5.下列常量中,只有______是合法的。
A.3e-0.3B.‘abc’C.02a1D.‘\377’
6.下列说法中正确的是:
______。
A.C语言中的for语句的三个表达式都可以省略,而且分号也可以省略。
B.宏替换比函数调用的执行速度慢。
C.实质上,C语言中的指针就是一个变量的地址。
D.C语言中的任何函数都可以由程序员命名。
7.C语言中,运算对象必须是整型的运算符是_______。
A./B.%C.+D.-
8.以下叙述中错误的是_______。
A.C语句必须以分号结束
B.复合语句在语法上被看作一条语句
C.空语句出现在任何位置都不会影响程序运行
D.赋值表达式末尾加分号就构成赋值语句
9.以下叙述中正确的是_______。
A.调用printf函数时,必须要有输出项
B.使用putchar函数时,必须在之前包含头文件stdio.h
C.在C语言中,整数可以以十二进制、八进制或十六进制的形式输出
D.调用getchar函数读入字符时,可以从键盘上输入字符所对应的ASCII码
10.以下关于函数的叙述中正确的是_______。
A.每个函数都可以被其它函数调用(包括main函数)
B.每个函数都可以被单独编译
C.每个函数都可以单独运行
D.在一个函数内部可以定义另一个函数
11.有以下程序段typedefstructNODE{
intnum;
structNODE*next;
}OLD;
以下叙述中正确的是_______。
A.以上的说明形式非法
B.NODE是一个结构体类型
C.OLD是一个结构体类型
D.OLD是一个结构体变量
12.以下叙述中错误的是_______。
A.C语言中对二进制文件的访问速度比文本文件快
B.C语言中,随机文件以二进制代码形式存储数据
C.语句FILEfp;定义了一个名为fp的文件指针
D.C语言中的文本文件以ASCII码形式存储数据
13.当把以下四个表达式用作if语句的控制表达式时,有一个选项与其它三个选项含义不同,这个选项是_______。
A.k%2B.k%2==1C.(k%2)!
=0D.!
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)/3D.1/3.0*pow(sin(1.0/2),2)
15.以下能正确定义且赋初值的语句是_______。
A.intn1=n2=10;B.charc=32;
C.floatf=f+1.1;D.doublex=12.3E2.5;
16.以下程序的功能是:
当a
#include
voidmain()/*Beginning*/
{inta,b,c;
scanf(“%d%d%d”,&a,&b,&c);
if(a
程序不能得到正确结果的的原因是_______。
A.注释语句书写位置错误
B.a、b、c不能以八进制进行输出
C.没有按照八进制进行输入
D.if语句的条件表达式错误
17.设有定义:
intk=1,m=2;floatf=7;,则以下选项中错误的表达式是_______。
A.k=k>=kB.-k++C.k%int(f)D.k>=f>=m
18.设有定义:
inta=2,b=3,c=4;,则以下选项中值为0的表达式是_______。
A.(!
a==1)&&(!
b==0);B.(a
c||1;
C.a&&b;D.a||(b+b)&&(c-a)
19.有以下程序段intk=0,a=1,b=2,c=3;k=a
b:
a;k=k>c?
c:
k;
执行该程序段后,k的值是_______。
A.3B.2C.1D.0
20.设变量a、b、c、d和y都已正确定义并赋值。
若有以下if语句if(a
if(c==d)y=0;
elsey=1;
该语句所表示的含义是_______。
A.
B.
C.
D.
一、阅读程序,写出下列程序的运行结果。
(20分)
1、已知字母A的ASCII码为65。
#include
voidmain(){
chara,b;
a='A'+'5'-'3';b=a+'6'-'2';
printf("%d%c\n",a,b);}
2、#include
voidf(intv,intw){
intt;
t=v;v=w;w=t;}
voidmain(){
intx=1,y=3,z=2;
if(x>y)f(x,y);
elseif(y>z)f(y,z);
elsef(x,z);
printf(“%d,%d,%d”,x,y,z);}
3、#include
voidmain(){
inta[4][4]={{3,2,-3,-4},{0,-12,-13,14},{-21,23,0,-24},{-31,12,-33,0}};
inti,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);}
4、#include
voidmain(){
inta=100,b=10;
int*p1=&a,*p2=&b;
*p1=b;*p2=a;
printf(“%d,%d,”,a,b);
printf(“%d,%d\n”,*p1,*p2);}
二、程序改错:
找出下列程序存在的错误,并进行改正。
(20分)
1、以下程序的功能是:
给r输入数据后计算半径为r的圆面积s。
#include
#definePI3.1415926
voidmain(){
intr;
floats;
scanf("%d",r);
s=PI*r^2;
printf("s=%f\n",s);}
2、以下程序用于计算一个一维数组各元素平方根的和。
#include
#include
voidmain(){
inta[10],i;
floatsum;
for(i=0;i<=10;i++)
scanf(“%d”,&a[i]);i=0;
while(i<=9)){
sum+=sqrt(a[i]);
i++;}
3、以下程序用于通过指针对数组进行输入和输出
#include
voidmain(){
inta[10];
int*p=a;
inti;
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
voidmain(){
intscore,temp;
temp=score/10;
switch(temp){
case10,9:
printf(“A”);
case8:
printf(“B”);
case7:
printf(“C”);
case6:
printf(“D”);
default:
printf(“E”);}}
三、程序填空题:
阅读程序,填充空白使之能完成预定功能。
(10分)
1、以下程序的功能是计算:
s=1+12+123+1234+12345。
请填空。
#include
voidmain(){
intt=0,s,i;
_________;
for(i=1;i<=5;i++){
t=i+______;
s=s+t;}
printf("s=%d\n",s);}}
2、以下程序的功能是输出如下形式的方阵:
13141516
9101112
5678
1234
请填空。
#include
voidmain(){
inti,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分)
1、设计一个C函数,对输入的a、b两个整型参数,返回其中的最小数。
利用main函数调用该函数,并输出结果。
2、编程输入10个学生5门课程的成绩,实现:
①计算每个学生的平均分;
②计算每门课程的平均分;
③计算平均方差:
,其中xi为第i个学生的平均分。
3、编写一个C程序,求解n!
。
要求分别用非递归程序和递归程序实现。
一、选择题。
DDACDCBCBBCCDABDCABC
二、程序阅读题(每个5分,共20分)
1、67G2、1,3,23、404、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*102、j>0;i
四、编程题
五、1、#include
intmin(inta,intb){
return(a
a:
b);
}
voidmain(){
inta,b;
scanf(“%d%d”,&a,&b);
printf(“%d”,min(a,b));}
2、#include
voidmain(){
floatscore[10][5],stuave[10],courseave[5],fangcha;
floattemp1,temp2;
inti,j;
printf(“Pleaseinputthescores:
”);
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(“theaveragescoresofeachstudentare:
”);
for(i=0;i<10;i++)printf(“%5.2f”,stuave[i]);
printf(“theaveragescoresofeachcourseare:
”);
for(i=0;i<5;i++)printf(“%5.2f”,courseave[i]);
printf(“thefangchais%5.2f”,fangcha);}
3、非递归方法
#include
voidmain(){
intn,i=0;
longfac=1;
scanf(“%d”,&n);
while(ii++;fac*=i;
}
printf(“%ld”,fac);
}
递归方法:
#include
longfac(intn){
if(n==0||n==1)return1;
elsereturnn*fac(n-1);
}
voidmain(){
intn;
scanf(“%d”,&n);
printf(“%ld”,fac(n));
}