命题人:李寒松审核人:审核日期:
2009至2010学年第2学期期末考核题卷
计算机系c语言程序设计课程(闭卷)(A卷)
班级:姓名:学号:
项目一二三四五六总分
得分
评分人
提醒考生注意:考试作弊会导致严重后果!
填空题答案填写表:
第1题第2题第3题第4题第5题
选择的答案填写表:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
一:填空(每小题2分,共10分)
1):若有a=2,b=4,c=3,则表达式a>=b&&b>c的值是 0 。
2):打开文件的函数是 fopen() 。
3):若有:int a=3,*b=&a;则a=(*b)*a,则a的值是 9 。
4):已知字母a的ASCII码为 097 。
5):2&3=_____2______。
二.选择题 (每小题2分,共40分)
1).设int b[ ]={1,2,3,4},y,*p=b;
则执行语句y=*p++;之后,变量y的值为( A )
A)1 B)2 C)3 D)4
2).下列赋值语句中正确的是:d
int a[3] = { 1, 2, 3 }, *p;
A) p=&a; B) **p=a; C) *(a++)=a; D) a[1]=5;
3).已知字母A的ASCII码为十进制65,下面程序段的运行结果为( a )。
char ch1,ch2;
ch1= ‘A’+5-3; ch2= ‘A’+6-3;
printf(“%d, %c\n”, ch1,ch2);
A)67, D B)B, C C)C, D D)不确定值
4).对于以下结构定义:
struct {
int len;
} p1,*p;
P=&p1;则引用错误的是( d )。
A) p->len B) p1.len C) (*p).len D) p1->len
5).设实型变量f1,f2,f3,f4的值均为3,整型变量m1,m2的值均为2。表达式(m1=(f1>=f2))&&(m2=(f3<=f4));的值是( b )。
A). 出错 B).1 C).2 D). 0
6).循环 for(i=1,j=6; i!=j; ) s=i+j; 循环体将执行
A) 2次 B) 3次 C) 4次 D) 以上均不是
7).1<<2的结果是:( c )。
A) 8 B)9 C)4 D)5
8). 以下if语句书写正确的是( c )。
A)if(x=0;) B)if(x>0)
printf(”%f”,x); {x=x+1; printf(”%f”,x);}
else printf(”%f”,-x); else printf(”%f”,-x);
C)if(x>0); D)if(x>0)
{x=x+1; printf(”%f”,x);} {x=x+1; printf(”%f”,x) }
else printf(”%f”,-x); else printf(”%f”,-x);
9).若变量j已正确定义,表达式 (j=3, j++) 的值是( a )。
A)3 B) 4 C)5 D)0
10).数组定义为 int a[3][2]={1, 2, 3, 4, 5, 6},数组元素_b____的值为6。
A、a[3][2]
B、a[2][1]
C、a[1][2]
D、a[2][3]
11).要调用数学函数时,在#include命令行中应包含( c )。
A)”stdio.h” B)”string.h” C)”math.h” D)”ctype.h”
12). 下列表达式中,与k=n++完全等价的是(b)
A). n=n+1,k=n; B). k=n,n=n+1; C).k=++n; D).k+=n+2;
13) 若有以下说明语句:
int a[5]={1,2,3,4,5};
则a[0]+a[1]正确的是( c )。
A).1 B). 2 C).3 D). 4
14).对于如下说明,语法和语义都正确的赋值是( c )。
int c, *s, a[]={1, 3, 5};
A)c=*s; B)c[0]=a++; C)s=&a[1]; D)c=a;
15).关闭文件的函数是( a )
A)fclose(); B)fgets(); C)fscanf(); D)fwrite()
16)在一个源文件中定义的全局变量的作用域为( c )。
A).本文件的全部范围 B).本程序的全部范围
C). 从定义该变量开始至本文件结束 D). 本函数的全部范围
17)C语言中各种基本数据类型的存储空间长度排列为( a )。
A). char≤int≤long≤float≤double B).double≤float≤long≤int≤char
C). char≤long≤int≤float≤double D).float≤int≤long≤char≤double
18)下面程序的输出是( d )。
main( )
{int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
printf("%d\n",*(p+3));
}
A).3 B).2 C).1 D).4
19)若有以下的说明,则对初值中整数2的引用方式为( b )。
static struct
{char ch;
int i;
double x;
}arr[3]={{'a',3,45},{'b',2,7.98},{'c',5,1.93}};
A).arr[1].ch B).arr[1].i C).arr.i D).arr[2].I
20)当调用函数时,实参是一个数组名,则向函数传递的是( c )。
A)数组的长度 B)数组每一个元素的地址
C)数组的首地址D)数组每个元素中的值
三、写出下面程序段执行后的结果,注意输出格式。(每小题5分共20分)
1)若输入 3 1 2 3 <回车> ,
则以下程序的输出结果是______。
#include "stdio.h"
void main()
{ int i, j, n, a[10];
scanf("%d", &n);
for (i=0; i scanf("%d",&a[i]); for (i=0; i for (j=0; j printf("%d, ", a[(i+j)%n]); } 2) main( ) { int i; for(i=1;i<=5;i++) switch(i%5) { case 0: printf(“*”) ; break; case 1: printf(“#”) ; break; default: printf(“\n”); case 2: printf(“&”); } }的执行结果是: 3) main() {int i; for(i=1;i<=50;i++) if((i%8= =0) printf(“%3d,”,i); }的执行结果是: 4) main() { int a=9,b=5,*p1=&a,*p2=&b,c; c=*p1;*p1=*p2;*p2=c; printf("%d,%d",a,b); 的执行结果是: 四、程序填空(10分) 输入以 -1结束的一批整数,输出其中的最大值。 例如: 输入 -3 -8 -10 -1 后,输出:max=-3。 #include void main( ) { int max, x; scanf("%d", &x); if(x!=-1){ ; while( ){ if(max ) ; } printf("max=%d\n", max); } } 五、编程(10分) 结构体定义如下: struct student{ int NO; char name[20]; struct student *next; }*head; 设计以head为头指针动态建立链表的子函数,以NO输入0为建立链表的结束条件。 六、编程(10分) 引用第五题建立链表的函数,实现链表节点的删除的函数,删除NO为1000的节点,链表中没有的话则输出not find.并书写主函数调用此两个函数。