C语言程序设计模拟试题2附答案new.docx
《C语言程序设计模拟试题2附答案new.docx》由会员分享,可在线阅读,更多相关《C语言程序设计模拟试题2附答案new.docx(26页珍藏版)》请在冰点文库上搜索。
![C语言程序设计模拟试题2附答案new.docx](https://file1.bingdoc.com/fileroot1/2023-5/9/626e3cec-09d0-44b7-8ce2-cb3a60abda68/626e3cec-09d0-44b7-8ce2-cb3a60abda681.gif)
C语言程序设计模拟试题2附答案new
《C语言程序设计》模拟试卷二
一、填空题。
(每空2分,共30分)
1.设有变量说明语句
intx=1,y=2;
则执行下述printf语句的输出结果是___1.000000___ _____。
printf("%f\n",1.0+x/y);
2.执行下述程序
#include
main()
{
intx,y;
scanf("%2d%*2s%1d",&x,&y);
printf("%d\n",x+y);
}
若从键盘输入
12345671
则程序的输出结果是__17______。
3.以下程序的功能是:
从键盘上输入若干名学生的成绩(百分制,可带小数,以输入负数或0为结束标志),统计并输出最高成绩和最低成绩。
请填空。
#include
main()
{
floatx,amax,amin;
scanf("%f",&x);
amax=x;
amin=x;
while(X>0&&X<=100)
{
if(x>amax)
amax=x;
elseif(x amin=x;
scanf("%f”,&x);
}
printf("\namax=%f\namin=%f\n",amax,amin);
}
4.设n是整型变量,且已具有某正整数值。
根据下述数学式
求s的值并输出。
可编写如下之程序段实现之。
请填空。
intk;
doubles,d;
s=0.0;
d=1.0;
K=0;
do
{
s=s+d;
_k++ _________;
d=1.0/(k*(k+1));
}while(k<=n);
printf("%f\n",s);
5.执行下述程序的输出结果是_-3-40443___ ____。
#inclued
main()
{
inta[6],i;
for(i=0;i<6;i++)
{
a[i]=9*(i-2+4*(i>3))%5;
printf("%3d",a[i]);
}
printf("\n");
}
6.执行下述程序时的输出结果是____6_____ ________。
#include
main()
{
inta[]={2,4,6,},*ptr=&a[0],x=8,y,z;
for(y=0;y<3;y++)
z=(*(ptr+y)*(ptr+y):
x;
printf("%d\n",z);
}
7.执行下述程序的输出结果是____60_ _______。
#include
main()
{
inta[][2]={10,20,30,40,50,60},(*p)[2];
p=a;
printf("%d\n",*(*(p+2)+1));
}
8.执行以下程序的输出结果是___s=10 ______。
#include
main()
{
ints,i,sum();
for(i=1;i<=10;i++)
s=sum(i);
printf("s=%d\n",s);
}
sum(intk)
{
intx=0;
return(x+=k);
}
9.下述函数定义用来求出两个整数之和,并通过函数的模拟传地址调用,传回两整数相加之和值,请填空。
voidadd(intx,inty,___int*z_ ___)
{
*z=x+y;
}
10.函数func的功能是将整型变量x的值转换成二进制数,并将该二进制数的每一位存入由整型指针b所指向的一维数组a,最低位存放于a[0]中,次低位存放于a[1]中,依此类推。
请填空。
voidfunc(intx,int*b)
{
intr;
do
{
r=x%2;
____*b++___=r;
x/=2;
}while(x);
}
11.以下程序中函数invert实现将数组内所有数组元素的值逆置。
比如,执行本程序将输出
10 9 8 7 6 5 4 3 2 1
请填空。
#include
main()
{
inta[10]={1,2,3,4,5,6,7,8,9,10},i,n=10;
invert(a,n-1);
for(i=0;i<10;i++)
printf("%3d”,a[i]);
printf("\n");
}
invert(int*s,intnum)
{
int*t,k;
t=s+num;
while(____t>=s ________)
{
k=*s;
*s=*t;
*t=k;
s++;
t--;
}
}
12.若有以下定义和说明,则结构体变量w在内存中所占的字节数是_18__
unionaa
{
floatx;
floaty;
charc[6];
};
structst
{
unionaav;
floatw[5];
doubleave;
}w;
13.执行下述程序的输出结果是__95,Li____ _______。
#include
structstr
{
floatx;
char*y;
}*m;
structstrgroup[3]={
95.0,"Li",
82.5,"Wang",
73.5,"Sun"
};
main()
{
m=group;
printf("%.lf,%s\n",m->x,m->y);
}
14.下面的程序用来统计某文件文件中字符的个数。
请填空。
#include
#include
main()
{
FILE*fp;
longnum=0;
if((fp=fopen("fnam.dat","r"))++)==NULL)
{
printf("Can'topenthisfile!
\n");
exit(0);
}
while(!
)
{
fgetc(fp);
num++;
}
printf("num=%d\n",num);
fclose(fp);
}
15.执行下述程序后,输出结果为___29______。
#include
#defineFUN1(a,b)a+b
#defineFUN2(a,b)a-b
#defineCAL(a,b)a*b+a+3
main()
{
printf("%d\n",CAL(FUN1(3,5),FUN2(4,5)));
}
1、B2、B3、A4、C5、C6、D
7、B8、A9、D10、C11、D12、D
13、A14、D15、A16、A17、B18、A
19、B20、C
二、单项选择题。
(每题1分,共20分)
1.以下不是c语言规定保留字的是( B )。
(A)float (B)integer (C)signed (D)unsigned
2.设int型变量x有初始值3,则表达式x++*5/10的值是( B )
(A)0 (B)1 (C)2 (D)3
3.下述程序执行后的输出结果是( A )
#include
main()
{
intx='f';
printf("%c\n",'a'+(x-'a'+1));
}
(A)g (B)h (C)i (D)j
4.设有程序
#include
main()
{
inti,j;
for(i=0,j=1;i<=j+1;i+=2,j--)
printf("%d\n",i);
}
在运行上述程序时,for语句中循环体的执行次数是( C )
(A)3 (B)2 (C)1 (D)0
5.在下述选项时,没有构成死循环的程序是( C )
(A)inti=100
while
(1)
{
i=i%100+1;
if(i>100)
break;
}
(B)for(;;);
(C)intk=1000;
do
{
++k;
}while(k>=10000);
(D)ints=36;
while(s);--s;
6.假定a和b为int型变量,则执行下述语句组后,b的值为(D )。
a=1;
b=10;
do
{
b-=a;A
a++;
}while(b--<0);
(A)9 (B)-2 (C)-1 (D)8
7.设有变量说明语句
int a=1,b=0;
则执行以下程序段的输出结果为( B )。
switch (a)
{
case1:
switch (b)
{
case0:
printf("**0**");break;
case1:
printf("**1**");break;
}
case2:
printf("**2**");break;
}
printf("\n");
(A)**0** (B)**0****2** (C)**0****1****2** (D)有语法错误
8.以下合法的数组说明是( A )。
(A)chara[7]="string"; (B)inta[5]={0,1,2,3,4,5};
(C)chara="string"; (D)INTa[]={0,12,3,4,5};
9.下述程序代码中有语法错误的行是( D )。
inti,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行
10.若已定义
inta[9],*p=a;
并在以后的语句中未改变p的值,则不能表示a[1]地址的表达式是( C )。
(A)p+1 (B)a+1 (C)a++ (D)++p
11.若有下述说明和语句
int**pp,*p,a=10,b=20;
pp=&p;
p=&a;
p=&b;
printf("%d,%d\n",*p,**pp);
则输出结果是( D )。
(A)10,10 (B)10,20 (C)20,10 (D)20,20
12.执行下述程序后的输出结果是( D )。
#include
func(inta)
{
intb=0;
staticintc=3;
a=c++,b++;
return(a);
}
main()
{
inta=2,i,k;
fori=0;i<2;i++)
k=func(a++);
printf("%d\n",k);
}
(A)3 (B)0 (C)5 (D)4
13.执行下述程序的输出结果是( A )。
#include
main()
{
intaa[3][3]={{2},{4},{6}};
inti,*p=&aa[0][0];
for(i=0;i<2;i++)
{
if(i==0)
aa[i][i+1]=*p+1;
else
++p;
printf("%d",*p);
}
printf("\n");
}
(A)23 (B)26 (C)33 (D)36
14.读下面的程序,正确的输出结果是( D )。
#include
staticinta=50;
voidf1(inta)
{
printf("%d,",a+=10);
}
voidf2(void)
{
printf("%d,",a+=3);
}
voidmain()
{
inta=10;
f1(a);
f2();
printf("%d\n",a);
}
(A)60,63,60 (B)20,23,23 (C)20,13,10 (D)20,53,10
15.执行下述程序的输出结果是( A )。
#include
intpower(intx,inty);
main()
{
floata=2.6,b=3.4;
intp;
p=power((int)a,(int)b);
printf("%d\n",p);
}
intpower(intx,inty)
{
inti,p=1;
for(i=y;i>0;i--)
p=p*x;
return(p);
}
(A)8 (B)9 (C)27 (D)81
16.已知函数scopy的定义如下
voidscopy(char*s,char*t)
{
while(*s++=*t++);
}
则该函数的功能是( A )。
(A)串复制 (B)求串长度 (C)串比较 (D)串反向
17.执行下述程序的输出是( B )。
#include
voidmain()
{
structcomplex
{
intre;
intim;
};
structcomplexcp[3]={2,5,4,7};
cp[2].re=cp[0].re+cp[1].re;
cp[2].im=cp[0].im+cp[1].im;
printf("%d%d\n",cp[2].re,cp[2].im);
}
(A)711 (B)612 (C)99 (D)126
18.执行下述程序的输出结果是( A )。
#include
main()
{
union
{
intk;
chari[2];
} *s,a;
s=&a;
s->i[0]=0x39;
s->i[1]=0x38;
printf("%x\n",s->k);
}
(A)cccc3839 (B)3938 (C)380039 (D)390038
19.有以下程序,则结果为B。
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);
}
A)5 B)6 C)7 D)8
20.以下程序for语句循环体中printf语句执行次数是( C )。
#include
#defineN2
#defineMN+1
#defineNUM(M+1)*M/2
main()
{
inti;
for(i=1;i<=NUM;i++)
printf("%d\n",i);
}
(A)5 (B)6 (C)8 (D)9
三、程序分析题(每题5分,共30分)
1.阅读程序,写出执行该程序的输出结果。
#include
main()
{
chars[]="pressakey.";
inti;
charch;
for(i=0;(ch=s[i])!
='\0';i++)
{
switch(ch)
{
case'p':
case'a':
case'k':
putchar(ch-32);continue;
case' ':
putchar('*');break;
case'.':
putchar('!
');break;
default:
putchar(ch);continue;
}
putchar('\n');
}
}
Press*A*Key!
2.阅读程序,写出执行该程序的输出结果。
#include
#defineN5
main()
{
inti,j;
inta[N][N];
for(i=0;i for(j=0;j if(i>=j)
a[i][j]=1;
else
a[i][j]=a[i][j-1]+1;
for(i=0;j {
for(j=0;j printf("%3d",a[i][j]);
printf("\n");
}
}
不输出任何结果
3.阅读程序,写出执行该程序的输出结果
#include
main()
{
intm[5],n[5],*px,*py,k;
px=m;py=n;
for(k=1;k<4;k++,px++,py++)
{
*px=k;*py=2*k;
printf("%d,%d",m[k-1],n[k-1]);
}
printf("\n");
px=&m[1];
py=&n[1];
for(k=1;k<3;k++)
{
*px+=k;*py*=k;
printf("%d,%d,",*px++,*py++);
}
printf("\n");
}
1,22,43,6
3,4,4,8,
4.阅读程序,写出执行该程序的输出结果。
#include
voidf(inty)
{
staticinti=5;
intj=3;
j++;
printf("%d%d%d=%d\n",i,j,y,i+j+y);
i*=2;
}
voidmain()
{
intx;
for(x=1;x<+3;++x)
f(x);
}
541=10
1042=11
5.阅读下列程序,写出程序运行的输出结果。
#include
voidmain()
{chara[20]={"1A2B3C"},b[20],*p1,*p2;
p1=a,p2=b;