新浪博客

近年《程序设计基础》期末试卷

2016-01-21 20:06阅读:
一、选择题(每题2分,共40分)

1)以下说法中正确的是______ .
A)continue语句的作用是结束整个循环的执行
B)只能在循环体内和switch语句体内使用break语句
C)在循环体内使用break语句或continue语句的作用相同
D)从多层循环嵌套中退出时,只能使用goto语句

2)以下为不合法的用户标识符的是______ .
  Anumbersum BNUMBERSUM C3number_sum Dnumbersum

3)设int n=10,i=2;则赋值运算n%=i+2执行后,n的值是______ .
A0 B1 C2 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;
}
  程序运行后的输出结果是______ .
  A0,0 B0,1 C1,0 D1,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);
}
}
AZho BHua Cg H DGuo

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,导致错误结果的程序行是______ .
  As=s+1.0/n; Bs=0;
  Cprintf('%6.4f',s); Dfor(n=1;n<11;n++);

12)已定义ch为字符型变量,以下赋值语句中错误的是______ .
  Ach=100; Bch='\x15'; Cch='\'; Dch=NULL;

13C语言中函数返回值的类型由______ .决定的。
A) return语句中的表达式类型 B) 调用该函数的主调函数的类型
C) 调用函数时临时决定 D) 定义函数时所指定的函数类型

14若有说明 int xy;不能实现以下函数关系的程序段是______ .
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

17fun函数前面应该写哪种类型

______ fun ( double x )
{ double y;
y= 3*x-4;
return y;
}

Aint Bfloat Cvoid Ddouble

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)两次运行下面的程序,如果从键盘上分别输入64,则输出结果是〖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是完数。

我的更多文章

下载客户端阅读体验更佳

APP专享