C复习题阅读程序题.docx
《C复习题阅读程序题.docx》由会员分享,可在线阅读,更多相关《C复习题阅读程序题.docx(27页珍藏版)》请在冰点文库上搜索。
C复习题阅读程序题
1、以下程序执行时输出结果为2.0,3.5
2.00,3.50。
#include
#definep3.5
intmin(intx,inty)
{
2→X
3→y
intz;
if(xz=x;
else
z=y;
2→x
returnz;
}
voidmain()
{
intix=2.5;
doubledz;
floatfx=2.5,fy=3,fz;
fz=min(fx,fy);
dz=p*(float)(ix/2);
printf("\n%.2f,%.2f",fz,dz);
}
2、以下程序运行后输出结果是Yellow
。
enumcolor{BLACK,YELLOW,BLUE,GREEN,WHITE};
main()
{
char*colorname[]={“Black”,“Yellow”,
“Blue”,“Green”,“White”};
enumcolorc1=GREEN,c2=BLUE;
printf(“%s”,colorname[c1-c2]);
}
3、以下程序运行后输出结果的第一行是112
,第二行是358
。
intf(intn)
{
staticintf1,f2,f;
if(n==0)returnf1=1;
if(n==1)returnf2=1;
f=f1+f2;
f1=f2;
f2=f;
returnf;
}
main()
{
inti;
for(i=0;i<6;i++){
if(i%3==0)printf("\n");
printf(“%d”,f(i));
}
}
4、以下程序运行后输出结果的第一行是1010
,第二行是22
。
voidchange(intx,intm)
{staticcharch[]={'0','1','2','3','4','5','6','7','8','9'};
inti=0,r;
charb[80];
while(x)
{r=x%m;x/=m;
b[i++]=ch[r];
}
for(--i;i>=0;i--)
printf("%c",b[i]);
}
main()
{inta,b;
change(10,2);
printf("\n");
change(10,4);
}
5、以下程序运行后输出结果的第一行是1,2,3,
,第二行是0,4,5,000
第三行是0,0,0,004。
main()
{
intm,n,x[3][3]={0},k=1;
for(m=0;m<3;m++)
for(n=0;n<3;n++)
{
if(m%2)break;
if(m>n)continue;
x[m][n]=k++;
}
for(m=0;m<3;m++){
for(n=0;n<3;n++)pprintf("%d,",x[m][n]);
printf("\n");
}
}
6、以下程序运行时输出b[2]的值是6
b[4]的值是15
。
#include
voidsum(int*pa,int*pb,intn)
{inti;
if(n==1)*pb=*pa;
else
{for(i=0;i*(pb+n-1)+=*(pa+i);
sum(pa,pb,n-1);
}
}
main()
{inta[5]={1,2,3,4,5};
intb[5]={0},i;
sum(a,b,5);
printf("%d,%d",b[2],b[4]);
}
7、以下程序运行后输出结果的第一行是ABCD
,第二行是DCBA,第三行是DCBADBAC。
#include
structnd{
charname[2];
intage;
structnd*next;
}a[4]={{"A",19},{"B",21},{"C",18},{"D",23}},*hd;
main()
{inti,j,k;
tructnd*p1,*p2,*p3;
hd=&a[3];
for(i=3;i>0;i--)
a[i].next=&a[i-1];
a[i].next=NULL;
for(i=0;i<4;i++)
printf("%s",a[i].name);
printf("\n");
p1=p3=hd;
while(p1!
=NULL)
{printf("%s",p1->name);
p3=p1;p1=p1->next;
}
printf("\n");
p1=hd;p2=p1->next;
p1->next=p2->next;
p3->next=p2;
p2->next=NULL;
p1=hd;
while(p1!
=NULL){
printf("%s",
p1->name);
p1=p1->next;
}
}
8、下列程序运行后的输出是 5
。
intfun(intfirst,intsecond)
{
returnfirst++*second++;
}
main()
{
intp=1,r;
r=p+++fun(p++,p++);
printf("%d\n“,r);
}
9、若下列程序段中的变量a、z、和p分别存储在主存FFD2H、FFD4H、和FFD8H处,则执行表达式*p++->y后,变量p的值为:
10FFD8H
。
main()
{
inta=4;
struct{
intx,*y;
}z,*p=&z;
z·x=10;
z·y=&a;
……
}
10、以下程序运行后输出结果是3
。
#include
intf(intx,inty)
{if(xreturnx,y;
else
returny,x;
}
main()
{
printf("%d",f(2,3));
}
11、以下程序运行后输出结果的第一行是2341
第二行是0
。
#include
voidf(int*a,intn,inttimes)
{inti,t=a[0];
for(i=0;ia[n-1]=t;times++;
}
main()
{inta[5]={1,2,3,4},i;
f(a,4,a[4]);
for(i=0;i<4;i++)printf("%d",a[i]);
printf("\n%d",a[4]);
}
12、以下程序运行后输出结果的第一行是6
第二行是15
。
#include
intf()
{inti,s=0;
for(i=1;i<=3;i++)
{staticinti=1;
s=s+i;i++;
}
returns;
}
main()
{inti;
for(i=0;i<2;i++)
printf("%d\n",f());
}
13、以下程序运行后输出结果的第一行是2
第二行是12
。
#include
intf(intn,intx)
{if(n==1)
returnx;
elsereturnf(n-1,x+2)+x;
}
main()
{
printf("%d\n",f(1,2));printf("%d",f(3,2));
}
14、以下程序运行后输出结果的第一行是149
,
第二行是238
,
第三行是567
。
#include
intf(int(*a)[5],intm,intn)
{inti,j,k;
a[0][0]=m;
for(k=1;k{i=k;j=0;
a[i][j]=++m;
while(j
while(i>0)a[--i][j]=++m;
}
}
main()
{inti,j,x[5][5]={0};
f(x,1,3);
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
printf("%d",x[i][j]);
printf("\n");
}
}
15、以下程序运行后输出结果的第一行是C
第二行是this,VC,C
。
#include
#include
voidss(chara[][10],int*m,charb[][10],int*n)
{inti,j,k;
for(i=0;i<*m;i++){
for(j=0;j<*n;j++)
if(strcmp(a[i],b[j])==0){
for(k=i;k<*m-1;k++)
strcpy(a[k],a[k+1]);
*m=*m-1;i--;break;}
}
for(i=0;i<*m;i++)
strcpy(b[i+*n],a[i]);
*n=*n+*m;
}
main()
{chara[][10]={"this","C"};
charb[10][10]={"this","VC"};
inti,m=2,n=2;
ss(a,&m,b,&n);
for(i=0;iprintf("%s",a[i]);
printf("\n");
for(i=0;iprintf("%s",b[i]);
}
16、下列程序运行后的输出是 9
。
main()
{
union{
inti[2];
longk;
charc[4];
}r={071,070},*s=&r;
printf(“%c”,s->c[0]);
}
17、下列程序运行后的输出是 10,20
。
voidswap(int*x,int*y)
{
inttemp;
temp=*x;
*x=*y;
*y=temp;
}
voidSWAP(intx,inty)
{
swap(&x,&y);
}
main()
{
inta=10,b=20;
SWAP(a,b);
printf(“%d,%d\n”,a,b);
}
18、下列程序运行后的输出是 14
。
main()
{
intf1(int),f2(int)sum(int(*f)(int),int,int);
printf(“%d\n”,sum(f1,1,2)+sum(f2,1,2));
}
intsum(int(*f)(int),intm,intn)
{
intk,sum=0;
for(k=m;k<=n;k++)
sum+=(*f)(k)*(*f)(k);
returnsum;
}
intf1(intx)
{
returnx+1;
}
intf2(intx)
{
returnx-1;
}
19、执行以下程序后,输出结果的第一行是77
第二行是30
最后一行是101
intmain()
{intx=30;
{
intx=77;
printf(“%d\n”,x);
}
printf(“%d\n”,x);
while(x++<33){
intx=100;
x++;
printf(“%d\n”,x);
}
}
20、运行以下程序后,输出结果的第一行是her
第二行是teac
第三行是the
。
#include
#include
#include
structnode{
charinfo[5];
structnode*link;
};
main()
{structnode*create(char*);
voidprint(structnode*);
structnode*head=NULL;
charc[]=“theteacher”;
head=create(c);
print(head);
}
structnode*create(char*s)
{intk;
structnode*h,*p;
h=NULL;
while(*s){
k=0;
p=(structnode*)malloc(sizeof(structnode));
while(k<4&&*s)
p->info[k++]=*s++;
p->info[k]=‘\0’;
p->link=h;
h=p;
}
returnh;
}
voidprint(structnode*head)
{
structnode*p=head;
while(p!
=NULL){
puts(p->info);
p=p->link;
}
}
21、运行以下程序后,输出结果的第一行是781
第二行是692
第三行是543
main()
{inti=0,j,k=1,n=3,arr[20][20];
while(ifor(j=i;jfor(j=n-i-2;j>=i;j--)arr[n-i-1][j]=k++;
for(j=n-i-2;j>=i;j--)arr[j][i]=k++;
for(j=i+1;j<=n-i-2;j++)arr[i][j]=k++;
i++;}
if(n%/2)arr[i][i]=k;
for(i=0;ifor(j=0;iprintf(“\n”);
}
}
22、运行以下程序后,输出结果的第一行是1010
第二行是12
。
voidchange(intx,intm)
{
ch[]={‘0’,’1’,’2’,’3’,’4’,’5’,’6’,’7’,’8’,’9’},b[80];
inti=0;r;
while(x){
r=x%m;x/=m;
b[i++]=ch[r];
}
for(--i;i>=0;i--)
printf(“%c”,b[i]);
}
main()
{inta,b;
change(10,2);
printf(“\n”);
change(10,8);
}
23、下面程序的输出结果是3,4,2,4,
#include
inta[][2]={1,2,3,4};
voidmain()
{int(*p)[2],i;
p=a;
printf(“%d,%d,”,p[1][0],(*(p+1))[1]);
for(i=0;i<2;i++)printf(“%d,”,*(*(p+i)+1));
}
24、下面程序的输出结果是1
#include
intf(intx,inty)
{return(y-x);}
main()
{inta=5,b=6,c=2;
int(*g)(int,int)=f;
c=(*g)(a,b);
printf(“%d\n”,c);
}
25、下面程序的输出结果是abcd,bcd
efgh,mnpq
#include
#defineT“%s,%s\n”
voidmain()
{char*x[]={“abcd”,”efgh”,”mnpq”,”rstu”};
char**y;
y=x;
++y;
printf(T,*x,*x+1);
printf(T,*y,y[1]);
}
26、下面程序运行的正确结果是3
#include
#defineN5
intfun(char*s,chara,intn)
{intj;
*s=a;
j=n;
while(*s
returnj;
}
voidmain()
{charc[N+1];
intb;
for(b=1;b<=N;b++)*(c+b)=’A’+b+1;
printf(“%d\n”,fun(c,’E’,N));
}
27、下面程序运行的正确结果是1,y
structtree
{intx;charc;
}t;
func(structtreet)
{t.x=10;t.c=‘x’;
}
voidmain()
{t.x=1;
t.c=‘y’;
func(t);
printf(“%d,%c\n”,t.x,t,c);
}
28、下面程序运行的正确结果是MNQ
structstr1
{charc[5];char*s;};
voidmain()
{structstr1s1[2]={“ABCD”,“EFGH”,“IJK”,“LMN”};
structstr2
{structstr1sr;intd;
}s2={“OPQ”,“RST”,32767};
structstr1*p[2];
p[0]=&s1[0];p[1]=&s1[1];
printf(“%s”,++p[1]->s);
printf(“%c”,s2.sr.c[2]);
}
29、以下程序运行时输出结果为3。
#include
#defineY2
#defineM(y)((y)+(y)/Y)
main()
{printf("%d",M(Y));
}
30、以下程序运行时输出结果为126。
#include
intfun(intn)
{staticintj=1;
j*=n++;
returnj;
}
voidmain(void)
{intk;
for(k=1;k<4;k++)
printf("%4d",fun(k));
}
31、以下程序运行时输出结果是2468.
#include
intf(intn)
{if(n<1)return;
f(n-2);
printf("%d",n);
}
main()
{f(8);}
32、以下程序运行时输出结果第一行是6,5第二行是5,6。
#include
#definef(x,y,z)z=x,x=y,y=z
voidg(intx,inty)
{intz;z=x,x=y,y=z;}
main()
{
inta=6,b=5,c;
g(a,b);
printf("%d,%d",a,b);
a=6;b=5;
f(a,b,c);
printf("\n%d,%d",a,b);
}
33、以下程序运行时输出结果第一行是231第二行是123第三行是312。
#include
voidexchang(intx[][3],intn,intm)
{inti,k;
for(i=0;i<3;i++)
{k=x[n][i];x[n][i]=x[m][i];x[m][i]=k;}
}
main()
{inta[3][3]={3,1,2,1,2,3,2,3,1},*p[3],i,j;
for(i=0;i<3;i++)p[i]=a[i];
for(i=0;i<2;i++)
for(j=0;j<2-i;j++)
if(p[j][1]
for(i=0;i<3;i++)
{ for(j=0;j<3;j++)printf("%3d",a[i][j]);
printf("\n");
}
}
34、执行以下程序段后,输出的第一行是_12345_,输出的第二行是__1817__
#include
voidfunc(intm,intn)
{if(m else{func(m/n,n);printf("%d",m%n);}
}
voidmain()
{void(*p)(int,int);
p=func;
(*p)(12345,10);putchar('\n');
(*p)(377,20);putchar('\n');
}
35、执行以下程序段后,在main函数返回之前,全局变量x的值是___,main函数中局部变量y的值是__.
#include
intx;
intfunc(intn)
{staticcharm=1;
m=m*8;x+=m*n--;
return(--n);
}
voidmain()
{inti,y;