武汉大学计算机学院C语言部分年份试题
武汉大学计算机学院
2004-2005学年度第2学期2004级
《高级语言程序设计》期末考试试卷A卷
答案及评分标准
一.单项选择题:(选择最合适的答案填空,每小题2分,共20分)
( )1.不正确的常量是____B__ 。
A.‘\t’
B.084
C. 1.2e4
D.0x8fL
( )2.表达式-8%3+13/2的结果为______D 。
A. 4.5
B.8
C.8.5
D.4
( )3.设变量 int a=1,b=2; 则执行表达式a+=3,b-2,++b,a*=b后变量a 和b 的
值为______C 。
A.2和2
B.3和3
C.12和3
D.12和2
( )4.表达式0xad86|0xff的值为____A__ 。
A.0xadff
B.0x86
C.0xad86
D.0xff
( )5.设有如下宏定义#define price(x) 5+x
则执行赋值语句 v=price(4)*price(15);/*v为int型变量*/后,v的值为 C 。
A.180
B.85
C.40
D.60
( )6.在定义指针变量时,void *类型表明指针____ A 。
A.指向对象类型未知
B.不指向任
何对象
C.指向整型
的对象
D.指向char类
型对象
( )7.设int a[3][4],*p[3]; 则以下___C____赋值语句是正确的。
A.p=a[0];
B.p[1]=a;
C.p[1]=a[2];
D.p=a;
( )8.创建一个新的文本文件,可对该文件进行读写操作,则____A____打开方式是正确的。
A.“w+”
B.“wb”
C.“r+”
D.“rb+”( )9.表达式4&&5结果为______B 。
A.0
B.1
C.4
D.5
( )10.正确的标识符是______A 。
A._a123
B.3z
C.“next”
D.‘A’二.文字填空(共15分)
1.一个合理的算法应该具有“有穷性”,“有穷性”指的是_____经过有限个步骤的处理以后,算法应该结束_________。
2.%作为运算符表示________取余数 ____________。
3.在C语言中,____全局变量____变量和_____静态(局部静态)__变量在程序一开始执行就被分配内存空间,直到整个程序执行结束其内存空间才被释放。
4.设x、y为int类型变量,请写出以下命题:
(1) x和y都为偶数 _____(x%2==0)&&(y%2==0) 或者
(!(x%2)&&!(y%2))________________
(2) x和y中至少一个能被3整除 ________(x%3==0)||(y%3==0) 或者
_(!(x%3)||!(y%3))______
5.编译预处理命令#include的作用是_______文件包含_____________。
6.设有如下定义int (*ptr)[5]; 则表示定义的ptr是__指向一维数组的指针____或者数组_____________变量。
7.完成字符串连接的库函数是____strcat()_____。
8.typedef int A[12]; 的作用是__定义类型名A,表示类型int [12]__。三.程序填空(请在空白处填写合适内容以完成整个程序,共10分)
1.以下程序实现从键盘输入一个整数,然后以相反的顺序输出每位数字。
例如:输入1234,则输出4321。
#includ e
vo id main()
{
int nu mber,right;
print f(“enter yo ur numb er:\n”);
scanf(“%d”,&nu mber );
do
{ right=numb er%10;
print f(“%d”,rig ht);
numb er=numb er/10;
}while( numb er!=0);
print f(“\n”);
}
a)下面程序将若干字符串按照字典顺序排列并输出
#include
#include
void sort( char *s[] ,int n)
{ int i,j;
char *t;
for(i= 0 ;i< n-1 ;i++)
for(j= i+1 ;j< n ;j++)
if( strcmp(s[i],s[j])>0 )
{ t=s[i];
s[i]=s[j];
s[j]=t;
}
}
void main()
{
char *s[5]={“Pascal’,”C language”,”Prolog”,”fortran”,”Visual C++”};
int i;
sort(s,5);
for(i=0;i<5;i++)
puts(s[i]);
}
四.程序阅读与分析(共10分)
1.分析以下程序执行流程,并写出下列程序的运行结果。
#includ e
vo id main()
{ int j;
fo r(j=1;j<=5;++j)
switch(j%2)
{ case 0: j++;p rint f(“#”);b reak;
case 1:j+=2;p rintf(“*”);
default: p rintf(“\n”);
}
}
解答:运行结果为:
*
#
(注意:评分时如果试卷中给出结果不正确或者没有给出运行结果,但分析程序执行流程基本正确给分不超过2分。)
2.阅读以下递归函数,分析进行k=fib(7)调用时程序运行过程;调用完成后变量k的值为多少?
#include
long fib(int g)
pascal语言难学吗{ switch(g)
{ case 0:return 0;
case 1:case 2:return 1;
}
return(fib(g-1)+fib(g-2));
}
解答:调用完成后k的值为13
(注意:评分时如果试卷中给出k的值不正确或者没有给出k的值,但分析程序执行流程基本正确给分不超过3分。)
五.子程序设计(每小题15分,共30分)
本题说明:完成函数设计时,请自行说明所有的形式参数的类型
1.设计一个函数strcpy(s1,s2),将字符串s1复制到字符串s2中,且函数
strcpy()返回值为实际复制到s2中字符个数。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论