大学《C语言程序设计》期末考试试卷及参考答案 1

《C语言程序设计》期末考试试卷参考答案


一、判断题(10分)

1、C语言是一种结构化程序设计语言。(对)
2、在标准C中,整型变量与字符变量是可以通用的。(对)
3、在标准C中,“=”是判断两个数是否相等。(错)
4、在if语句中,else前一个语句可不加“;”。(错)
5、在C语言中操作系统是以文件为单位对数据进行管理的。(对)
6、在C语言中,定义结构体变量时可以省略关健字struct。(错)
7、内存单元的地址与内存单元中的内容是两个相同的内容。(错)
8、在标准C语言中,在定义带参数的宏时也要定义参数的类型。(错)
9、在标准C语言中,所有函数在调用之前都要进行声明。(错)
10、在标准C语言中,数组的下标必须是常量,不允许是表达式。(错)

二、填空题(30分,,1到10题1分1空,10到18题2分1空)

1. 设float x=2.5,y=4.7; int a=7;,则表达式 x+a%3*(int)(x+y)%2/4 的值为 (3.4 )
4. 如定义语句为“char a[]="windows ",b[]="95";”,
语句"printf("%s",strcat(a,b));"的输出结果为 ( windows95 ) 。
5. 宏定义语句 #define f(c) c>='A'&&c<='Z' 的引用 f(x[i])置换展开后为 (x[i]>='A'&&x[i]<='Z' ) 。
6.int i=234,j=567; 函数printf("%d%d\n",i,j) 的输出结果是 ( 234567 )
7. 文件打开方式为"r+",文件打开后,文件读写位置在 ( 文件的首记录前 ) 。
8、为了建立如图所示的存储结构(即:每个结点含三个域,data是数据域,Ltree是指向左子树结点的指针域,Rtree是指向右子树结点的指针域),请填空.
struct TREE {char data; Ltree data Rtree
__( char *Ltree ; char *Rtree)__________; }node; ┏━━┯━━┯━━┓
┃ │ │ ┃
┗━━┷━━┷━━┛
9. 求1至100的和,写作 for(s=0,i=1; ( i<=100 ) ;++i) s+=i;
10. 定义a为长度为10的字符串、同时为字符串赋初值"continue"的语句为 ( char[10]="continue" ;)

11. p为本金,r为1年期存款年利率,计算存款p元5年到期时本金、利息总和(计复利)的算术表达式为 __p*pow( r+1, 5 )__ 。
12. 若 s='d',执行语句 s=(s>='a'&&s<='z')?s-32:s; 字符变量s的值为 ___'d'_____ 。
13. 函数change定义如下,若a=10、b=5,执行 change(a,b)后a、b的值分别为 __ 10,5_____ 。
void change(int a,int b) { int t=0; t=a; a=b; b=t;}
定义一个带参数的宏,若变量中的字符为大写字母则转换成小写字母___#define utol(ch) ch=ch>='A'&&ch<='Z'?ch-'a'+'A':Z ___


15.数组声明为“int a[6][6];”,表达式“*a+i”是指 __首行i+1的地址______ 、“*(a+i)”是指____第i+1行的地址___ 、“**a”又是指 ___a[0][0]的地址_____ 。
16.动态分配n个int类型数据的存储空间,并将该存储空间的首地址返回给指向int类型数据的指针变量p,写作语句 ___p=(int*)mallo(n);_____ 。
17. 已知方程ax^2+bx+c=0系数a、b、c且存在两个实根,计算其中一个实根的算术表达式为 ___(-b+sprt(b*b-4a*c))/2/a____ 。
18. 声明fg为指向返回值为float类型、形参依次为 float**、int、int类型变量的函数的指针,声明语句为 __float(*fg)(float**,int,int);___ 。

三、单项选择题(在每小题的四个备选答案中选出一个正确的。10分)


1、一个C程序的执行是从 (A) 。
A、本程序的main函数开始,到main函数结柬
B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束
C、本程序的main函数开始,到本程序文件的最后一个函数结束
D、本程序文件的第一个函数开始,到本程序main函数结束
2、能正确表示“当x取值在[1,10]和[200,210]范围内为真,否则为假”的表达式是 ( B) 。
A、(x>=1)&&(x<=10)&&(x>=200)&&(x<=210)
B、(x>=1)&&(x<=10)||(x>=200)&&(x<=210)
C、(x>=1)||(x<=10)||(x>=200)||(x<=210)
D、(x>=1)&&(x<=10)||(x>=200)||(x<=210)
3、以下对一维数组正确初始化的语句是 ( C ) 。
A、int a[10]=(0,0,0,0,0); B、int a[10]={};
C、int a[]={0}; D、int a[10]={10*1};
4、 若int类型数据字长为4,其最大值为 ( B ) 。
A、231 B、231-1 C、232-1 D、232
5、下列各语句中,能够输出整型变量a、b中最大值的是 ( D ) 。
A、printf("%d\n",(a>b)?a,b); B、(a>b)? printf("%d",b):printf("%d",a);

C、printf("%d",if(a>b)a else b); D、printf("%d\n",(a>b)?a:b);
6、在C语言中(以16位PC机为例),5种基本数据类型的存储空间长度的排列
顺序为 ( A ) 。
A、char<int=<long int<=float<double
B、char=int<long int<float<double
C、charD、char7、若用数组作为函数调用的实参,传递给形参的是 ( A ) 。
A、数组的首地址 B、数组的第一个元数
C、数组中全部元素的值 D、数组元素的个数
8、算术运算符、赋值运算符和关系运算符的运算优先级按从高到低依次为 ( B ) 算术运算>关系运算>赋值运算 。
A、算术运算、赋值运算、关系运算 B、算术运算、关系运算、赋值运算
C、关系运算、赋值运算、算术运算 D、关系运算、算术运算、赋值

运算
9、假如指针p已经指向变量x,则&*p相当于 ( C ) 。
A、x B、*p C、&x D、**p
10、两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是 ( A ) 。
main( )
{ int x;
scanf("%d",&x);
if(x++>5)printf("%d",x);
else printf("%d\n",x --); }
A、7和5 B、6和3 C、7和4 D、6和4

四、程序阅读题(20分,每题4分)
要求:阅读下列程序,将程序运行时的输出结果填写在答案栏内。
1. #include
void main()
{ char ch; int k=0;
for(ch='A';ch<'H';ch++,k++)
if(k%2==0) printf("%c ",ch);
printf("\n");
}
输出结果:( A )

2、#include
int x;
add( ) {
int y;
x=y=3;
}
main ( )
{ int y;
y=x=2;
add();
printf("x=%d y=%d\n",x,y);
} 输出结果:__x=3,y=2_____。

3、#include
main()
{char a[]=“fprogram”,b[]=”fortran”;
char *p,*q;
p=a;
q=b;
while(*p&&*q)
{if(*p==*q)
printf(“the two string are same:%c\n”,*q);
p++;
q++;
}
}
输出结果 ( the two string are same:f
The two string are:r )

4、 #include
void main( )
{ int k=0;
char c='A';
do {
switch (c++)
{ case 'A': k++; break;
case 'B': k--;
case 'C': k+=2; break;
case 'D': k=k%2; break;
case 'E': k=k*10; break;
default: k=k/3;
}
k++;
} while(c<'G');
printf("k=%d\n", k);
}
输出结果: ( k= )

5、#include
f(int x,int y)
{return(y-x);
}
main()
{int a=5,b=6,c=2;
int f(),(*g)()=f;
c=(*g)(a,b);
printf(“%d\n”,c);
}
输出结果 ( 1 ) 。
五、编程题(30分,每题10分)
1、设计一递归函数实现将任一十进制正整数转换成八进制数。
#include
main()
{int i;
Printf("输入任一十进制:");
Scanf(“%d”,&i);
Printf("%d(10)<==>%x(8)",i);
}



2、实现如下功能的函数
0 (x<-0.5)
y= 1 (-0.5<= x < 1)
10 x>1.0
#include
Main()
{int x,y;
Scanf("%d",&x);
If(x<-0.5) y=0;
If(x>1.0) y=10;
Else y=1;
Printf("x=%d,y=%d\n",x,y);
}


3、编一程序实现求所有不超过200的N值,N的平方是具有对称性质的回文数。所谓回文数就是将一个数从左向右与从右向左读是一样的,例如34543和1234321都是回文数。


一、判断题(10分)
1、对2、对3、错4、错5、对 6、错7、错8、错 9、错10、错
二、填空题(30分,,1到10题1分1空,10到18题2分1空)
1.2.5 2. a!=0&&b!=0 3. m=1b

4. windows 95 5. x[i]>='A'&&x[i]<='Z'
6.234567 7.文件的首纪录前 8、struct tree *Ltree,*Rtree 9. i<=100
10. char a[10]="continue"; 11. p*pow(1+r,5) 12. 'D' 13. 10、5
14.#define utol(ch) ch=ch>='A'&& ch<='Z' ? ch+'a'-'A':ch
15.首行第i+1个元素的地址,第i+1行的首地址,a[0][0]的值 16.p=(int*)mallo(n);
17. (-b+sqrt(b*b-4*a*c))/2/a 18. float(*fg)(float **,int,int);

三、单项选择题(在每小题的四个备选答案中选出一个正确的,10分))
1、A 2、B 3、C 4、B 5、D 6、A 7、A 8、B 9、C 10、A
四、程序阅读题(20分,每题4分)
1、 A C E G 2、 x=3 y=2
3、the two string are same:f
the two string are same:r
4、 K=8 5、1

《C语言程序设计》期末考试试卷及参考答案

相关文档
最新文档