模拟测试5
模拟考试试卷五
一、            判断题(每题1分,共10分)
(1)      在C源程序中将语句 “if(x= =5) y++;”误写作 “if(x=5) y++;”,将导致编译错误。
(2)      C的double类型数据可以精确表示任何实数。
(3)      若表达式sizeof(int)的值为4,则int类型数据可以表示的最大整数为231-1。
(4)      在所有的关系运算符(>=、> 、= =、 !=、 <=、 <)中,优先级最低的运算符是“= =、!=”。
(5)      标准输入函数scanf的返回值为所输入数据的个数或EOF。
(6)      若x的当前值为5,执行语句“if(x=3) x=x+5;”后,x的值依然是5。
(7)      执行循环语句“for( i=1; i<10; i=i+2) s+=i;”后,i的当前值为11。
(8)      a是一维数组名,数组元素a[1]还可以写作“*(a++)”。
(9)      函数原型为“void sort(float a[ ], int n)”,调用该函数时,形参数组a被创建,实参数组各元素的值被复制到a数组各元素中。
(10)  若打开文件的方式为“w”而该文件已经存在,则文件中原有数据被清空。
二、            单选题(每题2分,共28分)
(11        (11)执行语句“k=x++ && y++ || z++;”(各变量当前值均为1)后,变量k、x、y、z值依次为      。
A)1、2、2、1            B)1、2、2、2
C)0、2、2、1            D)0、2、2、2
(12)计算变量x(x大于1)整数部分位数的表达式,可以写作    。
A)(int)log10(x)            B)log10(x)
C)log10(x)+1            D)(int)log10(x)
(13)判断变量x、y中有且只有1个值为0的表达式为      。
A)!(x*y) && x+y            B)(x*y) && x+y
C)x*y= =0                D)x= =0 && y!=0
(14)执行语句“for(s=0,k=1; s<20 || k<10; k=k+2)  s+=k;”后s、k的值为      。
A)25、9      B)25、11      C)36、11        D)36、9
(15)执行语句“for(float x=0,s=0; x!=60; x=x+0.3) s=s+x;”后,变量x的值为    。
A)不可能大于60          B)不可能大于60.3     
C)一定小于60            D)可能远大于60
(16)声明语句为“char a[10]”,执行下列语句后的输出结构为      。
printf((“%d,%d\n”,sizeof(a),strlen(strcppy(a, “Windows”)));
A)7,7      B)7,8          C)10,7        D)10,8
(17)函数strcmp(“Int”, “int”)的返回值为      。
A)0        B)-32          C) “intInt”    D) “Intint”
(18)函数f定于如下,执行语句“m=f(5);”,后,m的值为      。
int f (int k)
{  if (k= =0 || k= =1) return 1;
else  return f(k-1)+f(k-2);
}
A)3        B)8            C)5            D)13
(19)函数定于如下,执行语句“sum=f(5)+f(3)
;”后,sum的值应为      。
int f(int m)
{ static int i=0; int s=0;
for( ; i<=m; i++)  s+=i;  return s;
}
A)21        B)16          C)15        D)8
(20)下列语句定义x为指向int类型变量a的指针,其中哪一个是正确      。
A) int  a, *x=a;          B)int a, *x=&a;
C)  int  *x=&a, a;        D)int a, x=a;
(      (21)声明语句为“int a[3][4];”,下列表达式中与数组元素a[2][1]等价的是      。
A) *(a[2]+1)            B)  a[9];
C) *(a[1]+2)              D)* (* (a+2))+1
(      (22)执行语句“a=b=3; printf(“%d,%d\n”, a<<2,b>>2);”后的输出结果是      。
A)12,0      B)12,3        C)false,true      D)true,false
(      (23)若a是32为int类型变量,判断起32个2进位中末两位均为1的表达式为      。
A) a & 3= =3            B)a &3= =11
C) a & 11= =3            D)a &11= =11
(24)以“只读“方式打开文本文件c:\xy.text,下列语句正确的是    。
A) fp=fopen(“c:\\xy.txt”, “a”);
B) fp=fopen(“c:\\xy.txt”, “r”);
C) fp=fopen(“c:\\xy.txt”, “wb”);
D)fp=fopen(“c:\xy.txt”, “r”);
三、      程序填空题(每题2分,共20分)
1.输入x、n后输出下列算式的值。
x-x2/2!+x3/3!-x4/4!+ … +(-1)n-1 xn/n!
#include <stdio.h>
void main()
{ float s,t,x;
int i, n;
scanf(“%f%d”, &x, &n);
(25)  ;
for(i=1; i<=n; i++){
(26)   
s+=t;}
(27)    ;
}
2.运行时输入1个文本文件的文件名(不超过45个字符),删除该文件中的所有空格符。。
#include <stdio.h>
#include <stdlib.h>
void main()
{
FILE *f1, * f2;
char ch, filename[46]
(28)  ;
if((f1=fopen(filename, “r”))= =NULL{
printf(“%s不能打开!\n”,filename);
exit(0);
}
f2=fopen(temp.dat”,”w”);
while(((ch=(char)fgetc(f1)!EOF)
if(ch!= ‘ ‘)      (29)  ;
fclose(f1); fclose(f2);
(30)  ;
rename(“temp.dat”, filename);
}
3.下列程序运行时,输入n个学生的姓名和3门功课成绩,然后根据3门功课的平均成绩从高分到低分显示每个学生的姓名、3门功课成绩以及平均成绩。
#include <stdio.h>
(31)  ;
void main()
{struct strudent{
char name[9];
int a[3];scanf返回值被忽略是怎么回事
float v;} temp, *s;
int i, j, k;
scanf(“%d”, &n);
s=(student*) malloc(n*sizeof(student));
for(    (32)    ) {
scanf(“%s”, s[i].name);
s[i].v=0;
for(j=0;j<3; j++)
{ scanf(“%d”, &s[i].a[j]);
(33)  ;
}
}
for(i=0;i<n-1;i++)
{ k=i;
for(    (34)  )
if(s[j].v>s[k].v)  k=j;
temp=s[i]; s[i]=s[k]; s[k]=temp;
}
for(i=
0; i<n;i++)
printf(“%s,%d,%d,%d,%f\n”,s[i].name,s[i].a[0],s[i].a[1],s[i].a[2],s[i].v);
}
四、程序阅读题(每题5分,共15分)
1.程序1
#include “stdio.h”
#include “string.h”
void main()
{char c, *a=”Office”;
int i;
for(i=0; i<strlen(a)/2; i++) {
c=*a;
strcpy(a,a+1);
a[strlen(a)]=c;
a[strlen(a)+1]=’\0’;
puts(a);
}
}
2.程序2
#include <stdio.h>
void main()
{ float a[4][3]={{3,2,5},{-3,2,1},{4,3,2},{5,1,3}};
int i, j;
float v;
for(i=0; i<4; i++)
{ v=a[i][0];
for(j=1;j<3;j++)
v+=a[i][j];
v/=3;
for(j=0;j<3;j++)
a[i][j]-=v;
}
for(i=0; i<4; i++)
{  for(j=0;j<3;j++)
printf(“%6.1f,”, a[i][j]);
printf(“\b\n”);
}
}
3.程序3
#include <stdio.h>
#include <stdlib.h>
void main()
{
struct node {
int x;
node *next;
}*p1, * p2=NULL;
int a[5]={7,6,-5,28,1}, i, j, s;
for(i=0; i<5; i++)
{
s=0;
for(j=1;j<=a[i]/2; j++)
if (a[i]%j= =0)  s+=j;
if(a[i]!=s)
{ p1=(node *)malloc(sizeof(node));
p1->x=a[i];
p1->next=p2;
p2=p1;
}
}
while(p1!=NULL)
{ printf(%d\n”, p1->x);
p1=p1->next;}
}
五、程序设计题(第1题13分,第2题14分,共27分)
1.编程,输入n后:输入n个数,根据下式计算并输出y的值。
x2-sinx    x<-2
y=    2x+x      -2<=x<=2
(x2+x+1)1/2  x>2
2.编制函数,其功能是在float类型一维数组中到最大值、最小值并将它们返回到主调函数。 
试卷5参考答案
考试试卷5
一、判断题(正确用A表示, 错误用B表示)
(1)B  (2)B  (3)B  (4)A    (5)A
(6)B  (7)A  (8)B  (9)B    (10)A
二、单选题
(11)A  (12)D  (13)A  (14)B  (15)D
(16)D  (17)B  (18)B  (19)C  (20)C
(21)A  (22)A  (23)A  (24)A  (25)B
三、程序填空题
1.(26)s=0; t=-1;
(27)t=-t*x/i
(28)printf(“%f\n”,s)
2.(29)fgets(filename)
(30)fputc(ch,f2)
(31)remove(filename)
3.(32)#include <stdlib.h>
(33)i=0;i<n; i++
(34)s[i].v=s[i].v+s[i].a[j]
(35)j=i+1; j<n; j++ 
四、程序阅读题
程序1  fficeO
ficeOf
iceOff
程序2  -0.3, -1.3, 1.7
-3.0, 2.0, 1.0
2.0, -2.0, 0.0
程序3  1
-
5
7
五、程序设计题

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。