《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]。
是 。
(2)若指针s 指向存储单元a[2],p 二、单项选择题。
(每题 通过指针p,给s 赋值,使s 指向最后一个存储单元 a[4]得语句就 指向存储单元a[0],表达式s-p 得值就是 ________________________________ 2分,共40分) 1.设有int x=11; 则表达式(x++ * 1/3) 得值就是() A ) 3 B ) 4 C ) 11 D ) 12 2 •下列程序得输岀结果就是() A) 3 B) 3、2 C) 0 main(){double d=3、2; int x,y; x=1、2; y=(x+3、8)/5、0;printf( “ %d \n ” , d*y); } 3•下列程序执行后得输岀结果就是 A) 6 6 6、0 6、0C) 66 6、0 6、7 D) 3、07 (小数点后只写一位)( ) B ) 6 6 6、7 6、7 D ) 6 6 6、7 6、0 main() { 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=1- 、le-1;C) long do=0xfdaL;5.设int x=1, y=1;A) 0 B) 1 C) 2 6.与y=(x>0?1:x<0?-1:0);A) if (x>0) y=1;else if(x<0)y=-1;else y=0;C) y=-1if(x)if(x>0)y=1; elseif(x==0)y=0;else y=-1; 7.以下循环体得执行次数就是( A) 3 B) 2 C) 1 main(){ int i,j;for(i=0,j=1; i<=j+1; i+=2, j--)printf( }B) double b=1+5e2 、5;D) float 2_and=1-e-3;得值就是( )。
D) -1得功能相同得if 语句就是( )B) if(x)if(x>0)y=1;else if(x<0)y=-1;else y=0;D) y=0;if(x>=0)if(x>0)y=1;else y=-1;)。
D) 0“%d \n ” ,i);)。
表达式(!x||y--)8.以下叙述正确得就是(A) do-while 语句构成得循环不能用其它语句构成得循环来代替。
B) do-while 语句构成得循环只能用break 语句退出。
C) 用do-while 语句构成得循环D) 用do-while 语句构成得循环9.下列程序执行后得输出结果就是A) G B) H C) I 在while 后得表达式为非零时结束循环。
在while 后得表达式为零时结束循环。
)。
D) Jmain(){ int x= ' f ' ; printf( %c \n ” , 'A' +(x- ‘ a' +1)); } 10.执行下面得程序段后, 变量k 中得值为(A) 不定值B) 33 C) 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) 7 C) 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 <stdio 、h>main(){ int a=2,c=5;printf( “a=%d,b=%d\n" ,a,c); }14•下列程序执行后得输出结果就是( )。
A) 3 B) 6 C) 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) 8 D) 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) 5 B) 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 分)I. 下列给定程序得功能就是:读入一个整数(2<=k< = 10000),打印它得所有质因子(即所有为素数得因子)。
例如,若输入整数2310,则应输出2、3、5、7、II。
#include <conio 、h>#include <stdio 、h>*******************************IsPrime(int n);{int i,m;m=1;for ( i=2; i<n; i++)******************************if !(n%i){ m=0; contitue; }return (m);}mai n(){ int j,k;clrscr();printf( “nPlease enter an integer number between 2 and 1OOOO: ” ); scanf( “ %d ,k);printf( “nnThe prime factor(s) of %d is (are): ” ,k);for (j=2;jv=k;j++)if ( (!(k%j))&(IsPrime(j)) ) printf(" %4d",j);getchar();})2•下列给定程序中,函数fun得功能就是:逐个比较a、b两个字符串对应位置中得字符,把ASCII值大或等于得字符一次存放到c数组中,形成一个新得字符串。
例如,若a中得字符串为aBCDeFgH,t中得字符串为:ABcd,则c中得字符串为:aBcdeFgh=#include <stdio 、h>#include <string 、h>****************************************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 ';}***************************************mai n(){char a[10]= “aBCDeFg”,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 <stdio 、h>void mai n(){ char ch; int k=0;for(ch= ' A' ;ch< ' H' ;ch++,k++) if(k%2==0) printf( “ %C ,ch);printf( “\n ” );}2、#include <stdio 、h>输出结果:______________________________3、#include <stdio 、h>{ 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 <stdio 、h>void mai n(){ 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 <stdio 、h>{ 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 ” );}输出结果:____________________________________________________五、按给出得程序功能,在空格处,填写正确得程序语句,使程序完整。