南京信息工程大学试卷201120122C语言程序设计试卷文科B

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

南京信息工程大学试卷201120122C语言程序设计试卷文科B
南京信息工程大学试卷(文科)
2011 - 2012 学年第 2学期C语言程序设计课程试卷( B 卷) 本试卷共 8 页;考试时间 120分钟;任课教师课程组;出卷时间 2012 年6月
学院专业2011 年级班学号姓名得分
一、单项选择题 (每小题 1分,共 15分)
1.以下叙述不正确的是
A)一个C源程序可由一个或多个函数组成 B)一个C源程序必须包含一个main函数C)C程序的基本组成单位是函数 D)在C程序中,注释说明只能位于一条语句的后面2.下面四个选项中,均是不合法的用户标识符的选项的是
A) A p_o do B)float lao _A
C) b-a goto int D) _123 temp INT
3.判断字符型变量c1是否为大写字母的正确表达式为
A)’A’<=c1<=’Z’ B)(c1>=A)&&(c1<=Z)
C)(‘A’>=c1)||(‘Z’<=c1) D)(c1>=’A’)&&(c1<=’Z’)
4.设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为
A)float B)char
C)double D)不确定
5.在C语言中,要求运算数必须是整型的运算符是
A)/ B)++ C)!= D)%
6. 下列的语句中定义了一个能存储20个字符的数组
A) int a[21]; B) char b[20];
C) char c[21]; D) int d[20];
7.若定义x为双精度型变量,则能正确输入x值的语句是。

A)scanf(“%f”,x); B)scanf(“%f”,&x);
C)scanf(“%lf”,&x); D)scanf(“%lf”, x);
8.以下不正确的说法是。

A)实参可以是常量,变量或表达式
B)形参可以是常量,变量或表达式
C)实参可以为任意类型
D)如果形参和实参的类型不一致,以形参类型为准
9.已有定义int k=2;int *ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能
正确执行的赋值语句是。

A )k=*ptr1+*ptr2
B )ptr2=k
C )ptr1=ptr2
D )k=*ptr1*(*ptr2)
10.下面程序段
int k=2;
while (k!=0) {printf(“%d”,k);k --;}
则下面描述中正确的是。

A )while 循环执行2次
B )循环是无限循环
C )循环题语句一次也不执行
D )循环体语句执行一次
11.已知一个函数的定义如下:
double fun(int x, double y)
{ …… }
则该函数正确的函数原型声明为:
A )double fun (int x,double y)
B )fun (int x,double y)
C )double fun (int ,double );
D )fun(x,y) ;
12.若调用一个非void 类型的函数,且此函数中没有return 语句,
则正确的说法是。

A )该函数没有返回值
B )该函数返回若干个系统默认值
C )能返回一个用户所希望的函数值
D )返回一个不确定的值
13.若已定义char s[10];则在下面表达式中不表示s[1]的地址是。

A )s+1
B )s++
C )&s[0]+1
D )&s[1]
14.当定义一个结构体变量时,系统分配给它的内存是。

A )各成员所需内存量的总和
B )结构中第一个成员所需内存量
C )成员中占内存量最大的容量
D )结构中最后一个成员所需内存量
15.若执行fopen()函数时发生错误,则函数的返回值是。

A )地址值
B )0
C )1
D )EOF
二、基础知识填空(每空2分,共20分)
1.在C 语言中,没有专门的输入输出的语句,其输入输出都是用函数来完成的,格式化输入操作是由库函数 [1] 完成的。

2.三种基本程序结构是循环结构、选择结构和 [2] 。

3.数学表达式y
x b a -+2
2的C 语言表达式是 [3] 4. 设有数组定义: char array []="China"; 则数组 strlen(array)为 [4]
5.y 是整型变量,写出y 是非负数的逻辑表达式是: [5] 。

6.continue 语句的作用是结束 [6] 循环。

7.函数调用语句:fun((a,b),(c,d,e))实参个数为 [7] 。

8.若有#define ADD(x) x+x
int m=1,n=2,k=3,sum ;
sum = ADD(m+n)*k ;
则sum 的值为 [8]
9.若有定义:
struct num{
int a ;
int b ;
float f ;
} n = {1,3,5.0} ;
struct num *pn = &n ;
则表达式(*pn).a+pn->f的值是 [9] 。

10.C语言流式文件的两种形式是文本形式和 [10] 。

三、程序阅读题(每题3分,共24分)
1.输入10,20回车后,下面程序执行结果是
#include
void swap(int *,int *);
int main()
{
int a, b;
scanf(“%d,%d”,&a,&b);
swap (&a,&b);
printf(“a=%d,b=%d\n”,a,b);
return 0;
}
void swap (int *p1,int *p2)
{
int p;
p=*p1;
*p1=*p2;
*p2=p;
}
2.以下程序输出结果是。

#include
int main ( )
{
int x=1,y=0,a=0,b=0;
switch(x)
{
case 1:switch (y)
{
case 0 : a++ ; break ;
case 1 : b++ ; break ;
}
case 2:a++; b++; break;
case 3:a++; b++;
}
printf(“a=%d,b=%d”,a,b); return 0;
}
3.输入6,下面程序的执行结果是:#include
unsigned int fact (unsigned int ); int main()
{ unsigned int n,fac;
scanf("%u",&n);
fac=fact (n);
printf("%u\n",fac);
return 0;
}
unsigned int fact (unsigned int n) {
unsigned int result;
if(n==1||n==2)
result=1;
else
result= fact(n-1)+fact(n-2); return result;
}
4.下面程序的输出结果是。

#include
int fun(int);
int main()
{ int i,a=5,sum;
for(i=0;i<2;i++)
printf("%d %d\n",i,sum);
return 0;
}
int fun(int a)
{
int b=0;
static int c=3;
b++;
c++;
return(a+b+c);
}
5.下面程序运行的结果是
#include
void copy_string(char [],char []);
int main()
{
char a[]="I am a teacher.";
char b[]="You are a student.";
copy_string(a,b);
printf("%s\n%s\n",a,b);
return 0 ;
}
void copy_string(char from[],char to[]) { int i=0,j=0; for(;from[i]!='\0';i++,j++)
to[j]=from[i];
to[j]='\0';
}
6.下面程序执行的结果是
#include
#define M 10
void sort(int x[], int );
int main()
{ int i,a[10]={3,7,9,11,0,6,7,5,4,2};
sort(a,M);
for(i=0;i<m;i++)< p="">
printf("%d,",a[i]);
printf("\n");
return 0;
}
void sort(int x[],int n)
{
int i,j,t;
for(i=0;i<n;i++)< p="">
for(j=i;j<=n-1-i;j++)
if( x[j]<x[j+1])< p="">
{
t=x[j];
x[j]=x[j+1];
x[j+1]=t;}
}
}
7.下面函数的功能是
int strcmp(char *s,char *t)
{
while (*s && *t && (*s == *t))
{
s++;
t++;
}
return *s - *t;
}
8.若输入253,则下面程序运行的结果是。

#include
long fun(long);
int main( )
{
long x;
scanf("%ld",&x);
printf("\n%ld\n",fun(x));
return 0;
}
long fun (long data)
{
long k =1;
do
{
k*=data%10 ;
data/=10 ;
} while(data) ;
return (k);
}
四、程序填空题(每空2分,共20分)
1.以下程序输出a,b,c三个整数,并按从大到小排序,请完善程序。

#include
int main()
{ int a,b,c,t;
scanf("%d %d %d",&a,&b,&c);
if( [1] )
{
t=a; a=b; b=t;
}
if(a<c)< p="">
{
[2] ;
a=c; c=t;
}
if(b<c)< p="">
{
t=b;
[3] ;
c=t;
}
printf("%d,%d,%d\n",a,b,c);
return 0;
}
M 矩阵的转置,请完善程序。

2.下面程序是实现N
#include
#define M 3
#define N 4
void tran(int x[][N],int y[][M]); int main()
{
int i,j,a[M][N], [4] ;
for(i=0;i<m;i++)< p="">
for(j=0;j<n;j++)< p=""> scanf("%d",&a[i][j]);
tran(a,b);
for(i=0;i<n;i++)< p=""> {
for(j=0;j<m;j++)< p=""> printf("%4d",b[i][j]);
printf("\n");
}
return 0;
}
void tran(int x[][N],int y[][M]) {
int i,j;
for(i=0;i<m;i++)< p="">
for(j=0;j<n;j++)< p=""> [5] ;
}
3. 以下程序是用来输入M个整数,并存放在数组中,找出最大数与最小数所在的下标位置,并把两者对调,然后输出调整后的5个数。

#include
#define M 10
int main(){
int a[M], t, i, maxi, mini;
for(i=0; i<="" p="">
scanf("%d", &a[i]);
mini = maxi = 0;
for(i=1; i<="" p="">
if( [6] )
mini = i;
if(a[i]>a[maxi])
[7] ;
}
printf("最小数的位置是:%3d\n", mini);
printf("最大数的位置是:%3d\n", maxi);
t = a[maxi];
[8] ;
a[mini] = t;
printf("调整后的数为: ");
for(i = 0; i < M; i++)
printf("%d ", a[i]);
printf("\n");
return 0;
}
4.以下程序的功能是计算函数(,,)x y z y F x y z x y z y
++=+--,请填空使程序完整。

# include [9] ;
int main ( )
{
float x,y,z,f ;
scanf(“%f,%f,%f”,&x,&y,&z);
f = fun (x+y,x-y); f += fun ( [10] );
printf(“f=%d”,f);
return 0;
}
float fun(float a,float b)
{
return (a/b) ;
}
六、编程题(第1小题9分,第2小题12分,共 21分)
1.输入一个无符号整型数n ,求!!3!2!1n ++++
2.设一个班级有30个人,学生信息包括姓名、学号和三科成绩,编程求每个人的三门课程的平均成绩和全班总平均成绩,并输出学生平均成绩高于全班总平均成绩的学生信息(姓名、学号、三科成绩和平均成绩)。

</n;j++)<>
</m;i++)<>
</m;j++)<>
</n;i++)<>
</n;j++)<>
</m;i++)<>
</c)<>
</c)<>
</x[j+1])<>
</n;i++)<>
</m;i++)<>。

相关文档
最新文档