试卷3一、单项选择题(共20小题;每小题1分,共20分)1、下列常量不合法的是()。
A.1.5E-2 B.‘BASIC’C.0x12 D.“\\good”2、下列变量名中不合法的是()。
A.iCount B.Stu_NO C.INT D.vc++3、设变量已正确定义并赋值,以下正确的表达式是()。
A.b=7++ B.x=3,++y C.a=7%3.0 D.x=y+1=24、表达式sizeof(double)-sizeof(3.1f)+3/2的值是()。
A.4 B.5 C.5.5 D.1.55、下列各语句序列判别变量a、b的大小,若a<b则交换它们的值,其中正确的是()。
A.if (a<b) {t=a; a=b; b=t;} B.if (a<b) a=b; b=a; C.if(a<b) {a=b; b=a;} D.if(a<b) t=a; a=b; b=t;6、已知有程序段:int a=1,*p=&a,**q; q=&p; **q=3;printf("%d\n",a);则该程序段正确执行后输出结果为()。
A.1 B.3 C. 该程序段有语法错 D. 该程序段没有输出结果7、若有说明:int *p,m=3,n;,则以下正确的程序段是()。
A.p=&n;scanf("%d",&p); B.p=&&n;scanf("%d",*p);C.scanf("%d", &n);*p=n; D.p=&n;*p=m;8、设有以下说明语句,则下面的叙述中不正确的是()。
typedef struct student{ long StuNO; char Stuname[9];char sex;float cscore;}STU;A.typedef是给类型起别名B.STU是结构变量名C.StuNO是结构体STU的一个成员D.STU是结构类型名9、有定义或声明:int *myf(float x, long y);,若以下选项中的正确的是()。
A. myf是指针数组;B. myf是数组指针;C. myf是指针函数;D. myf是函数指针;10、C语言中函数返回值的类型是由()决定的。
A.传递给函数的实参类型B.return语句中的表达式类型C.调用该函数的主调函数类型D.定义函数时所指定的函数返回值类型11、若有宏定义:#define FUN(x) x%x,则表达式FUN(2+3)的值为()。
A.5 B.0 C.6 D.712、设有定义语句:char c1=32,c2=32;则以下表达式中值为0的是()。
A. c1^c2B. c1&c2C.~c2D.c1|c213、若有以下定义语句:int m[]={5,4,3,2,1},i=4;,则下面对m数组元素的引用中错误的是()。
A.m[i] B.m[2*2] C.m[m[0]] D.m[m[i]]14、以下对二维数组arr的定义正确的是()。
A.int arr[5][]={1,2,3}; B.int arr[][1]={{1,2,3},{4,5,6}};C.int arr[3][3]={0}; D.int arr[2][3]={1,2,3,4,5,6,7,8};15、若有定义语句:char s[]="hello\0theworld";,则strlen(s)的值是()。
A.5 B.6 C.14 D.15 16、有定义int i=88,j=99,*p,*q;p=&i;q=&j; p=q;则printf("%d %d",*p,*q)结果是()。
A.88 88 B.88 99 C.99 99D.99 8817、已知有定义int a[8]={0},*p=a;,则不能表示a[1]元素的值的是()。
A.*(p+1) B.*(++a) C.p[1] D.*&a[1]18、有定义如下:struct test{ int a;int b[2];}s[3]={{111,1,2},{222,3,4},{333,5,6}};则s[1].b[0]的值是()。
A. 3B. 4C. 5D. 619、若要以写的方式创建新的文本文件,则在fopen函数中使用的打开方式是()。
A."w" B."rb" C."rb+" D."a+b"20、若有定义:int a[5][2]={7,6,5,4,3,2,1}, *p=a[1];则*(++p)的值是()。
A.2B.3C.4D.5二、阅读程序题,写出下列程序的运行结果。
(本题10小题,每小题3分,共30分)1、main(){ FILE *fp;int i,buf[]={8,7,6,5,4,3,2,1};fp=fopen("mytest.dat","wb+");fwrite(buf,sizeof(int),8,fp);fseek(fp,sizeof(int)*4,SEEK_SET);fread(buf,sizeof(int),4,fp);fclose(fp);for(i=0;i<8;i++) printf("%d",buf[i]);}输出结果为:______________________________。
2、main(){ 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\n",a,b);}输出结果为:______________________________。
3、#include <string.h>main(){ char p[20]={'a','b','c','d'},q[]="abc", r[]="abcde";strcpy(p+strlen(q),r); strcat(p,q);printf("%d %d\n",sizeof(p),strlen(p));}输出结果为:______________________________。
4、以下程序设从键盘输入ABC后按<Enter>键。
void f(){ char ch=getchar();printf("%c",ch);if(ch!='\n')f();printf("%c",ch);}void main(){ f(); }输出结果为:______________________________。
5、main( ){ char *q[4]={"NANJING","BEIJING","HANGZHOU"," SHANGHAI"};char **p=q;for (int i=0;i<4;i++,p++)printf("%c ", *(*p+3)+1);}输出结果为:______________________________。
6、int n;void f (int n ){ static int a=3;n+=2; a++;printf("%d %d ",n,a);}main(){ f(n);f(n=5); printf("%d ",n); }输出结果为:______________________________。
7、main(){ int x,y,z;x=y=z=0;++x||++y&&++z;printf("%d %d %d\n",x,y,z);}输出结果为:______________________________。
8、void f(int *q){ int i;for(i=0;i<5;i++) --(*q);}main(){ int a[5]={6,6,6,6,6},i;f(a+2);for(i=0;i<5;i++) printf("%d",a[i]);}输出结果为:______________________________。
9、main(){ char str[3][7]={"1234","5678"},*myp[2];int i,j,s=0;for(i=0;i<2;i++) myp[i]=str[i];for(i=0;i<2;i++)for(j=1;myp[i][j]!=’\0’;j+=2)s=10*s+myp[i][j]-'0';printf("%d\n",s);}输出结果为:______________________________。
10、struct NODE{ int num;struct NODE *next;};main( ){ struct NODE a[3]={{0,a+1},{0,a+2},{0,a}},*p=&a[0],*q=&a[1],*r=&a[ 2];p->num=77; q->num=88; r->num=99;p->next=q;q->next=r;r->next=NULL;printf("%d\n",p->next->next->num);}输出结果为:______________________________。
三、程序填空题(共7小题,每空2分,共20分)1、下面程序的功能是判断short型能表示的最大值。
请填空。
main(){short n=0,m;while(1){m=n;n++;if(n<0)_______________;}printf("%d\n",m);}2、建立一个链表,将存储在字符数组中的字符依次转储到链表的各个结点中。
#include <stdlib.h>typedef struct node{ char data;struct node *next;}NODE;NODE* CreatList(char s[]){ NODE *head,*p,*last=NULL;while(*s!='\0'){ p=______________________________;p->data=*s++;p->next=NULL;if(last!=NULL)last->next=p;elsehead=p;last=p;}return _______________;}main(){ char s[]="Hello 2012!";NODE *head;head=CreatList(s);}3、以下程序的功能是:输入两个整数,求出它们的最大公约数并输出,请填空。