天津师范大学考试试卷
2009—2010学年第二学期期中考试试卷
科目:C 语言程序设计 学院:数学科学学院
)
一、 单项选择题:在每小题的备选答案中选出一个正确答案,并将正确答案的代
]
(本题共20小题,每小题2分,共40分)
1.以下叙述中错误的是( D )。
A .计算机不能直接执行用C 语言编写的源程序
{
B .
C 程序经C 编译程序编译后,生成后缀为.obj 的文件是一个二进制文件 C .后缀为.obj 的文件,经连接程序生成后缀为.exe 的文件是一个二进制文件
D .后缀为.obj 和.exe 的二进制文件都可以直接运行 2.可在C 程序中用作用户标识符的一组标识符是( A )。
A .and B. Date C. Hi D. case
、
_2007 y-m-d Big1
3.以下选项中不能作为C 语言合法常量的是( A )。
A .‘cd ’ B. +6 C. “\a ” D. ‘\011’ 4.若有代数式
x x e n (其中e 代表自然对数的底数,不是变量),则
以下能够正确表示该代数式的C 语言表达式是( C )。
^
A .sqrt(abs(n^x+e^x)) B. sqrt(fabs(pow(n,x)+pow(x,e))) C .sqrt(fabs(pow(n,x)+exp(x))) (fabs(pow(x,n)+exp(x))) 5.有以下程序,运行后的输出结果是( C )。
main() { int x,y,z;
—
x=y=1;
z=x++,y++,++y;
printf("%d,%d,%d\n",x,y,z);
}
A .2,3,3 B. 2,3,2 C. 2,3,1 D. 2,2,1
、
6.若变量均已正确定义并赋值,以下合法的C 语言赋值语句是( A )。 A .x=y=5; B. x=n%; C. x+n=i; D. x=5=4+1 7.执行以下程序时,输入1234567<回车>,则输出结果是( C )。
main() { int a=1,b;
》
scanf(“%2d%2d ”,&a,&b); printf(“a=%d b=%d ”,a,b); }
A .12 34
B .a=123 b=456
C .a=12 b=34
D .输入有错误 8.设变量均已正确定义,若通过scanf(“%d%c%d%c ”,&a1,&c1,&a2,&c2);
~
语句为变量a1和a2赋数值10和20,为变量c1和c2赋字符X和Y,
以下输入形式中正确的是( D )。(□代表空格)
A.10□X□20□Y<回车> B. 10□X20□Y<回车>
C.10□X<回车> D. 10X<回车>
20□Y<回车> 20Y<回车>
~
9.程序段:int x=12;
double y=;
printf(“%d%8.6f”,x,y);的输出结果是( A )。(□代表空格)A. B. 12□
C.12, D.
》
10.当把以下四个表达式用作if语句的控制表达式时,有一个选项与其它三个选项含义不同,这个选项是( D )。
A.k%2 B. k%2==1 C. (k%2)!=0 D. !k%2==1
11.设有定义:int a=2,b=3,c=4;,则以下选项中值为0的表达式是( A )。
A.(!a==1)&&(!b==0) B. (a
C.a&&b D. a||(b+b)&&(c-a)
#
12.有以下程序,运行后的输出结果是( D )。
main()
{ int i=1,j=2,k=3;
if(i++==1&&(++j==3||k++==3))
printf("%d %d %d\n",i,j,k);
-
}
A.1 2 3 B. 2 3 4 C. 2 2 3 D. 2 3 3
13.有以下程序,运行后输出( D )。
#include <>
main()
】
{ int a=0,b=0,c=0,d=0;
if(a=1)
b=1 ; c=2;
else
d=3 ;
*
printf(“%d,%d,%d,%d\n”,a,b,c,d); }
A.0,1,2,0 B.0,0,0,3 C.1,1,2,0 D.编译出错14.以下不构成无限循环的语句或者语句组是( A )。
A.n=0; B. n=0;
do{++n ;}while(n<=0) ; while(1){n++;} :
C.n=10; D. for(n=0,i=1 ; ; i++) while(n) ; {n-- ;} n+=i;
15.若变量已正确定义,有以下程序段,其输出结果是( B )。
i=0;
do
%
printf("%d,",i) ; while(i++);
printf("%d\n",i);
A.0,0 B. 0,1 C. 1,1 D.程序进入无限循环16.有以下程序,运行结果是( B )。
#include <>
·
main()
{ int i, j, m=55;
for(i=1;i<=3;i++)
for(j=3;j<=i;j++)
m=m%j;
!
printf("%d\n",m);
}
A.0 B. 1 C. 2 D. 3
17.有以下程序,运行后的输出结果是( D )。
#include<>
、
main( )
{ int k=5,n=0;
while(k>0)
{ switch(k)
{ default : break;
~
case 1 : n+=k;
case 2 :
case 3 : n+=k;
}
k--;
$
}
printf("%d\n",n);
}
A.0 B. 4 C. 6 D. 7
18.若定义具有10个int型元素的一维数组a,则以下定义语句中错误的是( D )。
)
A.#define N 10 B. #define n 5 C.int a[5+5]; n=10,a[n];
int a[N]; int a[2*n];
19.若有定义语句: int m[ ]={5,4,3,2,1} , i=4 ;
则下面对m数组元素的引用中错误的是( C )。
A.m[--i] B. m[2*2] C. m[m[0]] D. m[m[i]]
;
20.有以下程序,运行后的输出结果是( B )。
main()
{ int p[8]={11,12,13,14,15,16,17,18},i=0,j=0;
while(i++<7)
if(p[i]%2)
{
j+=p[i];
printf("%d\n",j);
}
A.42 B. 45 C. 56 D. 60
|
10个空,每空2分,共20分)得分评卷人
~
1.函数【1】是C程序的基本单位,一个C程序总是从【2】主函数(或main())开始执行的。(P5-6 概念)
2.从键盘输入一个小写字母,改成大写字母输出。(P74页例题改造)
#include""
void main()
{ char c1,c2;
}
printf("Input a small letter:");
c1=getchar(); 或scanf(“%c”,&c1);【3】/* 从键盘输入一个大写字母*/
printf("%c,%d\n",c1,c1); /* 用字符形式输出小写字母及其ASCII码*/
c2=c1-32; 【4】/* 把小写字母变为大写字母*/
$
printf("%c,%d",c2,c2); /* 用字符形式输出大写字母及其ASCII码*/
}
3.下面程序实现判断某年是否为闰年(P105例题
main()
。
{int y,flag;
scanf("%d",&y);
if(y%4==0 )
if(y%100==0)
if(y%400==0【5】)leap=1;
|
else leap =0;
else leap =1 【6】;
else leap =0;
if(leap )printf("%d is a leap year!\n",y);
else printf("%d is not a leap year!\n",y);
—
}
4.有3个整数a,b,c,由键盘输入,输出其中最大的数。(P113习题5)#include""
void main()
{
!
int a,b,c,max;
printf("Input 3 integers:");
scanf("%d%d%d",&a,&b,&c);/*输入3个整数*/
if(a>b) max=a; 【7】
else max=b;
(
if(c>max)max=c; 【8】或max=(c>max)c:max;
printf("max=%d\n",max);/* 输出最大数*/
}
5.下列程序将输入的数据num按逆序输出,请完成填空。(选自天津市二级题库,同时是对P113习题7的应用循环处理)
~
#include ""
main()
{ int c,num;
printf("Enter a number:");
scanf("%d",&num);
>
do
{ c=num%10 ; 【9】
printf(“%d”,c);
} while( (num/=10 )>0【10】);
}
<
5小题,每小题2分,共10分)
请指出并改正下列程序中的错误(在/*********found********/下面找错),使它得到正确的结果。先将错误语句(行)抄写在答题纸上一行,再将改正的答案写在相应的下一行。
注意:不允许增行或删行,也不允许更改程序中的结构。
1.下面程序的功能是输入一个华氏温度,要求输出摄氏温度。公式为c=5/9×(F-32)。-
试题程序如下:
#include <>
main()
{ float c,f;
printf("input f:\n");
;
scanf("%f",&f);
/**********************found***********************/
c=5/9*(f-32);
printf("c=%5.2f\n",c);}
、
答案:c=5/9*(f-32);改为c=5/*(f-32);或c=5./9*(f-32); 或c=5./*(f-32);
或c=5*(f-32) ./9; 等等
2.下列给定程序的功能是:输入两个数,并按升序排列输出。
试题程序:
#include<>
"
main()
{ int a,b,t;
scanf(“%d%d”,&a,&b);
/*****************found****************/
if(a>b) ;
:
{t=b; b=a; a=t;}
printf(“%3d%3d\n”,a,b); }
答案:if(a>b); 改为if(a>b)
3.下面程序的功能是:有一分数序列
,
,
,
,
,
,
13
21
8
13
5
8
3
5
2
3
1
2
…求这个数列的前20项
之和。试题程序:
#include<>
:
main()
{ int i,n=20;
/*****************found****************/ float a=2,b=1,t,s=0;