考试模拟题1及参考答案考试模拟题1一、单项选择题(共20题,每题1分,共20分。
)1. 以下叙述不正确的是()。
A. 一个C源程序可由一个或多个函数组成B. 在C程序中注释说明只能位于一条语句的后面C. C程序的基本组成单位是函数D. 一个C源程序必须包含一个main函数2. 若变量已正确定义并赋值,表达式()不符合C语言语法。
A. 3%2.0B. a*b/cC. 2, bD. a/b/c3. 六种基本数据类型的长度排列正确的是()。
A. bool=char<int≤long=float<doubleB. char<bool=int≤long=float<doubleC. bool<char<int<long<float<doubleD. bool<char<int<long=float<double4. 下面程序段的运行结果是()。
char a[7]= "abcdef",b[4]= "ABC";strcpy(a,b);printf("%c",a[5]);A. 空格B. \0C. eD. f5. 设int a=9,b=8,c=7,x=1;则执行语句if(a>7) if(b>8) if(c>9) x=2;else x=3;后x的值是()。
A. 2B. 1C. 0D. 36. 对以下程序,当输入数据的形式为12a345b789↙,正确的输出结果为()。
int main(){char c1,c2;int a1,a2;c1=getchar(); scanf("%2d",&a1);c2=getchar(); scanf("%3d",&a2);printf("%d,%d,%c,%c\n",a1,a2,c1,c2);return 0;}A. 12,345,a,bB. 2,345,1,aC. 2a,45b,1,3D. 2,789,1,a7. 以下程序的输出结果是:()。
int main(){char st[20]= "hello\0\t\\\ ";printf("%d %d\n",strlen(st),sizeof(st));return 0;}A. 9 9B. 5 20C.13 20 (D)20 208. 若已定义int a[9],*p=a;并在以后的语句中未改变p的值,则不能表示a[1]地址的表达式是()。
A. a++B. a+1C. p+1D. ++p9. 凡是函数中未指定存储类别的局部变量,其隐含的存储类别为()。
A. 外部B. 静态C. 自动D. 寄存器10. 以下能对二维数组a进行正确初始化的语句是()。
A. int a[2][]={{1,0,1},{5,2,3}};B. int a[][3]={{1,2,3},{4,5,6}};C. int a[2][4]={{1,2,3},{4,5},{6}};D. int a[][3]={{1,0,1},{ },{1,1}};11. 函数fopen()的返回值不能是()。
A. NULLB. OC. 1D. 某个内存地址12. 若定义结构体struct st{int no;char name[15];float score;}s1;则结构体变量s1所占内存空间为()。
A. 15 C. sizeof(int)+sizeof(char[15])+sizeof(float)B. sizeof(s1) D. 1913. 若有以下宏定义:#define N 3#define Y(n) ((N+1)*n)则执行语句z=2*(N+Y(5));后,z的结果是()。
A. 语法错误B. 46C. 66D. 无定值14. 已知a为整型变量,那么与表达式a!=0 真假值情况不相同的表达式有()。
A. a>0||a<0B. aC. !a==0D. !a15. 下述程序代码中有语法错误的行是()。
int i,ia[10],ib[10]; /*第1行*/for (i=0;i<=9;i++) /*第2行*/ia[i]=0; /*第3行*/ib=ia; /*第4行*/A. 第1行B. 第2行C. 第3行D. 第4行16. 以下程序段的循环次数是()次。
int i=1,j=0;while(i+j<=10){ if (i>j)j=j+2;else i=i+2;}A. 5B. 6C. 0D. 417. 已知函数ss的定义如下:void ss(char *s,char *t){ while (*s++=*t++);}则该函数的功能是()。
A. 串复制B. 求串长度C. 串比较D. 串反向18. 对两个数组a和b进行如下初始化char a[]=“ABCDEF”;char b[]={ …A‟,‟B‟,‟C‟,‟D‟,‟E‟,‟F‟};则以下叙述正确的是()。
A. a和b数组完全相同B.a和b长度相同C. a和b中都存放字符串D. a数组比b数组长度长19. 若二维数组a有m列,则在a[i][j]前的元素个数为()。
A. j*m+iB. i*m+jC. i*m+j-1D. i*m+j+120. 设有如下定义:static int a[4]={1,2,3},i;i=a[0]*a[1]+a[2]*a[3];则i的值为()。
A. 5B. 2C. 3D. 以上都不对二、填空题(每空2分,共20分。
)1. 能够构成数组的各个元素必须具有相同的。
2. C语言中用表示逻辑值“真”。
3. 使用C语言描述关系表达式a<=x<b,正确描述是。
4. 设ch是字符型变量,判断ch为英文字母的表达式是: 。
5. 与语句if (x>y) m=y; else m=x; 等效的表达式语句是:。
6. for(;;)语句相当于。
7.用typedef定义一个含10个元素的整型数组ARR为:。
8. 设有定义语句:static int a[3][4]={{1},{2},{3}} ,则a[1][1]值为。
9. 变量的指针,其含义是指该变量的。
10. C语言源程序文件经过编绎后生成文件的后缀是obj,经过连接后生成文件的后缀是。
三、阅读程序题(共35分)1. (2分)下面程序的运行结果是。
#include <stdio.h>int main(){ inta[5]={10,20,30,40,50},*pa=&a[4];*--pa;printf("%d",*pa);return 0;}2. (3分)下面程序的运行结果是1*# 。
#include <stdio.h>int main(){ int x=0,y=2,z=3;switch(x){ case 0: printf("%d",y==2);// ==是两个等于号case 1: printf("*"); break;case 2: printf("%");break;}switch(z){ case 1: printf("&");case 2: printf("*");break;default : printf("#");}return 0;}3.(4分)下面程序的运行结果是。
#include <stdio.h>struct HAR{char x,y; struct HAR *p;}h[2];int main(){ h[0].x='a';h[0].y='b';h[1].x='c';h[1].y='d';h[0].p=&h[1];h[1].p=h;printf("%c,%c,",(h[0].p)->x,(h[1].p)->x); printf("%d,%d\n",(h[0].p)->y,(h[1].p)->y);return 0;}4.(6分)完善下面程序,功能:输入两个正整数m和n,求其最大公约数和最小公倍数。
#include <stdio.h>int main(){ int p,r,n,m,temp;printf("请输入两个正整数n,m:");scanf("%d,%d,",&n,&m);if (n<m){temp=n;n=m;m=temp;}p=n*m;while( ){ r= ;n=m;m=r;}printf("它们的最大公约数为:%d\n",n);printf("它们的最小公倍数为:%d\n", );return 0;}5.(4分)完善下面程序,功能:将字符串s中所有的字符x删除。
#include <stdio.h>int main(){ char s[80];int i,j;printf("请输入字符串:");gets(s);for (i=j=0;s[i]!='\0';i++)if ( ){ s[j]=s[i];j++ ;}s[j]= ;puts(s);return 0;}6. (6分)完善下面程序,功能:打印如右所示的图案。
#include <stdio.h>int main(){ for (j=0; ;j++)printf(" ");for (k=0;k<=2*i;k++)printf("*");printf("");}return 0;}7.(6分)完善下面程序,功能:输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。
例如:153是一个“水仙花数”,因为153=13+53+33。
#include <stdio.h>int main(){ int i,j,k,n;printf("水仙花数是:");for(n=100; ;n++) { i=n/100;j=;k=n%10;if()printf("%d ",n);}printf("\n");return 0;}8.(4分)完善下面程序,功能:用于计算n!的值。