当前位置:文档之家› C语言试卷2及答案

C语言试卷2及答案

扬州大学试题纸系课程 C语言程序设计(A)卷2002—2003学年第2学期班级_________学号________姓名__________得分___________一、选择题(每题分,共30分):1、已知:char a; int b; float c; double d;则执行语句:c=a+b+c+d; 后,变量c的类型为。

A. charB. intC. floatD. double2、已有定义int x; float y; 且执行scanf(“%2d%f”,&x,&y);语句时,从第一列开始输入数据12345 67<回车>,则y的值是。

A. 无定值B. 345.00000C.D.3、设有以下程序段int x=0; s=0;while (!x!=0) s+=++x;printf(“%d”,s);则。

A. 运行程序段后输出0B. 运行程序段后输出1C. 程序段中的控制表达式是非法的D. 程序段执行无限次4、若i为整型变量,则以下循环执行次数是。

for(i=2; i==0;) printf(“%d”, i--);A. 无限次B. 2次C. 1次次5、假设char ch=’a’, *p=&c h; ,以下语句中,有语法错误的是 .A. (*p)++;B. ch+=—‘a’+’A’;C. toupper(ch)=ch;D. ch++;6、若说明:char *language[ ]={“VFP”,”C”,”VB”,”VC”,”JAVA”};则language[2]的值是。

A. 一个字符B. 一个地址C. 一个字符串D. 一个不定值7、C语言程序中,当调用函数时。

A. 实参和虚参可以共用存储单元B. 实参和虚参各占一个独立的存储单元C. 可以由用户指定是否共用存储单元D. 由计算机系统自动确定是否共用存储单元8、在程序中要使用语句:printf(“%s\n”, STRING);输出提示信息:“OK! ”(包括双引号),则应使用宏定义语句。

A. #define STRING “OK!”B. #define STRING “”OK!””C. #define STRING \”OK!\”D.以上三个答案都是错误的9、数组和链表都可以用于存储一组数据,以下说法不正确的是_____________。

A. 数组占用连续的一块存储区域,链表可能占用若干不连续的存储区域B. 数组和链表所占用的存储区域均不能在程序运行期间动态分配C. 数组中的数据可以随机存取或顺序存取,链表中的数据只能顺序存取D. 数组的长度是固定的,链表的长度是不固定的。

10、已知语句FIL E *fp; char ch= ‘c’;fp=fopen(“”,”w”);如果需要将ch的值保存到一个磁盘文件中,则以下函数调用形式中,正确的是_____________。

A. fprintf(“%c”,ch);B. fprintf(“%c”,ch, fp);C. fprintf(fp,”%c”,ch);D. fprintf(“”,”%c”,x);11、以下标识符中,不能..作为合法的C用户定义标识符的是。

A. ForB. printfC. getcharD. sizeof12、设p为指向结构体变量的指针,num为该结构体中的一个整型成员,y为一整型变量,则y=++p->num;与等价。

A. ++p;y=p->num;B. y=(++p)->num;C. ++(p->num); y=p->num;D. y=p->num;++y;13、若要对a进行++运算,则a应具有下面说明。

A. int a[3][2]B. char *a[ ]={“12”,”ab”};C. char (*a)( );D. int b[10], *a=b;14、以下程序段运行后,a,b的值是int a,b,d=241;a= d/100%9;b=(-1)&&(-1);A. 6,1B. 2,1C. 6,0D. 2,015、以下正确的说明语句是。

A. int *b[ ]={1,2,3};B. int a[3]={1,2,3},*b[3]={a[0],a[1],a[2]};C. int a[3],*b[3]={&a[0],&a[1],&a[2]};D. int a[3][2],(*b)[3];b[0]=&a[2][1];16、下面语句,合法是。

A. scanf(“%7.2f”,&x);B. b=getchar(a);C. if((a=b;)>0) t=a;D. printf(“%”,”CHINA”);17、下述程序段中,无语法错误.....的是。

A. int a=2,b=0;B. char a=’A’,b=0;switch(a) switch(a){ case b+1:a--;break; { case ‘A’:b++;break;case b+3:a++;break; case -1 : b=3;} }C. int a=2,b=5;D. #define N 10switch(b) int a=2,b=0;{ case b>0: a=1;break; switch(a)case b= =0:a=0;break; { case N-9: b++;break;} case 1: b=1;break; }18、以下说法不正确的是。

A. 在不同函数中可以使用同名变量B. 形式参数是局部变量C. 在函数内定义的变量只在本函数范围内有效D. 在函数内的复合语句中定义的变量只在本函数范围内有效19、在程序的执行过程中,该程序的某一个函数f中说明的static型变量x有这样的特性。

A. x存在于函数f被调用期间且仅能被函数f所用B. x存在于整个程序执行过程中且仅能被函数f所用C. x存在于函数f被调用期间且可被所有函数所用D. x存在于整个程序执行过程中且可被所有函数所用20、设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是。

A. c=*p1+*p2;B. p2=c;C. p1=p2;D. c=*p1*(*p2);二、基本概念题(每题2分,共10分)1、一个C语言的语句至少应包含一个。

一个C源程序至少应包含一个。

2、当程序读写数据文件时,需要有声明语句FILE *fp;在该声明语句之前必须包含头文件。

3、 char *p()说明的含义是。

4、只能在循环体中出现的语句是________________。

5、C语言可以处理的文件类型是________文件和________文件。

三、阅读程序写出程序结果(每空2分,共20分):1、若有int a=1; printf(“%d\n”,a*=a/=-a);则输出结果为。

2、下面程序的运行结果是。

main(){ int i, j=1;for(i=j==2; i<=2*j; i++)switch (i/j+1){ case 0:case 1: printf(“**”);break ;case 2: printf("##");}}3、设有以下的宏定义MAX,程序的运行结果为。

#define MAX(a,b) (a>ba+1:b)+1main(){ int i=16,j=8,k;printf("%d\n”,MAX(i,j));}4、以下程序输出结果是__________。

enum week{SUN=7,MON=1,WED,TUS,THS,FRI,SAT};main(){ printf(“%d”,hour(FRI,SUN)); }hour(int x,int y){ if (y>x) return 24*(y-x);else return –1;}5、程序执行输出的第一行结果是,第四行是。

#include<>char b[ ]=”program”, *a=”PROGRAM”;main(){ int i=0;printf(“%c%s\n”,*a, b+1);while(putchar(*(a+i)))i++;printf(“\ni=%d\n”,i);while(--i) putchar(*(b+i));}6、执行以下程序,输出结果是。

void f1(int x, int y, int *sum ){ *sum=x+y;x++; y++;}main(){ void (*f)(); int a=10,b=20, c=100;f=f1; f(a, b, &c);printf(“%d, %d, %d\n”, a, b , c);}7、程序:struct s{long int num; char *name; int *n;}*p,*q;int d[5]={100,200,300,400,500};struct s arr[5]={85001, "wang",&d[0],81005,"wu",&d[1],99003,\"zhang",&d[2],96004,"tang",&d[3],99001,"meng",&d[4]};main(){ p=q=arr;printf("%ld\n",++p->num); p++;q+=3;printf("%d\n",*q->n);}程序输出结果的第一行是;第二行是。

8、程序:long f(long x){ if(x<100) return x%100;else return f(x/100)*10+x%10; }main(){ printf(“The result is :%d\n”,f(987654));}四、完善程序题(每空2分,共30分):1、假设a数组中的数据已按由小到大的顺序存放,以下程序可把a数组中相同的数据删得只剩下一个,然后输出a 数组。

#define M 10main(){ int a[M], i, j, n;for( i=0; i<M; i++)scanf(“%d”,&a[i]);n=i=M-1;while( i>=0){ if(a[i]==a[i-1]){ for( j= __(1)____ ; j<=n; j++)a[j-1]=___(2)_____;n--; }i--;}for(i=1; i<=n+1; i++)printf( “%4d”, ___(3)______);}2、下面的程序利用公式fx(x)=1-x2/2!+x4/4!-x6/6!+……+(-1)n x2n/(2n)!计算fx(x)的值。

相关主题