3.3 程序分析题
1.阅读程序,写出运行结果。
main()
{ int a=10, b=4,C=3;
if(a<b)a=b;
if(a<C) a=C;
printf(“%d,%d,%d\n”, a,b,c);
}
「解」程序中,第一个if语句if(a<B)A=B,当A<B时,让B值置A,该语句确保A的值不比B小。同样第二个IF语句IF(A<C)A=C,当A<C时,让C值置A,使A的值不比C小。实际;情况是A本来就比B和C都大,所以A的值没有变,程序输出A、B和 C的原来值:10,4,3.
2.阅读下列程序,写出程序的输出结果。
main()
{ int x=100, a=10, b=20, Ok1=5,Ok2=0;
if(a<b)if(b!=15)if(!Ok1) x=1;
else if(ok2) x=10;
else x=-l;
printf(“%d\n”,x);
}
「解」程序预置变量x的值为100,a的值为10,b的值为20,ok1为5,Ok2为0.
程序中给出的if语句可以写成更结构化的形式如下:
if(a<b) {
if(b!=15){
if(!Ok1) x=1;
else{
if(Ok2) x=10;
else x=-l;
}
}
}
由于条件a<b成立,并且条件b!=15也成立,而ok1不等于0,执行else后的语句。又因ok2等于0,执行else后的语句赋-1给x.所以程序输出一l.
3.阅读下列程序,写出程序的输出结果。
main()
{ int y=9;
for(; y>0; y——)
if(y%3==0){ printf(“%d”,——y);continue;}
}
「解」循环前,变量y的值为9,其中的循环语句在y大于0情况下循环,每次循环后y的值减1.循环体是当y能被3整除时输出表达式——y,输出的是减1后的y值。这样,第一次循环因y为9,能被3整除,输出8,y也变成8.又经两次循环,y的值变为6,又让y减1变成5,并输出5;又经两次循环,y的值变成3,让y减至变成2,输出2;再经两次循环后,y的值变成0,结束循环。所以程序输出852.
3.4 程序设计题
1.编一个程序,输入华氏温度(F),按下列公式计算并输出对应的摄氏温度(C):C= 5( F-32)/9
「解」利用公式:C=5(F-32)/9,输入F氏温度,计算并输出对应的C氏温度,程序要引入两个变量,分别用于存储F氏温度和C氏温度,计算时应采用浮点型,包括公式中的常数也应写成浮点数,不能采用整型和把常数写成整数。因采用整型编写,公式中的除运算变成整除,会得出与实际要求不一致的结果。程序如下:
#include
main()
{ float f,c;/*变量定义*/
printf(“输入F氏温度”);
scanf(“%f,&f);
c= 5.0*(f-32.0)/9.0;
printf(“对应的C氏温度%6.2f\n”,c);
}
2.编一个程序,输入一个整数,输出其符号(若≥0,输出1;若<0输出-1)。
「解」程序可用if语句判断输入数的符号,并控制输出1或-l.程序如下:
# include
main()
{ int c;/*变量定义*/
printf(“输入一个整数”);
scanf(“ %d”, &c);
if(C>=0) printf(“1\n”);
else printf(“-l\n”);
}
3.编一个程序,输入X的值,按下列公式计算并输出y的值。
X(X≤l)
y= {2x-l(l<x<10)
3X-11(10≤X)
「解」输入x,按公式计算y.这可用一个嵌套的if语句分段判断并计算出y的值。然后输出y值。程序如下:
# include<stdio.h>
main()
{ int x,y;/*变量定义*/
printf(“输入一个整数”);
scanf(“%d”,&x);
if( x<=l) y=X;
else if(x<10)y=2*x-l;
else y=3*X-11;
printf(“y=%d\ n”, y);
}