C语言程序设计模拟试题3附答案.docx
《C语言程序设计模拟试题3附答案.docx》由会员分享,可在线阅读,更多相关《C语言程序设计模拟试题3附答案.docx(12页珍藏版)》请在冰豆网上搜索。
C语言程序设计模拟试题3附答案
《C语言程序设计》模拟试卷三
一、填空题。
(每空2分,共16分)
1.在内存中,短整型变量占 字节,单精度实型变量占 字节,字符型变量占 字节。
2.一个C语言文件是由若干个 组成。
3.设有以下变量定义,并已赋确定的值
charw;intx;floaty;doublez;
则表达式:
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]
22
33
44
55
66
(1)若p已指向存储单元a[1]。
通过指针p,给s赋值,使s指向最后一个存储单元a[4]的语句是 。
(2)若指针s指向存储单元a[2],p指向存储单元a[0],表达式s-p的值是 。
二、单项选择题。
(每题2分,共40分)
1.设有intx=11;则表达式(x++*1/3)的值是( )。
A)3 B)4 C)11 D)12
2.下列程序的输出结果是( )。
A)3 B)3.2 C)0 D)3.07
main()
{doubled=3.2;intx,y;
x=1.2;y=(x+3.8)/5.0;
printf(“%d\n”,d*y);
}
3.下列程序执行后的输出结果是(小数点后只写一位)( )。
A)6 6 6.0 6.0 B)6 6 6.7 6.7
C)6 6 6.0 6.7 D)6 6 6.7 6.0
main()
{doubled;floatf;longl;inti;
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; B)doubleb=1+5e2.5;
C)longdo=0xfdaL; D)float2_and=1-e-3;
5.设intx=1,y=1;表达式(!
x||y--)的值是( )。
A)0 B)1 C)2 D)-1
6.与y=(x>0?
1:
x<0?
-1:
0);的功能相同的if语句是( )。
A)if(x>0)y=1; B)if(x)
elseif(x<0)y=-1; if(x>0)y=1;
elsey=0; elseif(x<0)y=-1;
elsey=0;
C)y=-1 D) y=0;
if(x) if(x>=0)
if(x>0)y=1; if(x>0)y=1;
elseif(x==0)y=0; elsey=-1;
elsey=-1;
7.以下循环体的执行次数是( )。
A)3 B)2 C)1 D)0
main()
{inti,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)J
main()
{intx=’f’;printf(“%c\n”,’A’+(x-‘a’+1));}
10.执行下面的程序段后,变量k中的值为()。
A)不定值 B)33 C)30 D)10
intk=3,s[2];
s[0]=k;k=s[1]*10;
11.若已定义:
inta[]={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)9
voidfunc(int*a,intb[])
{b[0]=*a+6;}
main()
{inta,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=5
C)a=d,b=d D)a=%d,b=%d
#include
main()
{inta=2,c=5;
printf(“a=%d,b=%d\n”,a,c);}
14.下列程序执行后的输出结果是()。
A)3 B)6 C)9 D)随机数
main()
{ inta[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.设有数组定义:
chararray[]=“China”;则数组array所占的空间为( )。
A)4个字节 B)5个字节 C)6个字节 D)7个字节
16.下列程序的输出结果是( )。
A)4 B)6 C)8 D)10
intb=2;
intfunc(int*a)
{b+=*a;return(b);}
main()
{inta=2,res=2;
res+=func(&a);
printf(“%d\n”,res);
}
17.有以下定义和语句
inta[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)8
structabc
{inta,b,c;};
main()
{ structabcs[2]={{1,2,3},{4,5,6}};
intt;
t=s[0].a+s[1].b;
printf(“%d\n”,t);
}
19.若有以下调用语句,则不正确的fun函数的首部是( )。
A)voidfun(intm,intx[]) B)voidfun(ints,inth[41])
C)voidfun(intp,int*s) D)voidfun(intn,inta)
main()
{…
inta[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(intn);
{inti,m;
m=1;
for(i=2;i******************************
if!
(n%i)
{m=0;contitue;}
return(m);
}
main()
{intj,k;
clrscr();
printf(“nPleaseenteranintegernumberbetween2and10000:
”);
scanf(“%d”,k);
printf(“nnTheprimefactor(s)of%dis(are):
”,k);
for(j=2;j<=k;j++)
if((!
(k%j))&(IsPrime(j)))printf("%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);
***************************************
{intk=1;
***************************************
while(*p!
=*q)
{if(*p<*q)c[k]=*q;
elsec[k]=*p;
if(*p)p++;
if(*q)q++;
k++;
}
K=’\0’;
}
***************************************
main()
{chara[10]=“aBCDeFgh”,b[10]=“ABcd”,c[80]={“”};
fun(a,b,c);
printf(“Thestringa:
”);puts(a);
printf(“Thestringb:
”);puts(b);
printf(“Theresult:
”);puts(c);
}
四、阅读下列程序,在程序后面的横线上,写出该程序的功能或给出运行结果。
(每小题4分,共16分)
1. #include
voidmain()
{ charch;intk=0;
for(ch=’A’;ch<’H’;ch++,k++)
if(k%2==0)printf(“%c”,ch);
printf(“\n”);
}
输出结果:
2. #include
voidmain()
{ intk=0;
charc=’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
voidmain()
{ inta[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
voidmain()
{ inta[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”);
}
输出结果:
五、按给出的程序功能,在空格处,填写正确的程序语句,使程序完整。
(每空1分,共6分)
1.将两个数从小到达输出。
main()
{float a,b, ;
scanf( ,&a,&b);
if(a>b)
{t=a;
;
b=t;
}
printf(“Thenumsmalltobig:
%d%d”,a,b);
}
2.输出购买总价值和数量。
#define 30
main()
{ ;
num=10;
total=num*PRICE;
printf(“total=%d,num=%d\n”, );
}
六、按要求编写下列程序。
(每题6分,共12分)
1.输出下图。
*
* *
* * *
* * * *
2.编程判断输入的正整数是否既是5又是7的整数倍数。
若是,则输出yes;否则输出no。
《C语言程序设计》模拟试卷三答案
一、填空题。
(每空2分,共16分)
12 4 1
2. 函数
3.double
4. x==0||x==1
5. s=p+3 2
二、单项选择题。
(每题2分,共40分)
1.A2.C3.A4.A5.B
6.A7.C8.D 9.A10.A
11.D12.A13.B14.B15.C
16.B 17.C18.B19.D20.C
三、修改下列程序:
(在程序出错的语句下划横线并标号,把修改后的语句写在程序下面的横线上。
)(每小题5分,共10分)
1
IsPrime(intn)
if(!
(n%i))
scanf(“%d”,&k);
2.
voidfun(char*p,char*q,char*c)
k=0;
while(*p||*q)
四、阅读下列程序,在程序后面的横线上,写出该程序的功能或给出运行结果。
(每小题4分,共16分)
1. ACEG
2. k=8
3. 4252716
4.1022571320
五、按给出的程序功能,在空格处,填写正确的程序语句,使程序完整。
(每空1分,共6分)
1. t
“a=%f,b=%f”
a=b
2.
PRICE
intnum ,total
total,num
六、按要求编写下列程序。
(每题6分,共12分)
1.
main()
{
inti,j;
for(i=0;i<=3;i++)
{
for(j=0;j<=i;j++)
printf("*");
printf("\n");
}
getchar();
}
2.
main()
{
intn;
printf("请输入整数n:
");
scanf("%d",&n);
if(!
(n%5)||!
(n%7))
printf("Yes!
");
else
printf("No!
");
}