当前位置:文档之家› C语言模拟试卷

C语言模拟试卷

一.单项选择题1.一个C语言源程序由一个或多个( D )组成。

A.子程序B.过程C.函数D.主函数2. 下列定义变量的语句中错误的是( C )。

A.int _intB.double int_1C.char ForD.float US$ 3.以下语句有语法错误的是( B )。

A.printf("%d",0xabc); B.printf("%f",1.234e2.0);C.printf("%d",057); D.printf("%c",'\\');4.若有定义int m=2,n=2;执行语句(m=0)&&(n=3);后m和n的值分别为( D )。

A.2 2 B.0 3 C.2 3 D.0 25.若有定义int k=4,a=3,b=2,c=1;则表达式k<a?k:c<b?c:a的值为( D )。

A.4 B.3 C.2 D.16. 若有定义int x=1,y=1,z=1;则执行x+=y+=z+=10;后x,y,z的值是( D )。

A.x=1,y=1,z=1 B.x=11,y=11,z=11C.x=11,y=12,z=13 D.x=13,y=12,z=117.若有定义int a,b,c ;执行输入语句scanf("a=%d,b=%d,c=%d",&a,&b,&c);时,为使变量a的值为1,b为2,c为3,从键盘输入数据的正确形式应当是( D )。

A.123〈回车〉B.1,2,3〈回车〉C.a=1 b=2 c=3〈回车〉D.a=1,b=2,c=3〈回车〉8. 若有定义int a=1,b=1; 执行语句 printf("%d %d\n",--a, b++); 输出的结果是( D )。

A. 1 1B. 0 2C. 1 2D. 0 19. 以下4个程序段中有一个程序段执行结果与其它不一样,它是( C )。

A.if(a>b) c=a,a=b,b=c; B.if(a>b){c=a,a=b,b=c;}C.if(a>b) c=a;a=b;b=c; D.if(a>b){c=a;a=b;b=c;}10. 若变量已正确定义,要求程序段完成求10!的计算,不能完成此操作的程序段是( B )。

A.for(i=1,fac=1;i<=10;i++) fac*=i;B.for(i=1;i<=10;i++){ fac=1; fac*=i;}C.i=1;fac=1;while(i<=10){fac*=i; i++;}D.i=1;fac=1;do{fac*=i; i++; }while(i<=10);11. 执行for (int i=1;i<10&&i%2;i++) printf("*");输出*号的个数是( A )。

A.1 B.4 C.5 D.912. 以下正确的函数定义是( A )。

A.int fun(int x, int y) { return 3*x+2*y;}B.int fun(int x,y) { int z; z=3*x+2*y ;return z;}C.int fun(x,y) { int x,y,z; z=3*x+2*y; return z;}D.int fun(int x, int y) { int z=x+y; printf("%d\n",z));}13. 在C语言中,形参的缺省存储类别是( A )。

A.auto B.extern C.static D.register 14.若有定义int a[5]={1,3,5,7,9}; 则不能对a数组元素正确引用的是( C )。

A.a[3] B.*a+3 C.a[a[2]] D.a[a[4]-a[3]] 15.若有定义int a[3][4]; 则对数组元素a[2][3]不能正确引用的是( D )。

A.*(a[2]+3) B.*(*(a+2)+3) C.(*(a+2))[3] D.*(a+2)[3] 16. 以下定义语句中不能将字符串 "welcome"正确赋给字符数组的是( B )。

A.char s1[]="welcome";B. char s2[7]={'w','e','l','c','o','m','e'};C. char s3[8]={ 'w','e','l','c','o','m','e','\0'};D. char s4[8]={ "welcome"};17. 判断字符串str1和str2是否相等,应当使用( D )。

A. if(str1=str2)B. if(str1==str2)C. if(strcpy(str1,str2))D. if(!strcmp(str1,str2))18. 变量的指针,其含义是指该变量的( B )。

A. 值B. 地址C. 标识符D.一个标志19. 若有定义int x=1,y=2,*p=&x,*q=&y;则下列语句中错误的是( C )。

A.p=q; B.*p=*q; C.&x=&y; D.*p=y;20. 若有定义语句:int x=3,y=2;,则以下表达式x&y的值是( C )A. 0B. 1C. 2D. 3二.填空题1. 如果计算机中用16位表示一个整数,十进制整数-12,在机内用补码表示为:2. 数学表达式 )(3z y x z y x ++-的C 语言表达式形式为_(x-y*y*y+z)/(x*(y+z))_。

3. 能正确表达数学关系10<a<15的C 语言表达式是_(a>10) && (a<15)_。

4. 若有定义char ch= 'g';将ch 转换为相应的大写字母的表达式是_ch=‘A ’+(ch-‘a ’)_。

5. 若有定义int x,y,z;x=y=z=0;执行++x&&++y||++z;后x 、y 、z 的值分别 ___1、1、0___。

6. 若有定义int a=10,b=20;则执行printf("a+b=%d+%d=%d\n",a,b,a+b); 后的输出结果是__a+b=10+20=30___。

7. 若有函数定义int fun(){ return (5,6); }则调用fun 函数的返回值是___6_____。

8. 若有宏定义 #define f(x) x*x 则表达式f(3+3)的值为____15___。

9. 若有以下结构体说明和变量定义,建立的链表如下图所示,指针p 、q 、r 分别指向此链表中三个连续结点。

struct node{ int data; struct node *next; } *p,*q,*r;现要将q 所指结点从链表中删除,能完成删除操作的语句是_p->next=q->next;free(q);___。

10. 若有定义FILE *fp; 以“只读”方式打开文件C:\cprogram\mydata.txt 的正确语句是fp=fopen(“C:\\cprogram\\mydata.txt ”, “r ”)。

三.阅读程序题以下每个程序都有 #include<stdio.h>被省略{ int x=15,y=27,z1,z2;z1=(x+y)/2;z2=x/2+y/2; printf("%d %d\n",z1,z2); x=x+y; y=x-y;x=x-y;printf("%d %d\n",x,y);}2. main(){ int a=1,b=2,c=3,x=10;if(a>b)if(b>c)x+=1;elsex+=2;elseif(b<c)x+=3;elsex+=4;printf("%d\n",x);}3. main(){ int year=2012,month=6,day=30;int totalday=0,leap;leap=(year%4==0&&year%100!=0||year%400==0);switch(month-1){ case 5:totalday+=31;case 4:totalday+=30;case 3:totalday+=31; case 2:if(leap==1) totalday+=29;elsetotalday+=28;case 1:totalday+=31;case 0:totalday+=31;}printf("%d\n",totalday);}{ int f0=1,f1=1,f2;int i=3;printf("%d %d ",f0,f1);do{ f2=f0+f1;printf("%d ",f2);f0=f1;f1=f2;i++;}while(i<=6);}5. int f(int n){ static int p=1;p*=n;return p;}main(){ int i;for(i=1;i<=5;i++)printf("%d ",f(i));printf("\n");}6. int f(int a){ if(a==1)return 0;elsereturn 10+f(a-1);}main(){ int a=3;printf("%d\n",f(a));}7. void f(int a,int *b){ int t;t=a,a=*b;*b=t;}main(){ int x=1,y=2;f(x,&y);printf("%d %d\n",x,y);}8.main(){ int a[4][4];int i,j,sum=0;for(i=0;i<4;i++) for(j=0;j<4;j++) a[i][j]=4*i+j+1;for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j)sum+=a[i][j];printf("%d\n",sum);}9.void move(int *p,int n){ int i,j,t;t=*p;for(i=0;i<n-1;i++)*(p+i)=*(p+i+1);*(p+i)=t;}main(){ int a[10]={1,2,3,4,5,6,7,8,9,10},i;move(a,10);for(i=0;i<10;i++)printf("%d ",a[i]);printf("\n");}10. #include<string.h>struct STU{ int no;char name[10];int score;};main( ){ struct STU s[6]={{1,"Yang",90}, {2,"Li",80},{3,"Zhang",60}, {4,"Wang",89}, {5,"Yang",67}, {6,"Yang",100}}; int i,n=0;for(i=0;i<6;i++)if(strcmp(s[i].name,"Yang")==0)n++;printf("%d\n",n);四.填空完成程序以下每个程序都有 #include<stdio.h>被省略1. 用公式e X=1+x+x2/2!+……+x n/n!求e X的近似值,直到最后一项的绝对值小于10-6为止。

相关主题