计算机语言BC语言春季学年b卷及参考标准答案.docx
- 文档编号:28248243
- 上传时间:2023-07-09
- 格式:DOCX
- 页数:20
- 大小:25.62KB
计算机语言BC语言春季学年b卷及参考标准答案.docx
《计算机语言BC语言春季学年b卷及参考标准答案.docx》由会员分享,可在线阅读,更多相关《计算机语言BC语言春季学年b卷及参考标准答案.docx(20页珍藏版)》请在冰豆网上搜索。
计算机语言BC语言春季学年b卷及参考标准答案
2007春计算机语言B(C语言)
得分
一、选择题(每小题1分,共30分)
下列各题A、B、C、D四个选项中,只有一个选项是正确的,请将你认为正确的选项填写在题干的括号内。
1.在C语言中,不正确的int类型的常数是【】。
A.32768B. 0C. 037D. 0Xaf
2.以下说法中正确的是【】。
A.C语言程序总是从第一个函数开始执行
B.在C语言程序中,要调用的函数必须在main()函数中说明
C.C语言程序总是从main()函数开始执行
D.C语言程序中的main()函数必须放在程序的开始部分
3.设有intx=11;则表达式(x++*1/3)的值是【】。
A.3B.4C.11D.12
4.设x、y、z和k都是int型变量,则执行表达式:
x=(y=4,z=16,k=32)后,x的值为【】。
A.4B.16C.32D.52
5.表达式:
3==2的值是【】。
A.trueB.非零值C.0D.1
6.以下程序中循环体的执行次数是【】。
A.3B.2C.1D.0
main()
{inti,j;
for(i=0,j=1;i<=j+1;i+=2,j--)
printf("%d\n",i);
}
7.设有数组定义:
chararray[]="China";则数组array所占的空间为【】。
A.4个字节B.5个字节C.6个字节D.7个字节
8.下面程序的输出是【】。
main()
{intk=11;
printf("k=%d,k=%o,k=%x\n",k,k,k);
}
A.k=11,k=12,k=11B.k=11,k=13,k=13
C.k=11,k=013,k=0xbD.k=11,k=13,k=b
9.以下叙述中不正确的是【】。
A.在不同的函数中可以使用同名的变量
B.函数中的形式参数是局部变量
C.在一个函数内定义的变量只在本函数范围内有效
D.在一个函数内的复合语句中定义的变量在本函数范围内有效
10.有如下程序
main()
{intx=123;
do
{printf("%d",x--);
}while(!
x);
}
该程序的执行结果是【】。
A.321B.123C.122D.陷入死循环
11.以下所列的C语言常量中,错误的是【】。
A.0xFFB.1.2e0.5C.2LD.'\72'
12.下列选项中,合法的C语言关键字是【】。
A.VARB.cherC.integerD.default
13.若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是【】。
A.-3B.9C.-12D.6
14.有以下程序段:
intk=0
while(k=1)
k++;
则while循环执行的次数是【】。
A.无限次B.有语法错,不能执行
C.一次也不执行D.执行1次
15.若变量c为char类型,能正确判断出c为小写字母的表达式是【】。
A.'a'<=c<='z'B.(c>='a')||(c<='z')
C.('a'<=c)and('z'>=c)D.(c>='a')&&(c<='z')
16.下列描述中不正确的是【】。
A.字符型数组中可以存放字符串
B. 可以对字符型数组进行整体输入、输出
C. 可以对整型数组进行整体输入、输出
D. 不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值
17.以下所列的各函数首部中,正确的是【】。
A.voidplay(var:
Integer,varb:
Integer)
B.voidplay(inta,b)
C.voidplay(inta,intb)
D.Subplay(aasinteger,basinteger)
18.下面程序的输出结果是【】。
A.0B.1C.10D.9
main()
{inta[]={1,2,3,4,5,6,7,8,9,0,},*p;
p=a;
printf("%d\n",*p+9);
}
19.下列程序的运行结果是【】。
A.63B.36C.编译出错D.00
voidfun(int*a,int*b)
{int*k;
k=a;
a=b;
b=k;
}
main()
{inta=3,b=6,*x=&a,*y=&b;
fun(x,y);
printf("%d%d",a,b);
}
20.当调用函数时,实参是一个数组名,则向函数传送的是【】。
A.数组的长度B.数组的首地址
C.数组每一个元素的地址D.数组每个元素中的值
21.设有以下说明语句
structex
{intx;
floaty;
charz;
}example;
则下面的叙述中不正确的是【】。
A.struct是结构体类型的关键字B.example是结构体类型名
C.x,y,z都是结构体成员名D.structex是结构体类型
22.已知字母A的ASCII码为十进制的65,下面程序的输出是【】。
A.67,DB.B,CC.C,DD.不确定的值
main()
{charch1,ch2;
ch1='A'+'5'-'3';
ch2='A'+'6'-'3';
printf("%d,%c\n",ch1,ch2);
}
23.C语言规定,程序中各函数之间【】。
A.既允许直接递归调用也允许间接递归调用
B.不允许直接递归调用也不允许间接递归调用
C.允许直接递归调用不允许间接递归调用
D.不允许直接递归调用允许间接递归调用
24.以下程序的输出结果是【】。
#include
main()
{inti;
for(i=1;i<=5;i++)
{if(i%3)
printf("*");
else
continue;
printf("#");
}
printf("$\n");
}
A.*#*#*#$B.#*#*#*$C.*#*#*#*#$D.#*#*$
25.若有定义:
int*p[3];则以下叙述中正确的是【】。
A.定义了一个基类型为int的指针变量p,该变量具有三个指针
B.定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针
C.定义了一个名为*p的整型数组,该数组含有三个int类型元素
D.定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素
26.有以下程序:
main()
{inta[3][3],*p,i;
p=&a[0][0];
for(i=0;i<9;i++)
p[i]=i+1;
printf("%d\n",a[1][2]);
}
该程序运行后的输出结果是【】。
A.3B.6C.9D.2
27.执行以下程序后,输出“#”号的个数是【】。
#include
main()
{inti,j;
for(i=1;i<5;i++)
for(j=2;j<=i;j++)
putchar('#');
}
A.0B.3C.8D.6
28.已知i、j、k为int型变量,若从键盘输入:
1,2,3<回车>,使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是【】。
A.scanf("%2d%2d%2d",&i,&j,&k);
B.scanf("%d%d%d",&i,&j,&k);
C.scanf("%d,%d,%d",&i,&j,&k);
D.scanf("i=%d,j=%d,k=%d",&i,&j,&k);
29.在C语言中,形参的缺省存储类型是【】。
A.autoB.registerC.staticD.extern
30.以下程序的输出结果是【】。
main()
{inta=5,b=4,c=6,d;
printf("%d\n",d=a>b?
(a>c?
a:
c):
(b));
}
A.5B.4C.6D.不确定
得分
二、阅读程序,写出运行结果(每小题3分,共30分)
1.
main()
{inta=2,b=1;
a+=b;
b=a-b;
a-=b;
printf("%d,%d\n",a,b);
}
运行结果:
2.
main()
{intx=5,y=6;
printf("%d,%d\n",x--,--y);
}
运行结果:
3.
main()
{intx=1,a=0,b=0;
switch(x)
{case0:
b++;
case1:
a++;
case2:
a++;b++;
}
printf("a=%d,b=%d\n",a,b);
}
运行结果:
4.
main()
{inti,sum=10;
for(i=1;i<6;i++)
sum+=i;
printf("%d\n",sum);
}
运行结果:
5.
main()
{inta=5,b=4,c=3,d;
d=(a>b>c);
printf("%d\n",d);
}
运行结果:
6.
main()
{intx,y;
for(y=1,x=1;y<=50;y++)
{if(x==10)break;
if(x%2)
{x+=5;
continue;
}
x-=3;
}
printf("x=%d\ny=%d\n",x,y);
}
运行结果:
7.
inta=4;
intfun(inta,intb)
{staticintc=1;
c=c+a*b;
return(c);
}
main()
{intb=2,x,y;
x=fun(a,b);
y=fun(a--,++b);
printf("x=%dy=%d\n",x,y);
}
运行结果:
8.
main()
{inty=18,t=0,j,a[8];
do
{a[t]=y%3;
t++;
y=y/3;
}while(y>=1);
for(j=t-1;j>=0;j--)
printf("%5d",a[j]);
printf("\n");
}
运行结果:
9.
#include"stdio.h"
main()
{inta[3][4],i,j,k=2,b[3];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
a[i][j]=++k+i*j;
for(i=0;i<3;i++)
{b[i]=0;
for(j=0;j<4;j++)
b[i]=b[i]+a[i][j];
b[i]=b[i]/3;
}
for(i=0;i<3;i++)
printf("%5d",b[i]);
}
运行结果:
10.
main()
{inta[10],k,s=0,*p,*p1=&s;
for(k=0,p=a;p *(p)=1+k; k=3; for(p=&a[k];p *p1=*p1+*p; printf("%d\n",*p1); } 运行结果: 得分 三、填空题(每空2分,共30分) 1.下面程序把从终端读入的10个整数以二进制数方式写到一个名为“lut2007.dat”的文件中,请填空。 #include main() {inti,j; FILE *fp; if((fp=fopen( ,"wb"))==NULL) exit(0); for(i=0;i<10;i++) { scanf("%d",&j); fwrite(&j,sizeof(int),1,fp); } ; } 2.请完成程序填空,使之能在运行后输出以下图形。 A BBB CCCCC DDDDDDD 程序如下: main() {inti,j,x; charch='A'; for(x=1;x<=4;x++) { for(i=1;i<=5-x;i++) printf(""); for(j=1;j<=2*x-1;j++) ; printf("\n"); ; } } 3.下面的程序是把一组数按照从小到大的次序排序,请填空。 main() {inta[11]; inti,j,t; printf("input10number: \n"); for(i=1;i<11;i++) scanf("%d",&a[i]); printf("\n"); for(j=1;j<=9;j++) for(i=1;i<=10-j;i++) if {t=a[i]; ; a[i+1]=t;} printf("thesortednumbers: \n"); for(i=1;i<11;i++) printf("%d",a[i]); } 4.下面的程序是输出1896~2008之间的所有素数及这些素数的平均值,请填空。 #include main() {inti,j,c=0,sum=0; floataver=0; for(i=1896;i<=2008;i++) { for(j=2;j { if() break; } if(j>=i) {c++; printf("%d: %d\n",c,i); sum=sum+i; } } aver=; printf("aver=%f\n",aver); } 5.下面程序是计算1-3+5-7+…-99+101的值,请填空。 main() {inti,m,t=1,s=0; for(i=1;;i=i+2) {m=; s=s+m; t=-t; } printf("%d\n",s); } 6.以下程序将数组a中的数据按逆序存放,请填空。 #defineM8 voidmain() {inta[M],i,j,t; for(i=0;i scanf("%d",a+i); i=0; j=M-1; while(i {t=*(); *(a+i)=*(a+j); *(a+j)=t; i; j--; } for(i=0;i printf("%6d",*(a+i)); } 7.折半查找法的思路是(以非减序列为例): 先确定待查找元素的范围,测试位于中间点的元素值,如果该待查找元素的值大于中间点的元素值,就缩小待查范围,只测试中间点之后的元素;反之,测试中间点之前的元素,测试方法同前。 以下函数binary的作用是应用折半查找法从存有10个整数的a数组中对关键字m进行查找,若找到,返回其下标值;反之,返回-1。 请填空。 intbinary(inta[10],intm) {intlow=0,high=9,mid; while(low<=high) { if(m>a[mid]) low=min+1; elseif(m ; elsereturn(mid); } return(-1); } 8.若有以下定义和语句,则使指针p指向值为36的数组元素的表达式是。 inta[10]={19,23,44,17,37,28,49,36},*p; p=a+1; 得分 四、编程题(每小题5分,共10分) 1.补充完整以下子函数,实现求s=1+ + +……+ 。 #include doublefun(n) intn; { } main() { intn; doublesum; printf("enteranintegern: \n"); scanf("%d",&n); sum=fun(n); printf("outputthesum: %lf\n",sum); getch(); } 2.从 的二维数组x中,找出并输出最大值及其所在的行、列下标。 参考答案和评分标准 一、选择题(每题1分,共30分) 1.A2.C3.A4.C5.C6.C7.C8.D9.D10.B 11.B12.D13.C14.A15.D16.A17.C18.C19.B20.B 21.B22.A23.A24.C25.B26.B27.D28.C29.A30.C 二、阅读程序,写出其运行结果(每小题3分,共30分) 1.1,2 2.5,5 3.a=2,b=1 4.25 5.0 6.x=10 y=6 7.x=9y=21 8.200 9.61320 10.28 说明: 格式1分,其他2分 三、填空题(每空2分,共30分) 1."lut2007.dat"fclose(fp) 2.printf("%c",ch)ch=ch+1 3.(a[i]>a[i+1])a[i]=a[i+1] 4.(i%j==0),sum/c 5.i<=101,i*t 6.a+i,++ 7.mid=(low+high)/2;high=mid-1 8.p=p+6或p+=6 四、编程题(每小题5分,共10分) 1.参考程序(段) doublefun(n) intn; {inti,t=1; doubles=0.0; for(i=1;i<=n;i++) {t=t*i; s=s+1.0/t; } returns; } 2.参考程序 #defineN3 #defineM3 main() {inta[N][M]={9,11,23,6,1,15,9,17,20}; inti,j,max=a[0][0],row=0,colum=0; for(i=0;i for(j=0;j if(max {max=a[i][j]; row=i; colum=j; } printf("max=%d,row=%dcolum=%d\n",max,row,colum); getch(); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机语言 BC 语言 春季 学年 参考 标准答案