C语言程序设计练习三.docx
《C语言程序设计练习三.docx》由会员分享,可在线阅读,更多相关《C语言程序设计练习三.docx(26页珍藏版)》请在冰豆网上搜索。
![C语言程序设计练习三.docx](https://file1.bdocx.com/fileroot1/2023-2/24/360bae8c-9fcb-4066-851e-080a5c61dc3d/360bae8c-9fcb-4066-851e-080a5c61dc3d1.gif)
C语言程序设计练习三
《C语言程序设计》练习三
三、阅读分析题
1.请阅读分析下面程序,然后写出运行结果。
#include
voidmain()
{
intx=8,y=-5;
printf(〃x=%d,y=%d\n〃,x,y);
x=x+y;y=x-y;x=x-y;
printf(〃x=%d,y=%d\n〃,x,y);
}
2.请阅读分析下面程序,然后写出运行结果。
#include
voidmain()
{
intx=156,a,b,c;
if(x>100)
{
a=x/100;
x=x%100;
}
if(x>10)
{
b=x/10;
c=x%10;
}
printf(〃%3d%3d%3d%3d〃,a,b,c,a*b*c);
}
3.请阅读分析下面程序,然后写出运行结果。
#include
voidmain()
{
intk=4,i;
for(i=0;i<4;i++)
{
switch(k)
{
case4:
printf(〃#〃);
case3:
printf(〃*〃);
default:
printf(〃\n〃);
break;
case2:
printf(〃$〃);
case1:
printf(〃@〃);
}
k--;
}
}
4.阅读下面程序,写出运行结果(已知A的ASCII码为65,a的ASCII码为97)。
#include
voidmain()
{intk=100;charm;
m=k;putchar(m);
printf(″,%d,%c,%o,″k,m-32,m);
}
5.阅读下面程序,并回答问题:
#include
voidmain()
{intx,y,z,c;
scanf(″%d%d%d″,&x,&y,&z);
if(xif(xif(xprintf(″%d,%d,%d″,x,y,z);
}
(1)若程序运行时,输入3、2和5,则输出结果是什么?
(2)写出程序所实现的功能。
6.阅读下面程序,并回答问题:
#include
voidmain()
{intm,n;
m=65;
n=14;
while(m!
=n)
{while(m>n)m-=n;
while(n>m)n-=m;
}
printf(″m=%d\n″,m);
}
(1)程序输出结果是多少?
(2)外循环执行完一次时,m和n的值分别是多少?
(3)将while(n>m)n-=m;语句删除后,程序运行情况如何?
7.阅读下面程序,写出运行结果。
#include
voidmain()
{inta=789,x,y,z;
x=a/100;
y=a/10-10*x;
z=a-10*y-100*x
printf(″%d,%o,%x,%d″,x,y,z,100*z+10*y+x);
}
8.阅读下面程序,并回答问题:
#include
voidmain()
{inta,b,x,y;
scanf(″%d,%d″,&a,&b);
x=a*a+b*b
if(x>100)
{y=x/100;printf(″%d″,y);}
elseprintf(″%d″,a+b);
}
(1)若程序运行时,输入6和9,输出结果是什么?
(2)说明程序的功能。
9.阅读下面程序,并回答问题:
#include
voidmain()
{intu,v,a,b,t,r;
u=24;v=16;
if(u>v){t=u;u=v;v=t;}
a=u;b=v;
while((r=b%a)!
=0)
{b=a;a=r;}
printf(″a=%d\n″,a);
}
(1)程序输出结果是什么?
(2)该程序完成什么功能?
(3)若将while循环替换为do-while循环,请写出相应的程序段。
10.从键盘输入字符A时,写出下面程序的运行结果。
(注:
字符A的ASCII码是65)
#include
voidmain()
{
intk;
k=getchar();putchar(k);
printf(″,%d,%x,%c″,k,k,k+32);
}
11.阅读下面程序,写出运行结果。
#include
voidmain()
{intx,sum=0;
loop1:
scanf(″%d″,&x);
if(x!
=8)
{if(x%2==0)
{sum+=x;
printf(″sum=%d\n″,sum);
}
gotoloopl;
}
sum-=x;
printf(″sum=%d\n″,sum);
}
当程序执行时输入数据12345678↙
,写出程序运行结果。
12.阅读下面程序,写出运行结果。
#include
voidmain()
{
inta[3][3],i,j;
for(i=0;i<3,i++)
for(j=0,j<3;j++)
a[i][j]=i+j
for(i=0;i<3;i++)
{
for(j=0;j<=i;j++)
printf(″%2d″,a[i][j]);
printf(″\n″);
}
}
13.请阅读分析下列程序,然后写出运行结果。
#include
voidmain()
{
inta=0,b=1;
printf("a=%d,b=%d\n",a,b);
a+=b;b+=a;
printf("a=%d,b=%d\n",a,b);
}
14.若分别输入0和5时,请阅读分析下列程序,然后分别写出两种输入情况下程序的运行结
果。
#include
voidmain()
{
intx,y;
scanf("%d",&x);
if(x>2&&x<=10)
y=x*(x+2);
elseif(x>-1&&x<=2)
y=2*x;
elseif(x<-1)y=x-1;
if(y!
=-1)
printf("%d,y);
else
printf("error");
}
15.请阅读分析下列程序,然后写出程序的循环次数和运行结果。
#include
voidmain()
{
inti;
for(i=1;i<6;i++)
{
if(i%2)
{
printf("@");continue;
}
printf("*");
}
printf("\n");
}
16.阅读下面程序并写出运行结果。
#include
voidmain()
{inta=47,x,y,z,w;
x=a/2;
y=a%2;
z=a++;
w=++a;
printf(″%d,%d,%d,%d″,x,y,z,w);
}
17.阅读分析下面程序,请说明程序的功能;然后写出当键盘输入14时,程序的运行结果。
#include
voidmain()
{intx;
scanf(″%d″,&x);
if(x%5==0&&x%7==0)
printf(″yes″);
else
printf(″no″);
}
18.阅读分析下面程序后,写出程序的运行结果。
#include
voidmain()
{
inta=978,x,y,z,i,j,w;
x=a/100;
y=(a-100
x)/10;
z=a-10
y-100
x;
i=y>z?
z:
y;
j=y<=z?
z:
y;
w=100
x+10
i+j;
printf(″%d,%d,%d,%d\n″,x,y,z,w);
}
19.阅读分析下面程序后,写出程序的运行结果。
#include
voidmain()
{
intn,m;
for(n=1;n<=5;n++)
{
for(m=1;m<=4;m++)
printf(″%4d″,m
n);
printf(″\n″);
}
}
20.阅读分析下面程序后,写出程序的运行结果。
#include
voidmain()
{
intarr[10],i,k=0;
for(i=0;i<10;i++)
arr[i]=i;
for(i=1;i<=4;i++)
{
k+=arr[i]+i;
printf(″%5d″,k);
}
}
21.写出以下程序的功能。
如果输入14,写出程序的输出结果。
#include
voidmain()
{intx;
scanf(″%d″,&x);
if(x%5==0&&x%7==0)
printf(″yes″);
else
printf(″no″);
}
22.阅读下面的程序并回答问题
#include
voidmain()
{chara[20]=″1234567890″;
inti;
i=8;
printf(″%s\n″,&a[i-3]);
}
(1)数组中a[10]号元素中存储的是什么字符?
(2)请写出程序的运行结果。
23.写出下面程序的运行结果。
#include
voidmain()
{intx=1987,a,b,c,y;
a=x/100;
b=x%100/10;
c=x%100%10;
y=100*c+l0*b+a;
printf(″c=%d,b=%o,a=%x,y=%d″,c,b,a,y);
}
24.分析下列两个程序的区别,并写出它们的运行结果。
voidmain()voidmain()
{{
inty=0,s,k;inty=0,s,k;
for(k=0;k<6;k++)for(k=0;k<6;k++){
s=k*k;s=k*k;
y+=s;y+=s;
}
printf(″y=%d\n″,y);printf(″y=%d\n″,y);
}}
运行结果:
25.请阅读分析下面程序,然后写出运行结果。
#include
voidmain()
{
inti,j,*p[4],a[12]={1,2,3,4,5,6,7,8,9,10,11,12};
p[0]=&a[0];
p[1]=&a[3];
p[2]=&a[6];
p[3]=&a[9];
for(i=0;i<4;i++)
{
for(j=0,j<3;j++)
printf(〃%4d〃,p[i][j]);
printf(〃\n〃);
}
}
26.阅读下面程序,写出运行结果。
#include
voidmain()
{char*str[]={″Pascal″,″CLanguage″,″Dbase″,″Cobol″};
intk;
for(k=0;k<4;k++)
printf(″%s\n″,str[k]);
}
27.阅读分析下面程序并写出运行结果。
#include
voidmain()
{char*a[]={″Pascal″,″CLanguage″,″dBase″,″Cobol″};
intj;
for(j=3;j>=0;j--)
printf(″%s\n″,a[j]);
}
28.阅读下面程序,写出运行结果。
#include
#include
voidmain()
{char*p1,*p2,srt[50]=″abc″,str1[50];
p1=″abc″;p2=″abc″;
puts(str);
strcpy(str1,p1);
p1=str1;
printf(″%s\n″,strcat(p1,p2));
strcpy(str+1,p1);
printf(″%s\n″,str);
}
29.请阅读分析下列程序,然后写出程序的运行结果。
#include
voidmain()
{
inta[]={1,2,3,4,5,6},*p;
p=a;
p++;
*(p+3)+=2;
printf("%d\n",*p);
printf("%d\n",*(p+3));
}
30.阅读下面程序,并回答问题:
#include
gcd(intx,inty)
{inttemp;
while(y){temp=x%y;x=y;y=temp;}
returnx;
}
voidmain()
{inta,b,y;
scanf(″%d,%d″,&a,&b);
y=gcd(a,b);
printf(″最大公约数是:
%d″,y);
}
(1)gcd函数的返回值类型是什么?
(2)若将returnx写成returny会得到什么样的结果?
31.阅读下面程序,写出运行结果。
#include
inta=5,b=5;
chang1()
{inta=4;
printf(″a1=%d,b1=%d\n″,a,b++);
}
chang2(inta,intb)
{a++;b--;
}
voidmain()
{chang1();a++,b++;chang2(a,b);
printf(″a2=%d,b2=%d\n″,a,b);
}
32.阅读分析下面程序后,写出程序的运行结果。
#include
intfun(intx)
{
intp;
if(x==0||x==1)
return(3);
p=x-fun(x-2);
printf(″%5d″,p);
return(p);
}
voidmain()
{
fun(9);
}
33.阅读下面程序,分析cat函数的功能并写出程序的运行结果。
#include
voidcat(char
s,char
t)
{
while(
s)s++;
while((
s++=
t++)!
=′\0′);
}
voidmain()
{
charsl[80]=″computer″,s2[80]=″Pentium_″;
cat(s2,s1);
printf(″%s\n″,s2);
}
(1)cat函数的功能:
(2)运行结果:
34.阅读下面程序,写出运行结果。
#include
longfactor(intm)
{
longintfc;
if(m==0¦¦m==1)
fc=1;
else
fc=factor(m-1)*m;
return(fc);
}
voidmain()
{
intn;
longintfac;
for(n=1;n<5;n++)
{
fac=factor(n);
printf(″%Id\n″,fac);
}
}
35.写出下面程序的运行结果。
#include
voidmain()
{fun();
fun();
}
fun()
{inta[3]={0,1,2},b=10;inti;
if(b==10){
for(i=0;i<3;i++)
a[i]+=a[i];
for(i=0;i<3;i++)
printf(″%d,″,a[i]);
printf(″b=%d\n″,b);b++;
}
else
{for(i=0;i<3;i++)
a[i]*=a[i];
for(i=0;i<3;i++)
printf(″%d″,a[i]);
printf(″b=%d\n″,b);
}
}
36.阅读下面程序,写出运行结果。
#include
voidfl(chara[],charb[])
{
inti;
for(i=0;a[i];i++)
b[i]=a[i];
b[i]=´\0´;
}
voidf2(char*c,char*t)
{
while(*c++=*t++);
}
voidmain()
{
chara[20]=″basic″,b[20]=″fortran″,c[20]=″pascal″;
char*p=b,*q=c;
fl(b,a);
printf(″%s\n″,b);
f2(p,q);
printf(″%s\n″,b);
}
37.阅读下面程序并写出运行结果。
#include
check(intn,intk)
{intm;
do{
m=n%10;n=n/10;
}while(k--);
return(m);
}
voidmain()
{intj,y=2345;
for(j=1;j<4;j++)
printf(″j=%d,numberis%d\n″,j,check(y,j));
}
38.写出下面程序的功能以及程序的运行结果。
#include
swap(int.*p1,int*p2)
{intp;p=*pl;*p1=*p2;*p2=p;}
voidmain()
{inta=5,b=7,*ptrl,*ptr2;
ptrl=&a;ptr2=&b;
swap(ptrl,ptr2);
printf(″*ptrl=%d,*ptr2=%d\n″,*ptrl,*ptr2);
printf(″a=%d,b=%d\n″,a,b);
}
39.请阅读分析下面程序,然后写出运行结果。
#include
f()
{
inta=3;
staticintb=4;
a=a+1;
b=b+1;
printf(〃a=%d,b=%d\n〃,a,b);
}
voidmain()
{
f();
f();
f();
}
40.请阅读分析下列程序,然后写出程序的运行结果。
#include
voidfun();
voidmain()
{
fun();
fun();
}
voidfun()
{
staticinta[3]={0,1,2},b=10;
inti;
if(b==10)
{
for(i=0;i<3;i++)
a[i]+=a[i];
for(i=0;i<3;i++)
printf("%d,",a[i]);
printf("b=%d\n",b);
b++;
}
else
{
for(i=0;i<3;i++)
a[i]*=a[i];
for(i=0;i<3;i++)
printf("%d,"a[i]);
printf("b=%d\n",b);
}
}
41.阅读下面程序并写出运行结果。
#include
voidmain()
{staticinta[]={5,3,7,2,1,5,4,10};
ints=0,k;
for(k=0;k<8;k+=3)
{s+=a[k];
printf(″a[%d]=%d,s=%d\n″,k,a[k],s);
}
}
42.请阅读分析下面程序,然后写出运行结果。
#include
#include
structstu
{
charname[20];
intchinese;
intmath;
structstu*next;
};
voidmain()
{
char*str[]={〃Zhang〃,〃Wang〃,〃Liu〃};
intaver,x[3][3]={{80,75,85},{60,56,73},{90,83,76}};
structstus;
strcpy(s.name,str[1]);
s.chinese=x[1][0];
s.math=x[1][1];
aver=s.chinese+s.math;
printf(〃%s\t%d\t%d\t%6.2f\n〃,s.name,s.chinese,s.math.aver/2.0);
}
43.阅读下面程序段,写出输出结果。
#include
structnum
{floatf1;
intj;
}u={5.6,8},*p=&u;
voidmain()
{printf(″%.2f,%d\n″,u.f1,u.j);
printf(″%.2f,%d\n″,(*p).f1,p->j);
}
44.阅读下面程序段:
structnumber
{
intu[2];
}v={11,15},*p=&v;
intx;
请分析下面语句的含义:
x=(*p),u[0]>p->u[1]?
(*p).u[0]:
p->u[1];
45.阅读下面程序并说明语句:
x=p->d[0]>p->d[1]?
p->d[0]:
p->d[1];的含义,然后写出程序的运行结果。
#include
structnumber
{intd[2];
}n={12,8},*p=&n;
voidmain()
{intx;
x=p->d[