《C语言程序设计》模拟试卷三一、填空题。
(每空2分,共16分)1.在内存中,短整型变量占字节,单精度实型变量占字节,字符型变量占字节。
2.一个C语言文件是由若干个组成。
3.设有以下变量定义,并已赋确定的值char w; int x; float y; double z;则表达式:w*x+z-y所求得的数据类型为。
4.若x为int类型,请以最简单的形式写出与逻辑表达式!x等价的C语言关系表达式。
5.若有如下图所示五个连续的int类型的存储单元并赋值如下图,a[0]的地址小于a[4]的地址。
p和s是基类型为int的指针变量。
请对以下问题进行填空。
a[0] a[1] a[2] a[3] a[4](1)若p已指向存储单元a[1]。
通过指针p,给s赋值,使s指向最后一个存储单元a[4]的语句是。
(2)若指针s指向存储单元a[2],p指向存储单元a[0],表达式s-p的值是。
二、单项选择题。
(每题2分,共40分)1.设有int x=11; 则表达式(x++ * 1/3) 的值是()。
A) 3 B) 4 C) 11 D) 122.下列程序的输出结果是()。
A) 3 B) C) 0 D)main(){double d=; int x,y;x=; y=(x+/;printf(“%d \n”, d*y);}3.下列程序执行后的输出结果是(小数点后只写一位)()。
A) 6 6 B) 6 6C) 6 6 D) 6 6main(){ double d; float f; long l; int i;i=f=l=d=20/3;printf("%d %ld %f %f \n", i,l,f,d);scanf("%d",&d);}4.下列变量定义中合法的是()。
A) short _a=;B) double b=1+;C) long do=0xfdaL; D) float 2_and=1-e-3;5.设int x=1, y=1; 表达式(!x||y--)的值是()。
A) 0 B) 1 C) 2D) -16.与y=(x>01:x<0-1:0);的功能相同的if语句是()。
A) if (x>0) y=1; B) if(x)else if(x<0)y=-1; if(x>0)y=1;else y=0; else if(x<0)y=-1;else y=0;C) y=-1 D) y=0;if(x) if(x>=0)if(x>0)y=1; if(x>0)y=1;else if(x==0)y=0; else y=-1;else y=-1;7.以下循环体的执行次数是()。
A) 3 B) 2 C) 1D) 0main(){ int i,j;for(i=0,j=1; i<=j+1; i+=2, j--)printf(“%d \n”,i);}8.以下叙述正确的是()。
A) do-while语句构成的循环不能用其它语句构成的循环来代替。
B) do-while语句构成的循环只能用break语句退出。
C) 用do-while语句构成的循环,在while后的表达式为非零时结束循环。
D) 用do-while语句构成的循环,在while后的表达式为零时结束循环。
9.下列程序执行后的输出结果是()。
A) G B) H C) I D) Jmain(){ int x=’f’; printf(“%c \n”,’A’+(x-‘a’+1)); }10.执行下面的程序段后,变量k中的值为()。
A) 不定值B) 33C) 30 D) 10int k=3, s[2];s[0]=k; k=s[1]*10;11.若已定义:int a[ ]={0,1,2,3,4,5,6,7,8,9], *p=a, i;其中0≤i≤9, 则对a数组元素不正确的引用是()。
A) a[p-a] B) *(&a[i]) C) p[i]D) a[10]12.下列程序执行后的输出结果是()。
A) 6 B) 7C) 8 D) 9void func(int *a,int b[]){ b[0]=*a+6; }main(){ int a,b[5];a=0; b[0]=3;func(&a,b); printf(“%d \n”,b[0]);}13.下列程序的运行结果是()。
A) a=%2,b=%5 B) a=2,b=5C) a=d, b=d D) a=%d,b=%d#include <>main(){ int a=2,c=5;printf(“a=%d,b=%d\n”,a,c); }14.下列程序执行后的输出结果是()。
A) 3B) 6C) 9 D) 随机数main(){ int a[3][3], *p, i;p=&a[0][0];for(i=0; i<9; i++) p[i]=i+1;printf(“%d \n”,a[1][2]);}15.设有数组定义: char array [ ]= “China”; 则数组array所占的空间为()。
A) 4个字节B) 5个字节C) 6个字节D) 7个字节16.下列程序的输出结果是()。
A) 4 B) 6 C) 8D) 10int b=2;int func(int *a){ b += *a; return(b);}main(){ int a=2, res=2;res += func(&a);printf(“%d \n”,res);}17.有以下定义和语句int a[3][2]={1,2,3,4,5,6,},*p[3];p[0]=a[1];则*(p[0]+1)所代表的数组元素是( )A)a[0][1] B)a[1][0] C)a[1][1] D)a[1][2]18.下列程序的输出结果是()。
A) 5B) 6 C) 7 D) 8struct abc{ int a, b, c; };main(){ struct abc s[2]={{1,2,3},{4,5,6}};int t;t=s[0].a+s[1].b;printf(“%d \n”,t);}19.若有以下调用语句,则不正确的fun函数的首部是()。
A) void fun(int m, int x[]) B) void fun(int s, int h[41])C) void fun(int p, int *s) D) void fun(int n, int a)main(){ …int a[50],n;…fun(n, &a[9]);…}20.在C程序中,可把整型数以二进制形式存放到文件中的函数是()。
A) fprintf函数B) fread函数C) fwrite函数D) fputc函数三、修改下列程序:(在程序出错的语句下划横线并标号,把修改后的语句写在程序下面的横线上。
)(每小题5分,共10分)1.下列给定程序的功能是:读入一个整数(2<=k<=10000),打印它的所有质因子(即所有为素数的因子)。
例如,若输入整数2310,则应输出2、3、5、7、11。
#include <>#include <>*******************************IsPrime(int n);{int i,m;m=1;for ( i=2; i<n; i++)******************************if !(n%i){ m=0; contitue; }return (m);}main(){ int j,k;clrscr();printf(“nPlease enter an integer number between 2 and 10000:”);scanf(“%d”,k);printf(“nnThe prime factor(s) of %d is (are):”,k);for (j=2;j<=k;j++)if ( (!(k%j))&(IsPrime(j)) ) p rintf(" %4d",j);getchar();})2.下列给定程序中,函数fun的功能是:逐个比较a、b两个字符串对应位置中的字符,把ASCII值大或等于的字符一次存放到c数组中,形成一个新的字符串。
例如,若a中的字符串为aBCDeFgH,b中的字符串为:ABcd,则c中的字符串为:aBcdeFgh。
#include <>#include <>****************************************void; fun(char *p,char *q,char *c);***************************************{int k=1;***************************************while(*p!=*q){if (*p<*q) c[k]=*q;else c[k]=*p;if (*p) p++;if (*q) q++;k++;}K=’\0’;}***************************************main(){char a[10]=“aBCDeFgh”,b[10]=“ABcd”,c[80]={“”};fun(a,b,c);printf(“The string a:”); puts(a);printf(“The string b:”); puts (b);printf(“The result:”); puts(c);}四、阅读下列程序,在程序后面的横线上,写出该程序的功能或给出运行结果。
(每小题4分,共16分)1. #include <>void main(){ char ch; int k=0;for(ch=’A’;ch<’H’;ch++,k++)if(k%2==0) printf(“%c”,ch);printf(“\n”);}输出结果:2. #include <>void main( ){int k=0;char c=’A’;do {switch (c++){case ‘A’: k++; break;case ‘B’: k--;case ‘C’: k+=2; break;case ‘D’: k=k%2; break;case ‘E’: k=k*10; break;default: k=k/3;}k++;} while(c<’G’);printf(“k=%d\n”, k);}输出结果:3. #include <>void main(){int a[6]={12,4,17,25,27,16},b[6]={27,13,4,25,23,16},i,j; for(i=0;i<6;i++) {for(j=0;j<6;j++) if(a[i]==b[j])break;if(j<6) printf(“%d”,a[i]);}printf(“\n”);}输出结果:4. #include <>void main(){ int a[8]={1,0,1,0,1,0,1,0},i;for(i=2;i<8;i++) a[i]+=a[i-1]+a[i-2];for(i=0;i<8;i++) printf(“%d”,a[i]);printf(“\n”);}输出结果:五、按给出的程序功能,在空格处,填写正确的程序语句,使程序完整。