资源描述
青海大学试卷(A卷)
系别: 班级: 学号: 姓名:
考试课程: 程序设计基础(C) 考试日期:2009 年 12月17日
注:所有答案均写在答题卡上,答在试卷上不得分,考试结束后试卷和答题卡一并交回
一.填空题(每空1分,共16分)
1.整型静态数组没有初始化,也没有赋值,此时数组元素的值均为 。
2.数组在内存中占 的存储区,用 代表其首地址。
3. 在函数内部定义的只在本函数内有效的变量叫 ,在函数以外定义的变量叫 。
4.调用一个函数时,实参变量和形参变量之间的数据传递是 ;若用数组名作为实参,则实际上传递给形参的是 。
5. 有这样的定义:static int a[5]={2,4,6,8,10};int *p; p=&a[0];则与p=&a[0]等价的语句 ,*(p+1)的值是 ,*(a+3)的值是 。
6.有说明char s1[40],s2[20]= "you are a teacher.";如果想从键盘上把字符串"I am a student."输入到数组s1中,函数调用的语句是 。 能把s2中的字符串接到s1中的字符串后面的函数调用的语句是 。
7.C语言中逻辑运算符 的优先级高于算术运算符。
8.在C语言中,声明枚举类型用关键字 开头。
9.在C语言中,文件的存取是以 为单位的,这种文件被称作 文件。
二.选择题(每小题2分,共40分)
1.可以在C语言中用做用户标识符的是( )。
A.else B.a_b1 C.for D.2cd
2.若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值是( )。
A.1 B.2 C.2.0 D.2.5
3.以下程序的输出结果是( )。
main( )
{ int m=10; printf("%d,%d,%d",--m,++m,++m); }
A.9,10,11 B.10,10,11 C.9,12,11 D.11,12,11
4.C语言中,逻辑"真"等价于( )。
A.大于零的数 B.非零的数 C.小于零的数 D.非零的整数
5.C语言程序的执行总是从( )开始。
A.编译预处理命令 B.main函数的入口
C.源程序的第一个函数 D.源程序的第一行语句
6.在C语言中,字符型数据在内存中以( )形式存放。
A.ASCII码 B.补码 C.反码 D.原码
7.a为5,执行下列语句后,b不为2的是( )。
A.b=a/2 B.b=6-(--a) C. b=a%2 D. b=a>3?2:1
8.若有float x;则sizeof(x)和sizeof(float)两种描述( )。
A.都正确 B.都不正确 C.前者正确 D.后者正确
9.若有定义char s=‘\092’;则该语句( )。
A.使s的值包含1个字符 B.定义不合法,s的值不确定
C.使s的值包含4个字符 D.使s的值包含3个字符
10.以下概念正确的是( )。
A.形参是虚设的,所以它始终不占用存储单位
B.实参与它所对应的形参同名时可占用一个存储单元
C.实参与它所对应的形参占用一个存储单元
D.实参与它所对应的形参占用不同的存储单元
11.以下程序的输出结果是( )。
void increment(void)
{ static int x=0; x++;printf("%d,",x) ;}
main( )
{ increment( );
increment( );
increment( );
}
A.1,1,1, B.3,2,1, C.1,2,3, D.x的值不确定
12.以下程序的输出结果是( )。
main( )
{int i,s=0;
for(i=1;i<=2;i++)
s=s+i*i*i;
printf("s =%d\n",s);}
A.s1 B.s=9 C.s=8 D. 值不确定
13.请选出以下程序的输出结果( )。
sub(int x, int y,int *z)
{ *z=y-x;}
main( )
{int a,b,c;
sub(10,5,&a);sub(7,a,&b); sub(a,b,&c);
printf("%d,%d,%d\n",a,b,c) ;}
A.5,2,3 B.-5,-12,-7 C.-5,-12,-17 D.5,-2,-7
14.以下程序的输出结果是( )。
#include <math.h>
main()
{ float a=-1,b=2;
printf("%.0f,%.0f\n",pow(b,fabs(a)),pow(fabs(a),b));}
A.2,1 B.2,2 C.1,2 D.以上三个都不对
15.下列选项中正确的语句组是( )。
A.char s[8] ;s={"Jianzhu"}; B.char *s; s={‘Jianzhu’};
C.char s[8] ;s="Jianzhu"; D.char *s; s="Jianzhu";
16.以下程序输出的结果是( )。
fun(int a,int b,int c)
{ c=a*b;}
main( )
{ int c;fun(4,3,c);printf("%d\n",c);}
A.无定值 B.1 C.6 D.0
17.以下程序段的输出结果是( )。
A.32,28,15 B.40,36,15 C.32,28,7 D.32,28,7.5
int x=20,y=40,z=30;
while(x<y) x+=4,y-=4;z/=2; printf("%d,%d,%d",x,y,z);
18.以下程序的输出结果是( )。
A.32 B.16 C.8 D.24
typedef union{ long x[2];int y[4];char z[8];}MYTYPE;
MYTYPE them;
main(){ printf("%d\n",sizeof(them));}
19.语句printf("%d\n",strlen("xini\0ng"));的输出结果是( )。
A.7 B.6 C.4 D.3
20.fread和fwrite函数常用来要求一次读入/输出( )数据
A.一个整数 B.一组 C.一个字节 D.一个实数
三.阅读下列程序,按题意填空(每空2分,共20分)
1.以下程序是判断某年(year)是否是闰年,请填空。
#include <stdio.h>
main()
{ int year;
printf("Please input year:");
scanf("%d",&year);
if((year%4==0 && year% 100 ① 0 ) ② year%400==0)
printf("a leap year.\n"; }
2.输入一行字符,分别统计出其中英文字母、空格、数字以及其它字符的个数。
#include <stdio.h>
main( )
{ char c;int letter=0,space=0,digit=0,other=0;
printf("Please Input:\n ");
while((c=getchar()) ③‘\n’)
{ if(c>=‘a’ ④ c<=‘z ⑤ c>=‘A’&& c<=‘Z’) letter++;
else if(c==‘ ’) space++;
else if(c>=‘0’ ⑥ c<=‘9’) digit++;
else other++; }
printf("%d, %d, %d, %d ", letter, space, digit, other );}
3.以下函数的功能是把两个整数指针所指的存储单元中的内容进行交换。请填空。
change(int *x, int *y)
{ int *t; *t=*y;*y=___⑦____;*x=__ ⑧______;}
4.用数组求Fibonacci数列前20个数,要求每行输出5个数据。
#include <stdio.h>
main( )
{ int i;int f[20]={1,1};
for(i=2;i<20;i++)
f[i]= ⑨ ;
for(i=0;i<20;i++)
{ if(i%5== ⑩ ) printf("\n");
printf("%12d",f[i]);
}
}
四.程序阅读题:(每题2分,共计8分)
1.有如下程序段:
int a, b; scanf("%d",&a);
do {b=a%10; printf("%d",b); a/=10;}while(a);
若输入整数246,则输出结果: 。
2.main( ){ int i=3; switch(i)
{ case 1:
case 2:printf("%d",i);
case 3:
case 4:
default:printf("OK");
}
}
程序输出结果: 。
3.以下程序的输出结果: 。
main()
{ int x=2;while(x--);printf("%d\n",x);}
4.有以下程序:
struct s
{ int num ;
char name[20];
int age;
};
main( )
{ struct s stud[3]={{101, "Li",18},{102, "Wang",19},{103, "Zhang",21}};
fun(stud+2);
}
fun(struct s *p)
{ printf("%d\n",(*p).num);} 输出结果: 。
五.编程题(共16分)
1.(10分)从键盘上向一维数组输入10个整型数据,找出这些数据中的最大值。
2.(6分)编写一个自定义函数root( ),用来求3个实数的乘积的平方根。
要求:数据的输入、输出在主函数中实现。
展开阅读全文