C语言程序设计模拟试题2附答案newWord文档格式.docx
《C语言程序设计模拟试题2附答案newWord文档格式.docx》由会员分享,可在线阅读,更多相关《C语言程序设计模拟试题2附答案newWord文档格式.docx(22页珍藏版)》请在冰豆网上搜索。
![C语言程序设计模拟试题2附答案newWord文档格式.docx](https://file1.bdocx.com/fileroot1/2022-12/1/017aeaaa-9cc5-4c89-8f54-1f8e9da7ca18/017aeaaa-9cc5-4c89-8f54-1f8e9da7ca181.gif)
_k++_________;
d=(k*(k+1));
}while(k<
=n);
s);
5.执行下述程序的输出结果是_-3-40443_______。
#inclued<
inta[6],i;
for(i=0;
i<
6;
i++)
a[i]=9*(i-2+4*(i>
3))%5;
%3d"
a[i]);
\n"
);
6.执行下述程序时的输出结果是____6_____________。
inta[]={2,4,6,},*ptr=&
a[0],x=8,y,z;
for(y=0;
y<
3;
y++)
z=(*(ptr+y)<
x)*(ptr+y):
x;
z);
7.执行下述程序的输出结果是____60________。
inta[][2]={10,20,30,40,50,60},(*p)[2];
p=a;
*(*(p+2)+1));
8.执行以下程序的输出结果是___s=10______。
ints,i,sum();
for(i=1;
=10;
s=sum(i);
s=%d\n"
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;
r=x%2;
____*b++___=r;
x/=2;
}while(x);
11.以下程序中函数invert实现将数组内所有数组元素的值逆置。
比如,执行本程序将输出
10987654321
inta[10]={1,2,3,4,5,6,7,8,9,10},i,n=10;
invert(a,n-1);
10;
%3d”,a[i]);
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___________。
structstr
char*y;
}*m;
structstrgroup[3]={
"
Li"
Wang"
Sun"
m=group;
%.lf,%s\n"
m->
x,m->
14.下面的程序用来统计某文件文件中字符的个数。
FILE*fp;
longnum=0;
if((fp=fopen("
"
"
r"
))++)==NULL)
Can'
topenthisfile!
exit(0);
while(!
)
fgetc(fp);
num++;
num=%d\n"
num);
fclose(fp);
15.执行下述程序后,输出结果为___29______。
#defineFUN1(a,b)a+b
#defineFUN2(a,b)a-b
#defineCAL(a,b)a*b+a+3
CAL(FUN1(3,5),FUN2(4,5)));
二、单项选择题。
(每题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<
intx='
f'
;
%c\n"
'
a'
+(x-'
+1));
(A)g(B)h(C)i(D)j
4.设有程序
#include<
main()
{
inti,j;
for(i=0,j=1;
=j+1;
i+=2,j--)
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;
++k;
}while(k>
=10000);
(D)ints=36;
while(s);
--s;
6.假定a和b为int型变量,则执行下述语句组后,b的值为(D)。
a=1;
b=10;
b-=a;
A
a++;
}while(b--<
0);
(A)9(B)-2(C)-1(D)8
7.设有变量说明语句
inta=1,b=0;
则执行以下程序段的输出结果为(B)。
switch(a)
case1:
switch(b)
case0:
printf("
**0**"
break;
**1**"
case2:
**2**"
(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="
(D)INTa[]={0,12,3,4,5};
9.下述程序代码中有语法错误的行是(D)。
inti,ia[10],ib[10];
/*第1行*/
=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;
b;
%d,%d\n"
*p,**pp);
则输出结果是(D)。
(A)10,10(B)10,20(C)20,10(D)20,20
12.执行下述程序后的输出结果是(D)。
func(inta)
intb=0;
staticintc=3;
a=c++,b++;
return(a);
inta=2,i,k;
fori=0;
2;
k=func(a++);
k);
(A)3(B)0(C)5(D)4
13.执行下述程序的输出结果是(A)。
intaa[3][3]={{2},{4},{6}};
inti,*p=&
aa[0][0];
if(i==0)
aa[i][i+1]=*p+1;
else
++p;
%d"
*p);
(A)23(B)26(C)33(D)36
14.读下面的程序,正确的输出结果是(D)。
staticinta=50;
voidf1(inta)
%d,"
a+=10);
voidf2(void)
a+=3);
voidmain()
inta=10;
f1(a);
f2();
a);
(A)60,63,60(B)20,23,23(C)20,13,10(D)20,53,10
15.执行下述程序的输出结果是(A)。
intpower(intx,inty);
floata=,b=;
intp;
p=power((int)a,(int)b);
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)。
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;
%d%d\n"
cp[2].re,cp[2].im);
}
(A)711(B)612(C)99(D)126
18.执行下述程序的输出结果是(A)。
union
chari[2];
}*s,a;
s=&
s->
i[0]=0x39;
i[1]=0x38;
%x\n"
s->
k);
(A)cccc3839(B)3938(C)380039(D)390038
19.有以下程序,则结果为B。
structabc
{inta,b,c;
{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)。
#defineN2
#defineMN+1
#defineNUM(M+1)*M/2
inti;
=NUM;
(A)5(B)6(C)8(D)9
三、程序分析题(每题5分,共30分)
1.阅读程序,写出执行该程序的输出结果。
chars[]="
pressakey."
charch;
(ch=s[i])!
='
\0'
switch(ch)
case'
p'
:
k'
putchar(ch-32);
continue;
'
putchar('
*'
.'
!
'
default:
putchar(ch);
putchar('
\n'
Press*A*Key!
2.阅读程序,写出执行该程序的输出结果。
#defineN5
inta[N][N];
N;
for(j=0;
j<
j++)
=j)
a[i][j]=1;
a[i][j]=a[i][j-1]+1;
a[i][j]);
不输出任何结果
3.阅读程序,写出执行该程序的输出结果
intm[5],n[5],*px,*py,k;
px=m;
py=n;
for(k=1;
k<
4;
k++,px++,py++)
*px=k;
*py=2*k;
%d,%d"
m[k-1],n[k-1]);
px=&
m[1];
py=&
n[1];
k++)
*px+=k;
*py*=k;
%d,%d,"
*px++,*py++);
1,22,43,6
3,4,4,8,
4.阅读程序,写出执行该程序的输出结果。
voidf(inty)
staticinti=5;
intj=3;
j++;
%d%d%d=%d\n"
i,j,y,i+j+y);
i*=2;
intx;
for(x=1;
x<
+3;
++x)
f(x);
541=10
1042=11
5.阅读下列程序,写出程序运行的输出结果。
{chara[20]={"
1A2B3C"
},b[20],*p1,*p2;
p1=a,p2=b;
do{if(!
(*p1>
0'
&
*p1<
9'
))
{*p2=*p1;
p2++;
*p2=*p1;
p1++,p2++;
}while(*p1='
%s\n"
b);
1
6.阅读下列程序,写出程序的主要功能。
intn,I;
\npleaseinputanumber:
&
n);
%d="
n);
for(i=2,i<
=n,i++)
while(n!
=i)
{
if(n%i==0)
%d*"
i);
n=n/i;
将整数n表示为其所有质因子乘积
四、程序设计题(每小题10分,共20分)
1、编写.程序求1、2、3、4个数字能组成多少个互不相同且无重复数字的三位数都是多少。
#include<
Voidmain()
Inti,j,k,m=0;
For(i=1;
=4;
For(j=1;
For(k=1;
While(i!
=j&
j!
=k&
k!
=i)
Printf(“%5d”,100*i+10*j+k);
m++;
Printf(“\n”);
Printf(“所有不重复的三位数个数为:
%d”,m);
2、有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少
Intfanio(intn)
If(n==1)
Return1;
Elseif(n==2)
Return1;
Else
Returnfanio(n-1)+fanio(n-2);
Voidmian()
Inti,n;
Printf(“请输入月份上限\n”);
Scanf(“%d”,&
Printf(“所有月份的兔子总数\n”);
=n;
Printf(“第%d月的兔子总数为:
%d”,i,fanio(i));
试卷二参考答案
1.
2.17
3.x!
=0&
x<
100&
x>
4.k++
5.-3-40443
6.6
7.60
8.s=10
9.int*z
10.*(b++)
11.t>
s
12.18
13.95,Li
14.!
feof(fp)
15.29
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、PressAKey!
2、无任何输出结果。
3、1,22,43,6
3,4,5,12,
4、541=10
1042=16
5、1
6、求一个正整数分解质因数。
四、程序设计题
1、
#include"
inti,j,k;
for(i=1;
5;
i++)/*以下为三重循环*/
for(j=1;
j++)
for(k=1;
k++)
if(i!
=k&
i!
=j&
j!
=k)/*确保i、j、k三位互不相同*/
%d,%d,%d\n"
i,j,k);
2、
longf1,f2;
intI;
f1=f2=1;
for(i=1;
i<
=20;
i++)
%ld%ld"
f1,f2);
if(i%2==0)
/*控制输出,每行四个*/
f1=f1+f2;
/*前两个月加起来赋值给第三个月*/
f2=f1+f2;
/*前两个月加起来赋值给第三个月*/