近年《程序设计基础》期末试卷
2016-01-21 20:06阅读:
一、选择题(每题2分,共40分)
(1)以下说法中正确的是______
.
A)continue语句的作用是结束整个循环的执行
B)只能在循环体内和switch语句体内使用break语句
C)在循环体内使用break语句或continue语句的作用相同
D)从多层循环嵌套中退出时,只能使用goto语句
(2)以下为不合法的用户标识符的是______
.
A)numbersum
B)NUMBERSUM
C)3number_sum
D)numbersum
(3)设int
n=10,i=2;则赋值运算n%=i+2执行后,n的值是______
.
A)0 B)1
C)2 D)
5
(4)定义 int
y=7,z=5,执行语句(++z>=y- -)?++z:y- -后
y 的值______ .
A)
6 B)
7 C)
5 D)
4
(5)有以下程序
int main()
{ int a=1,b=2,m=0,n=0,k;
k=(n=b
printf('%d,%d',k,m);
return
0;
}
程序运行后的输出结果是______
.
A)0,0
B)0,1 C)1,0
D)1,1
(6)凡是函数中未指定存储类别的局部变量其隐含的存储类别是______
.
A)自动(auto)
B)静态(static)
C)外部(extern)
D)寄存器(register)
(7)下列代码段将打印出 ______.
#include
int main (void)
{
char a[50]='Zhong Hua Ren Min Gong He Guo',*p;
for(p=a+6;p
{
printf('%c',*p);
}
}
A、Zho B、Hua
C、g H D、Guo
(8)数组 int
a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12}中,a[2][2]的值是______
.
A) 9
B)
7
C) 8
D)
12
(9)下面关于运算符优先顺序的描述中正确的是______
.
A)关系运算符< 算术运算符<
赋值运算符< 逻辑与运算符
B)
赋值运算符< 逻辑与运算符<
关系运算符< 算术运算符
C)
逻辑运算符< 关系运算符<
算术运算符< 赋值运算符
D)算术运算符< 关系运算符<
赋值运算符< 逻辑与运算符
(10)有以下程序
int main()
{
int
k=0,n=3;
for( ;
n!=k;)
{
n--;
if(n%2!=0)
continue;
k++;
}
printf('%d,%d',k,n);
return 0;
}
程序运行后的输出结果是______
.
A) 1,
1 B) 2, 2
C) 3, 3
D) 4, 4
(11)要求以下程序的功能是计算:s=
1+1/2+1/3+……+1/10=2.9290
int main()
{ int n; float
s;
s=0;
for(n=1;n<11;n++);
s=s+1.0/n;
printf('%6.4f',s);
return 0;
}
程序运行后输出结果为0.0909,导致错误结果的程序行是______
.
A)s=s+1.0/n;
B)s=0;
C)printf('%6.4f',s);
D)for(n=1;n<11;n++);
(12)已定义ch为字符型变量,以下赋值语句中错误的是______
.
A)ch=100;
B)ch='\x15'; C)ch='\';
D)ch=NULL;
(13)C语言中函数返回值的类型由______
.决定的。
A) return语句中的表达式类型
B) 调用该函数的主调函数的类型
C) 调用函数时临时决定
D) 定义函数时所指定的函数类型
(14)若有说明 int
x,y;不能实现以下函数关系的程序段是______
.
y=-1 (x<0)
y=0 (x=0)
y=1 (x>0)
A) if (x<0) y= -1 ;
B) y= -1;
else if(x= =0) y=0;
if (x!=0)
else y=1;
if
(x>0) y=1;
else
y=0;
C) y=0;
D)
if (x>=0)
if (x>=0)
if
(x>0) y=1;
{if (x>0) y=1;}
else
y=0;
else y= -1;
else y= -1;
(15)以下while循环____次。
#include
int main()
{
int num=0;
while(num<=2)
{num++;printf('%d',num);}
}
A) 1 2 3 4 B) 1 2 3 C) 1 2
D) l
(16)以下程序的输出结果是______
.
int main()
{
int num= 0;
for(;num<4;)
{ num++;
printf('%d
',num);
}
return 0;
}
A) 1 2 3 4
B) 1 2 3 C)1 2 D)
l
(17)fun函数前面应该写哪种类型
______ fun ( double x )
{
double y;
y= 3*x-4;
return y;
}
A)int型
B)float型
C)void型
D)double型
(18)定义如下数组:
int i;
int x[3][3]={1,2,33,4,5,62,73,86,91};
则下面语句的输出结果是_________
for(i=1;i<3;i++)
printf(“ %d”,x[i][3-i]);
A) 2 33
B) 33 4
C) 62 86
D) 5 86;
(19)设有以下函数:
int f ( int
a)
{ static int
b=3;
b=a+b;
return(b);
}
如果在下面的程序中调用该函数,则输出结果是______
.
int main()
{ int
i;
for(i=1;i<4;i++) printf('%d ',f(i));
return
0;
}
A) 1 2 3 B) 0 1
2 C) 1 3 6
D) 1 2 3 4
(20)若有以下定义和语句:
double r=99,*p=&r;
*p=r;
则叙述中正确的是______ .
A)
以上两处的*p含义相同,都说明给指针变量p赋值
B) 在“double
r=99,*p=&r;”中,把r的地址赋给了p所指的存储单元
C)
语句“*p=r;”把变量r的值赋给指针变量p
D)
语句“*p=r;”取变量r的值放回r中
二、填空题(每空3分,共30分)
(1)两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是〖1〗
。
#include
int main(void)
{
int x;
scanf ('%d',&x);
if (x++>5) printf('%d',x);
else printf('%d',- -x);
return 0;
}
(2)以下程序运行后的输出结果是〖2〗
。
#include
int main (void)
{ int x,*p,**pp;
x=7;
p=&x;
pp=&p;
printf('x=%d',(*p)*(**pp));
return 0;
}
(3)以下程序运行后的输出结果是〖3〗
。
#include
int main (void)
{
char
*ps='thisisabook';
int
n=8;
ps=ps+n;
printf('%s',ps);
return
0;
}
(4) 以下程序运行后的输出结果是〖4〗
#include
#include
int main (void)
{
char a[] = 'Zhong Guo';
char b[20] , *p1, *p2;
p1 = a; p2 = b;
for(; *p1 != '\0'; p1++, p2++)
*p2 = *p1;
*p2 = '\0';
printf('string a is: %s', a);
printf('string b is: ');
p2 = b;
puts(p2);
return 0;
}
(5) 以下程序运行后的输出结果是〖5〗
#include
#include
int main(void)
{
char *p [
]={'Array','hello','break','ACM','Arrow'};
int i;
for(i=0;i<5;i++)
{
if(*(*(p+i)+2)=='r')
puts(p [i]);
}
return
0;
}
(6) 以下程序运行后的输出结果是〖6〗
#include
int main (void)
{
int max(int a,int b);
int x=2,y=6,z;
z=max(x,y);
printf('maxnum=%d',z);
return 0;
}
int max(int a,int b)
{
if(a>b)
return a;
else
return b;
}
(7) 以下程序运行后的输出结果是〖7〗
#include
int main(void)
{
int a,b,c,d,x;
a=c=0;
b=x=1;
d=10;
if(a) d=d-5;
else if(!b)
if(!c) x=5;
else x=25;
printf('d=%d,x=%d',d,x);
return 0;
}
(8) 以下程序运行后的输出结果是〖8〗
#include
int swap(int *p1, int *p2)
{
int p;
p = *p1;
*p1 = *p2;
*p2 = p;
return 0;
}
int main (void)
{
int a=17, b=79;
int *pointer_1, *pointer_2;
pointer_1 = &a; pointer_2 = &b;
if (a
printf('%d,%d',a,b);
return 0;
}
(9) 以下程序运行后的输出结果是〖10〗
#define S(r) r*3
#include
int main (void)
{
int a,area;
a=3;
area = S(a+a*2);
printf('area=%d', area);
return
0;
}
(10) 以下程序运行后的输出结果是〖10〗
#include
int main (void)
{
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;
}
三、程序设计题(每题10分,共30分)
1.
编程,输入一个实数x,根据下式计算并输出y值。
2.
输入10个学生的信息,输出最高分学生的信息和全部学生的平均成绩。
要求:
(a)学生信息包括:学号、姓名、成绩;
(b)学生信息必须采用结构体类型;
(c)用指针完成操作。
3.
输入正整数n,将1~n中的所有完数一个占一行保存到文本文件”d:\\result.txt”中。
要求:完数的判断必须采用函数形式。
说明:完数是指一个正整数,它除本身之外的所有因子和等于自身。例如:正整数6除
自身之外的因子为1,2,3,
6 = 1+2+3
所以6是完数。